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