166 lines
3.5 KiB
Nix
166 lines
3.5 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, makeWrapper
|
|
# Required
|
|
, aircrack-ng
|
|
, bash
|
|
, coreutils-full
|
|
, gawk
|
|
, gnugrep
|
|
, gnused
|
|
, iproute2
|
|
, iw
|
|
, pciutils
|
|
, procps
|
|
, tmux
|
|
# X11 Front
|
|
, xterm
|
|
, xorg
|
|
# what the author calls "Internals"
|
|
, usbutils
|
|
, wget
|
|
, ethtool
|
|
, util-linux
|
|
, ccze
|
|
# Optionals
|
|
# Missing in nixpkgs: beef, hostapd-wpe, asleap
|
|
, bettercap
|
|
, bully
|
|
, crunch
|
|
, dhcp
|
|
, dnsmasq
|
|
, ettercap
|
|
, hashcat
|
|
, hcxdumptool
|
|
, hcxtools
|
|
, hostapd
|
|
, john
|
|
, lighttpd
|
|
, mdk4
|
|
, nftables
|
|
, openssl
|
|
, pixiewps
|
|
, reaverwps-t6x # Could be the upstream version too
|
|
, wireshark-cli
|
|
# Undocumented requirements (there is also ping)
|
|
, apparmor-bin-utils
|
|
, curl
|
|
, glibc
|
|
, ncurses
|
|
, networkmanager
|
|
, systemd
|
|
# Support groups
|
|
, supportWpaWps ? true # Most common use-case
|
|
, supportHashCracking ? false
|
|
, supportEvilTwin ? false
|
|
, supportX11 ? false # Allow using xterm instead of tmux, hard to test
|
|
}:
|
|
let
|
|
deps = [
|
|
aircrack-ng
|
|
bash
|
|
coreutils-full
|
|
curl
|
|
gawk
|
|
glibc
|
|
gnugrep
|
|
gnused
|
|
iproute2
|
|
iw
|
|
networkmanager
|
|
ncurses
|
|
pciutils
|
|
procps
|
|
tmux
|
|
usbutils
|
|
wget
|
|
ethtool
|
|
util-linux
|
|
ccze
|
|
systemd
|
|
] ++ lib.optionals supportWpaWps [
|
|
bully
|
|
pixiewps
|
|
reaverwps-t6x
|
|
] ++ lib.optionals supportHashCracking [
|
|
crunch
|
|
hashcat
|
|
hcxdumptool
|
|
hcxtools
|
|
john
|
|
wireshark-cli
|
|
] ++ lib.optionals supportEvilTwin [
|
|
bettercap
|
|
dhcp
|
|
dnsmasq
|
|
ettercap
|
|
hostapd
|
|
lighttpd
|
|
openssl
|
|
mdk4
|
|
nftables
|
|
apparmor-bin-utils
|
|
] ++ lib.optionals supportX11 [
|
|
xterm
|
|
xorg.xset
|
|
xorg.xdpyinfo
|
|
];
|
|
in
|
|
stdenv.mkDerivation rec {
|
|
pname = "airgeddon";
|
|
version = "11.02";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "v1s1t0r1sh3r3";
|
|
repo = "airgeddon";
|
|
rev = "v${version}";
|
|
hash = "sha256-k3xQndF1m3fnn7nCb2T/wGxbUPJ83wOV33Ky0FbToVg=";
|
|
};
|
|
|
|
strictDeps = true;
|
|
nativeBuildInputs = [ makeWrapper ];
|
|
|
|
# What these replacings do?
|
|
# - Disable the auto-updates (we'll run from a read-only directory);
|
|
# - Silence the checks (NixOS will enforce the PATH, it will only see the tools as we listed);
|
|
# - Use "tmux", we're not patching XTerm commands;
|
|
# - Remove PWD and $0 references, forcing it to use the paths from store;
|
|
# - Force our PATH to all tmux sessions.
|
|
postPatch = ''
|
|
patchShebangs airgeddon.sh
|
|
sed -i '
|
|
s|AIRGEDDON_AUTO_UPDATE=true|AIRGEDDON_AUTO_UPDATE=false|
|
|
s|AIRGEDDON_SILENT_CHECKS=false|AIRGEDDON_SILENT_CHECKS=true|
|
|
s|AIRGEDDON_WINDOWS_HANDLING=xterm|AIRGEDDON_WINDOWS_HANDLING=tmux|
|
|
' .airgeddonrc
|
|
|
|
sed -Ei '
|
|
s|\$\(pwd\)|${placeholder "out"}/share/airgeddon;scriptfolder=${placeholder "out"}/share/airgeddon/|
|
|
s|\$\{0\}|${placeholder "out"}/bin/airgeddon|
|
|
s|tmux send-keys -t "([^"]+)" "|tmux send-keys -t "\1" "export PATH=\\"$PATH\\"; |
|
|
' airgeddon.sh
|
|
'';
|
|
|
|
# ATTENTION: No need to chdir around, we're removing the occurrences of "$(pwd)"
|
|
postInstall = ''
|
|
wrapProgram $out/bin/airgeddon --prefix PATH : ${lib.makeBinPath deps}
|
|
'';
|
|
|
|
# Install only the interesting files
|
|
installPhase = ''
|
|
runHook preInstall
|
|
install -Dm 755 airgeddon.sh "$out/bin/airgeddon"
|
|
install -dm 755 "$out/share/airgeddon"
|
|
cp -dr .airgeddonrc known_pins.db language_strings.sh plugins/ "$out/share/airgeddon/"
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Multi-use TUI to audit wireless networks. ";
|
|
homepage = "https://github.com/v1s1t0r1sh3r3/airgeddon";
|
|
license = licenses.gpl3Plus;
|
|
maintainers = with maintainers; [ pedrohlc ];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|