1{
2 lib,
3 stdenv,
4 arc4,
5 asn1crypto,
6 asn1tools,
7 asyauth,
8 asysocks,
9 buildPythonPackage,
10 cargo,
11 colorama,
12 fetchFromGitHub,
13 iconv,
14 pillow,
15 pyperclip,
16 rustPlatform,
17 rustc,
18 setuptools,
19 setuptools-rust,
20 tqdm,
21 unicrypto,
22}:
23
24buildPythonPackage rec {
25 pname = "aardwolf";
26 version = "0.2.13";
27 pyproject = true;
28
29 src = fetchFromGitHub {
30 owner = "skelsec";
31 repo = "aardwolf";
32 tag = version;
33 hash = "sha256-8QXPvfVeT3qadxTvt/LQX3XM5tGj6SpfOhP/9xcZHW4=";
34 };
35
36 cargoDeps = rustPlatform.fetchCargoVendor {
37 inherit pname version src;
38 sourceRoot = "${src.name}/aardwolf/utils/rlers";
39 hash = "sha256-+2hENnrG35eRgQwtCCJUux9mYEkzD2astLgOqWHrH/M=";
40 };
41
42 cargoRoot = "aardwolf/utils/rlers";
43
44 build-system = [
45 setuptools
46 setuptools-rust
47 ];
48
49 nativeBuildInputs = [
50 rustPlatform.cargoSetupHook
51 cargo
52 rustc
53 ];
54
55 dependencies = [
56 arc4
57 asn1crypto
58 asn1tools
59 asyauth
60 asysocks
61 colorama
62 pillow
63 pyperclip
64 tqdm
65 unicrypto
66 ]
67 ++ lib.optionals (stdenv.hostPlatform.isDarwin) [ iconv ];
68
69 # Module doesn't have tests
70 doCheck = false;
71
72 pythonImportsCheck = [ "aardwolf" ];
73
74 meta = with lib; {
75 description = "Asynchronous RDP protocol implementation";
76 mainProgram = "ardpscan";
77 homepage = "https://github.com/skelsec/aardwolf";
78 changelog = "https://github.com/skelsec/aardwolf/releases/tag/${version}";
79 license = licenses.mit;
80 maintainers = with maintainers; [ fab ];
81 };
82}