Skip to content

Latest commit

 

History

History
192 lines (137 loc) · 7.62 KB

File metadata and controls

192 lines (137 loc) · 7.62 KB

AirSnare (ehemals zizzania)

English version

AirSnare überwacht drahtlosen Netzwerkverkehr, sucht gezielt nach WPA-/WPA2-Handshakes und speichert nur die Frames, die für eine spätere Entschlüsselung nötig sind (ein Beacon, die EAPOL-Sequenz und relevante Datenframes). Um den Prozess zu beschleunigen, kann AirSnare IEEE 802.11 Deauthentication-Frames an ausgewählte Stationen senden, verwaltet Retransmits/Reassociations automatisch und begrenzt die Anzahl der gesendeten Frames pro Client. Seit 2025 wird das Projekt von Robert Tulke (rt@debian.sh) gepflegt und erweitert – aufbauend auf Andrea Cardacis ursprünglichem zizzania.

Screenshot

AirSnare vs. zizzania

Das ursprüngliche zizzania-Projekt wird seit Jahren nicht mehr gepflegt – keine neuen Releases, keine Bugfixes und etliche Ecken/Kanten auf modernen Linux- oder macOS-Versionen. AirSnare übernimmt den bewährten Kern, hebt den Rest aber auf ein aktuelles Niveau:

  • Stabilerer Betrieb: assert()-Aufräumarbeiten, Fehlerbehandlung für Killer-Pipe, Memory-Pools für Clients/BSS/Targets.
  • Bessere Bedienbarkeit: gestapelte Konfigurationsdateien, aufgeräumtes Option-Parsing, klareres Terminal-UI, Log-Level-System, aktualisierte Plattform-Hinweise.
  • Performance & UX: entschlackte Dissector-/Handshake-Pfade, Bloom-Filter in den Hash-Tabellen, Schutzgeländer für passive/live Modi.
  • PMKID-Extraktion: PMKID aus EAPOL-Message-1 wird automatisch extrahiert und im hashcat-22000-Format ausgegeben – Offline-Cracking ohne vollständigen 4-Wege-Handshake.

AirSnare harmoniert zudem perfekt mit AirJack: AirJack übernimmt Scan, Kanalwahl, RFMON-Toggle, Capture-Orchestrierung und optional das Cracking, während AirSnare als schlanker libpcap-Backenddienst agiert. Ergebnis: Ein einziger Workflow (./airjack), der Netzwerke findet, das Interface korrekt setzt, AirSnare mit passenden Filtern startet und den Capture direkt an hcxpcapngtool bzw. hashcat weiterreicht.

Beispiele

Interface in den RFMON-Modus auf Kanal 6 versetzen und nur den Verkehr der Stationen eines bestimmten Access Points mitschneiden (MACs beginnend mit 00:11:22 werden dabei ausgeschlossen):

airsnare -i wlan0 -c 6 -b AA:BB:CC:DD:EE:FF -x 00:11:22:33:44:55/ff:ff:ff:00:00:00 -w out.pcap

Passiv den Verkehr aller Stationen am aktuellen Kanal beobachten (Interface befindet sich bereits im RFMON-Modus):

airsnare -i wlan0 -n

Überflüssige Frames aus einer bestehenden pcap-Datei entfernen, dabei Handshakes schon nach den ersten zwei EAPOL-Nachrichten als vollständig betrachten (genug für Unicast):

airsnare -r in.pcap -x 00:11:22:33:44:55 -w out.pcap

Setup

Homebrew (macOS)

Die einfachste Installationsmethode auf macOS:

brew tap rtulke/airsnare
brew install airsnare

Upgrade auf eine neue Version:

brew update && brew upgrade airsnare

Für Linux oder Entwicklungs-Builds siehe die Abschnitte weiter unten.

Abhängigkeiten

Debian/Ubuntu:

sudo apt-get install libpcap-dev

macOS (Homebrew):

brew install libpcap wget

Build

make           # baut das optimierte Release (Standardziel)
make debug     # baut mit -ggdb3/-Werror für Entwicklung
make config    # aktualisiert das vendorte Makefile + uthash stub

Installation

AirSnare lässt sich direkt aus src/ starten; Installation ist optional:

make install   INSTALL_PATH=/usr/local/bin   # kopiert src/airsnare dorthin
make uninstall INSTALL_PATH=/usr/local/bin

DESTDIR=/pfad/ins/package hilft beim Paketbau; für Systempfade ggf. sudo verwenden.

Konfiguration

AirSnare lädt Konfigurationsdateien vor den CLI-Argumenten. Jede spätere Quelle überschreibt frühere Werte:

  1. /etc/airsnare.conf (systemweit, optional)
  2. ~/.airsnarerc (nutzerbezogen, optional)
  3. Beliebig viele Dateien über --config <pfad>
  4. Kommandozeile (hat oberste Priorität)

Das Format ist minimal: schlüssel = wert pro Zeile, Kommentare via # oder ;. Strings dürfen in ' oder " stehen, ~ wird zu $HOME expandiert. Beispielwerte findest du in airsnare.conf.example.

Verfügbare Schlüssel

Schlüssel Typ Beschreibung / CLI-Entsprechung
interface, input string Live-Interface (-i)
pcap, input_file, read_file string Eingabedatei (-r)
output, write_file string Ausgabe-pcap (-w)
channel int Kanalnummer (-c)
no_rfmon bool RFMON-Setup überspringen (-M)
passive bool Passiver Modus (-n)
deauth_count int Anzahl Frames pro Burst (-d)
deauth_attempts int Maximale Versuche (-a)
deauth_interval int Sekunden zwischen Bursts (-t)
dump_group_traffic bool Broadcast/Multicast speichern (-g)
early_quit bool Nach erstem Handshake beenden (-q)
max_handshake int 2‑4 Anzahl benötigter EAPOL-Messages (-2/-3)
bssid_include / bssid_exclude csv MAC-/Maskenlisten (-b/-B)
station_include / station_exclude csv Stationen whitelisten/blacklisten (-s/-S)
bssid_exclude_first / station_exclude_first bool Reihenfolge für Filter (-x b / -x s)
log_level string/int error, info, warn, debug, trace bzw. 0-4 (-v)

CSV-Werte sind komma-getrennt (MAC[/Maske], MAC). Booleans akzeptieren true/false, yes/no, on/off, 0/1. Fehlerhafte Einträge stoppen nur das Laden der jeweiligen Datei und melden Dateiname + Zeilennummer.

Schnellstart

cp airsnare.conf.example ~/.airsnarerc
$EDITOR ~/.airsnarerc
./src/airsnare --config ~/.airsnarerc -n

So lassen sich vorkonfigurierte Profile pflegen, während einzelne Flags (z.B. -v) weiterhin aus der CLI kommen.

macOS-Hinweise

Kanalwechsel

-c <kanal> setzt den Kanal vor der RFMON-Aktivierung (zwingend, da pcap_activate das Interface übernimmt). AirSnare versucht dabei automatisch zwei Methoden der Reihe nach:

  1. /usr/sbin/networksetup -setairportchannel — funktioniert bis macOS Monterey
  2. Das airport-Tool — automatischer Fallback für macOS Ventura+ (dort wurde der -setairportchannel-Unterbefehl aus networksetup entfernt)

Läuft AirSnare als root, wird der Kanal automatisch gesetzt:

sudo airsnare -i en0 -c 6 -n

Für manuellen Kanalwechsel -M übergeben (AirSnare konfiguriert das Interface dann nicht selbst):

sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport \
     --channel=<kanal>
sudo airsnare -i en0 -M -n

Code-Struktur

src/
|-- airsnare.c              # Programmeinstieg, Lebenszyklus
|
|-- handler.c/h             # Handler-Setup, pcap, BPF, Mainloop
|-- dissector.c/h           # Frame-Parsen & Filter
|-- handshake.c/h           # WPA-Handshakes verwalten
|-- killer.c/h              # Deauth-Injektion
|-- dispatcher.c/h          # Signal-Handling (SIGINT/SIGTERM/SIGUSR1), Killer-Trigger
|
|-- clients.c/h             # Stations-Tracking
|-- bsss.c/h                # Access-Point-Tracking
|-- members.c/h             # MAC-Listen (Whitelist/Blacklist)
|
|-- ieee802.c/h             # Protokolldefinitionen
|-- config.c/h              # Konfiguration laden & Prioritäten
|-- options.c/h             # CLI & Konfig-Zusammenführung
|-- terminal.c/h            # Ausgabe & Statistiken
|-- util.c/h                # Privileg-Themen
|-- iface.c/h               # Interface-spezifische Helfer
|
|-- params.h                # Laufzeit-Konstanten
|-- release.h               # Versionsinfos
`-- endian.h                # Byteorder-Makros