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 hash = "sha256-cBqMmXXEq8ReXROQarFJ+Vn4EoaRBjRzI6P4msDoKmI=";
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 pythonRelaxDeps = [
34 "pymodbus"
35 "pynetdicom"
36 "cryptography"
37 "python-can"
38 "pyparsing"
39 "zeroconf"
40 ];
41
42 nativeBuildInputs = [
43 pythonRelaxDepsHook
44 ];
45
46 propagatedBuildInputs = [
47 aiocoap
48 awsiotpythonsdk
49 bluepy
50 can
51 cmd2
52 cryptography
53 paho-mqtt
54 pyi2cflash
55 pymodbus
56 pynetdicom
57 pyparsing
58 pyserial
59 pyspiflash
60 upnpy
61 xmltodict
62 zeroconf
63 ];
64
65 # Project has no tests
66 doCheck = false;
67
68 pythonImportsCheck = [
69 "expliot"
70 ];
71
72 meta = with lib; {
73 description = "IoT security testing and exploitation framework";
74 longDescription = ''
75 EXPLIoT is a Framework for security testing and exploiting IoT
76 products and IoT infrastructure. It provides a set of plugins
77 (test cases) which are used to perform the assessment and can
78 be extended easily with new ones. The name EXPLIoT (pronounced
79 expl-aa-yo-tee) is a pun on the word exploit and explains the
80 purpose of the framework i.e. IoT exploitation.
81 '';
82 homepage = "https://expliot.readthedocs.io/";
83 license = with licenses; [ agpl3Plus ];
84 maintainers = with maintainers; [ fab ];
85 };
86}