1{ lib
2, fetchFromGitLab
3, python3
4}:
5let
6 py = python3.override {
7 packageOverrides = self: super: {
8
9 cmd2 = super.cmd2.overridePythonAttrs (oldAttrs: rec {
10 version = "1.5.0";
11 src = oldAttrs.src.override {
12 inherit version;
13 sha256 = "0qiax309my534drk81lihq9ghngr96qnm40kbmgc9ay4fncqq6kh";
14 };
15 doCheck = false;
16 });
17 };
18 };
19in
20with py.pkgs;
21
22buildPythonApplication rec {
23 pname = "expliot";
24 version = "0.9.8";
25
26 src = fetchFromGitLab {
27 owner = "expliot_framework";
28 repo = pname;
29 rev = version;
30 hash = "sha256-7Cuj3YKKwDxP2KKueJR9ZO5Bduv+lw0Y87Rw4b0jbGY=";
31 };
32
33 propagatedBuildInputs = [
34 aiocoap
35 awsiotpythonsdk
36 bluepy
37 can
38 cmd2
39 cryptography
40 paho-mqtt
41 pyi2cflash
42 pymodbus
43 pynetdicom
44 pyparsing
45 pyserial
46 pyspiflash
47 upnpy
48 xmltodict
49 zeroconf
50 ];
51
52 postPatch = ''
53 # https://gitlab.com/expliot_framework/expliot/-/merge_requests/113
54 substituteInPlace setup.py \
55 --replace "pynetdicom>=1.5.1,<2" "pynetdicom>=2,<3" \
56 --replace "cryptography>=3.0,<4" "cryptography>=35,<40" \
57 --replace "python-can>=3.3.3,<4" "python-can>=3.3.3,<5" \
58 --replace "pyparsing>=2.4.7,<3" "pyparsing>=2.4.7,<4"
59 '';
60
61 # Project has no tests
62 doCheck = false;
63
64 pythonImportsCheck = [
65 "expliot"
66 ];
67
68 meta = with lib; {
69 description = "IoT security testing and exploitation framework";
70 longDescription = ''
71 EXPLIoT is a Framework for security testing and exploiting IoT
72 products and IoT infrastructure. It provides a set of plugins
73 (test cases) which are used to perform the assessment and can
74 be extended easily with new ones. The name EXPLIoT (pronounced
75 expl-aa-yo-tee) is a pun on the word exploit and explains the
76 purpose of the framework i.e. IoT exploitation.
77 '';
78 homepage = "https://expliot.readthedocs.io/";
79 license = with licenses; [ agpl3Plus ];
80 maintainers = with maintainers; [ fab ];
81 };
82}