python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / tools / security / flare-floss / default.nix
blob6416adec0ece28ac93396961d2276db97f066210
1 { lib
2 , python3
3 , fetchFromGitHub
4 }:
5 let
6   py = python3.override {
7     packageOverrides = final: prev: {
8       # required for networkx 2.5.1
9       decorator = prev.decorator.overridePythonAttrs (o: o // rec {
10         version = "4.4.2";
11         src = o.src.override {
12           inherit version;
13           sha256 = "sha256-46YvBSAXJEDKDcyCN0kxk4Ljd/N/FAoLme9F/suEv+c=";
14         };
15       });
17       # flare-floss requires this exact version (newer versions are incompatible)
18       networkx = prev.networkx.overridePythonAttrs (o: o // rec {
19         version = "2.5.1";
20         src = o.src.override {
21           inherit version;
22           sha256 = "sha256-EJzVhcrEEpf3EQPDxCrG73N58peI61TLdRvlpmO7I1o=";
23         };
24       });
25     };
26   };
28 py.pkgs.buildPythonPackage rec {
29   pname = "flare-floss";
30   version = "2.0.0";
32   src = fetchFromGitHub {
33     owner = "mandiant";
34     repo = "flare-floss";
35     rev = "v${version}";
36     fetchSubmodules = true; # for tests
37     sha256 = "sha256-V4OWYcISyRdjf8x93B6h2hJwRgmRmk32hr8TrgRDu8Q=";
38   };
40   postPatch = ''
41     substituteInPlace setup.py \
42       --replace "==" ">="
44     substituteInPlace floss/main.py \
45       --replace 'sigs_path = os.path.join(get_default_root(), "sigs")' 'sigs_path = "'"$out"'/share/flare-floss/sigs"'
46   '';
48   propagatedBuildInputs = with py.pkgs; [
49     halo
50     networkx
51     pydantic
52     tabulate
53     tqdm
54     viv-utils
55     vivisect
56   ] ++ viv-utils.optional-dependencies.flirt;
58   checkInputs = with py.pkgs; [
59     pytest-sugar
60     pytestCheckHook
61     pyyaml
62   ];
64   postInstall = ''
65     mkdir -p $out/share/flare-floss/
66     cp -r sigs $out/share/flare-floss/
67   '';
69   meta = with lib; {
70     description = "Automatically extract obfuscated strings from malware";
71     homepage = "https://github.com/mandiant/flare-floss";
72     license = licenses.asl20;
73     maintainers = teams.determinatesystems.members;
74   };