diff options
author | Alice Carroll <git@alice-carroll.pet> | 2024-04-02 09:46:32 +0300 |
---|---|---|
committer | Alice Carroll <git@alice-carroll.pet> | 2024-04-15 18:57:03 +0300 |
commit | ad7afa95c63bfa760f9bf6aeb1e33c12b808dd43 (patch) | |
tree | 31f90404b0f5d06e6cd59d8e0f8b6ff81be73471 /pkgs/tools | |
parent | e81b4c07ac872cb80e1ab01ecc9b900b4fe4788d (diff) |
aircrack-ng: refactor
Support other systems, add test dependencies etc.
Diffstat (limited to 'pkgs/tools')
-rw-r--r-- | pkgs/tools/networking/aircrack-ng/default.nix | 109 |
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"; }; } |