about summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
authorBen Siraphob <bensiraphob@gmail.com>2024-06-20 15:47:25 +0700
committerGitHub <noreply@github.com>2024-06-20 15:47:25 +0700
commite0d3e54d1da1bd406d37e867b872e59c735bc92f (patch)
treeb7684b102ef2cb47c0d5ab9a2e7fa9394d21e9a8 /pkgs/tools
parent1f61070e7df6361d4b7e993fa4a66eda1ba1c670 (diff)
parentad7afa95c63bfa760f9bf6aeb1e33c12b808dd43 (diff)
Merge pull request #301105 from thecaralice/aircrack-ng
aircrack-ng: refactor
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/networking/aircrack-ng/default.nix109
1 files changed, 89 insertions, 20 deletions
diff --git a/pkgs/tools/networking/aircrack-ng/default.nix b/pkgs/tools/networking/aircrack-ng/default.nix
index b4cab28e3ebdf..6bfd3136dc984 100644
--- a/pkgs/tools/networking/aircrack-ng/default.nix
+++ b/pkgs/tools/networking/aircrack-ng/default.nix
@@ -1,34 +1,103 @@
-{ lib, stdenv, fetchurl, libpcap, openssl, zlib, wirelesstools
-, iw, ethtool, pciutils, libnl, pkg-config, makeWrapper
-, autoreconfHook, usbutils }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchzip
+, makeWrapper
+, autoreconfHook
+, pkg-config
+, openssl
+, libgcrypt
+, cmocka
+, expect
+, sqlite
+, pcre2
 
+  # Linux
+, libpcap
+, zlib
+, wirelesstools
+, iw
+, ethtool
+, pciutils
+, libnl
+, usbutils
+, tcpdump
+, hostapd
+, wpa_supplicant
+, screen
+
+  # Cygwin
+, libiconv
+
+  # options
+, enableExperimental ? true
+, useGcrypt ? false
+, enableAirolib ? true
+, enableRegex ? true
+, useAirpcap ? stdenv.isCygwin
+}:
+let
+  airpcap-sdk = fetchzip {
+    pname = "airpcap-sdk";
+    version = "4.1.1";
+    url = "https://support.riverbed.com/bin/support/download?sid=l3vk3eu649usgu3rj60uncjqqu";
+    hash = "sha256-kJhnUvhnF9F/kIJx9NcbRUfIXUSX/SRaO/SWNvdkVT8=";
+    stripRoot = false;
+    extension = "zip";
+  };
+in
 stdenv.mkDerivation rec {
   pname = "aircrack-ng";
   version = "1.7";
 
-  src = fetchurl {
-    url = "https://download.aircrack-ng.org/aircrack-ng-${version}.tar.gz";
-    sha256 = "1hsq1gwmafka4bahs6rc8p98yi542h9a502h64bjlygpr3ih99q5";
+  src = fetchFromGitHub {
+    owner = "aircrack-ng";
+    repo = "aircrack-ng";
+    rev = version;
+    hash = "sha256-niQDwiqi5GtBW5HIn0endnqPb/MqllcjsjXw4pTyFKY=";
   };
 
+  postPatch = lib.optionalString stdenv.isLinux ''
+    substituteInPlace lib/osdep/linux.c --replace-warn /usr/local/bin ${lib.escapeShellArg (lib.makeBinPath [
+      wirelesstools
+    ])}
+  '';
+
+  configureFlags = [
+    (lib.withFeature enableExperimental "experimental")
+    (lib.withFeature useGcrypt "gcrypt")
+    (lib.withFeatureAs useAirpcap "airpcap" airpcap-sdk)
+  ];
+
   nativeBuildInputs = [ pkg-config makeWrapper autoreconfHook ];
-  buildInputs = [ libpcap openssl zlib libnl iw ethtool pciutils ];
+  buildInputs =
+    lib.singleton (if useGcrypt then libgcrypt else openssl)
+    ++ lib.optionals stdenv.isLinux [ libpcap zlib libnl iw ethtool pciutils ]
+    ++ lib.optional (stdenv.isCygwin && stdenv.isClang) libiconv
+    ++ lib.optional enableAirolib sqlite
+    ++ lib.optional enableRegex pcre2
+    ++ lib.optional useAirpcap airpcap-sdk;
 
-  patchPhase = ''
-    sed -e 's@/usr/local/bin@'${wirelesstools}@ -i lib/osdep/linux.c
-  '';
+  nativeCheckInputs = [ cmocka expect ];
 
-  postFixup = ''
-    wrapProgram $out/bin/airmon-ng --prefix PATH : ${lib.makeBinPath [
-      ethtool iw pciutils usbutils
-    ]}
+  postFixup = lib.optionalString stdenv.isLinux ''
+    wrapProgram "$out/bin/airmon-ng" --prefix PATH : ${lib.escapeShellArg (lib.makeBinPath [
+      ethtool
+      iw
+      pciutils
+      usbutils
+    ])}
   '';
 
-  meta = with lib; {
-    description = "Wireless encryption cracking tools";
-    homepage = "http://www.aircrack-ng.org/";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ ];
-    platforms = platforms.linux;
+  installCheckTarget = "integration";
+  nativeInstallCheckInputs = [ cmocka expect ] ++ lib.optionals stdenv.isLinux [ tcpdump hostapd wpa_supplicant screen ];
+
+  meta = {
+    description = "WiFi security auditing tools suite";
+    homepage = "https://www.aircrack-ng.org/";
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ caralice ];
+    platforms = with lib.platforms; builtins.concatLists [ linux darwin cygwin netbsd openbsd freebsd illumos ];
+    changelog = "https://github.com/aircrack-ng/aircrack-ng/blob/${src.rev}/ChangeLog";
   };
 }