depot/third_party/nixpkgs/pkgs/by-name/ai/aircrack-ng/package.nix

146 lines
2.9 KiB
Nix

{
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.hostPlatform.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 = fetchFromGitHub {
owner = "aircrack-ng";
repo = "aircrack-ng";
rev = version;
hash = "sha256-niQDwiqi5GtBW5HIn0endnqPb/MqllcjsjXw4pTyFKY=";
};
postPatch = lib.optionalString stdenv.hostPlatform.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 =
lib.singleton (if useGcrypt then libgcrypt else openssl)
++ lib.optionals stdenv.hostPlatform.isLinux [
libpcap
zlib
libnl
iw
ethtool
pciutils
]
++ lib.optional (stdenv.hostPlatform.isCygwin && stdenv.hostPlatform.isClang) libiconv
++ lib.optional enableAirolib sqlite
++ lib.optional enableRegex pcre2
++ lib.optional useAirpcap airpcap-sdk;
nativeCheckInputs = [
cmocka
expect
];
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
wrapProgram "$out/bin/airmon-ng" --prefix PATH : ${
lib.escapeShellArg (
lib.makeBinPath [
ethtool
iw
pciutils
usbutils
]
)
}
'';
installCheckTarget = "integration";
nativeInstallCheckInputs =
[
cmocka
expect
]
++ lib.optionals stdenv.hostPlatform.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";
};
}