
Script, um Aircrack-ng-Captures in eine SQLite-Datenbank zu parsen und nützliche Informationen zu extrahieren wie Handshakes, MGT-Identitäten, interessante Beziehungen zwischen APs, Clients und deren Probes, WPS-Informationen und einen globalen Überblick über alle gesehenen APs.
Skript zum Einlesen von Aircrack‑ng‑Aufnahmen in eine SQLite‑Datenbank und Extrahieren nützlicher Informationen wie Handshakes (im 22000‑Hashcat‑Format), Enterprise‑(MGT‑)Identitäten und EAP‑MD5‑Challenge/Response‑Paare, die X.509‑Zertifikate und die RSN/WPA‑Sicherheitskonfiguration jedes Netzwerks, die von den APs beworbenen 802.11r/k/v‑, Multiple‑BSSID‑ und Channel‑Switch‑Fähigkeiten, interessante Beziehungen zwischen APs, Clients und deren Probes, WPS‑Informationen sowie eine Gesamtansicht aller gesehenen APs.
Certificate-Tabelle.AP-Tabelle auf.hashcat -m 4800) in der EAPMD5-Tabelle.Probe-Tabelle).SummaryAP) der nach ESSID und Verschlüsselung gruppierten APs, die die Anzahl der APs und Clients, die WPA‑Version und den PMF‑Status sowie alle Hersteller pro Gruppe anzeigt, um einen schnellen Überblick über den Sicherheitsstatus nahegelegener Netzwerke zu geben (und um SSIDs mit gemischter/herabgestufter Sicherheit zu erkennen).AP-Zeile auf.docker pull r4ulcl/wifi_db
### Manuelle Installation
#### Debian-basierte Systeme (Ubuntu, Kali, Parrot, usw.)
Abhängigkeiten:
- python3
- python3-pip
- tshark
- hcxtools``` bash
sudo apt install tshark
sudo apt install python3 python3-pip
sudo apt install pkg-config libcurl4-openssl-dev libssl-dev zlib1g-dev make gcc
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
Installation (mit einer virtuellen Umgebung)``` bash
git clone https://github.com/r4ulcl/wifi_db cd wifi_db
sudo apt update ; sudo apt install python3-venv python3 -m venv wifi_db_env source wifi_db_env/bin/activate
pip3 install -r requirements.txt
> Die venv muss in jeder neuen
> Shell aktiviert werden (`source wifi_db_env/bin/activate`), bevor `wifi_db.py` ausgeführt wird. Verwende `deactivate`, um sie zu verlassen.
#### Arch
Abhängigkeiten:
- python3
- python3-pip
- tshark
- hcxtools``` bash
sudo pacman -S wireshark-qt
sudo pacman -S python-pip python
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
Installation (mit einer virtuellen Umgebung)``` bash
git clone https://github.com/r4ulcl/wifi_db cd wifi_db
python3 -m venv wifi_db_env source wifi_db_env/bin/activate
pip3 install -r requirements.txt
> Die venv muss in jeder neuen Shell aktiviert werden (`source wifi_db_env/bin/activate`), bevor `wifi_db.py` ausgeführt wird. Verwende `deactivate`, um sie zu verlassen.
## Nutzung
### Nutzungsbeispiel in der [WiFiChallenge Lab](https://lab.wifichallenge.com/)
- https://r4ulcl.com/posts/wifi_db-in-wifichallenge-lab/
### Scan mit airodump-ng
Führe airodump-ng mit der Speicherung der Ausgabe über -w aus:``` bash
sudo airodump-ng wlan0mon -w scan --manufacturer --wps --gpsd
#Folder with captures CAPTURESFOLDER=/home/user/wifi
touch db.SQLITE chmod a+rw db.SQLITE
docker run -t -v $PWD/db.SQLITE:/app/db.SQLITE -v $CAPTURESFOLDER:/captures/ r4ulcl/wifi_db
- `-v $PWD/db.SQLITE:/app/db.SQLITE`: Um die Ausgabe in der aktuellen Ordnerdatei db.SQLITE zu speichern
- `-v $CAPTURESFOLDER:/captures/`: Um den Ordner mit den Mitschriften mit dem Docker zu teilen

### SQLite-Datenbank mit manueller Installation erstellen
Sobald der Mitschrieb erstellt ist, können wir die Datenbank durch Importieren des Mitschriebs erstellen. Dazu geben Sie den Namen des Mitschriebs ohne Format ein. Denken Sie daran, zuerst die virtuelle Umgebung zu aktivieren (`source wifi_db_env/bin/activate`).``` bash
python3 wifi_db.py scan-01
Falls wir mehrere Aufnahmen haben, können wir den Ordner laden, in dem sie sich direkt befinden. Und mit -d können wir die Ausgabedatenbank umbenennen.``` bash python3 wifi_db.py -d database.sqlite scan-folder

### Datenbank öffnen
Die Datenbank kann geöffnet werden mit:
- [sqlitebrowser](https://sqlitebrowser.org/)

Unten sehen Sie ein Beispiel einer ProbeClientsConnected-Tabelle.

### Argumente``` bash
usage: wifi_db.py [-h] [-v] [--debug] [-o] [-t LAT] [-n LON] [--source [{aircrack-ng,kismet,wigle}]] [-d DATABASE] capture [capture ...]
positional arguments:
capture capture folder or file with extensions .csv, .kismet.csv, .kismet.netxml, or .log.csv. If no extension is provided, all types will
be added. This option supports the use of wildcards (*) to select multiple files or folders.
options:
-h, --help show this help message and exit
-v, --verbose increase output verbosity
--debug increase output verbosity to debug
-o, --obfuscated Obfuscate MAC and BSSID with AA:BB:CC:XX:XX:XX-defghi (WARNING: replace all database)
-t LAT, --lat LAT insert a fake lat in the new elements
-n LON, --lon LON insert a fake lon in the new elements
--source [{aircrack-ng,kismet,wigle}]
source from capture data (default: aircrack-ng)
-d DATABASE, --database DATABASE
output database, if exist append to the given database (default name: db.SQLITE)
TODO
TODO
wifi_db enthält mehrere Tabellen, um Informationen über den von airodump-ng erfassten drahtlosen Netzwerkverkehr zu speichern. Die Tabellen sind wie folgt:
AP: Diese Tabelle speichert Informationen über die während der Erfassungen erkannten Zugangspunkte (APs), einschließlich ihrer MAC-Adresse (bssid), des Netzwerknamens (ssid), ob das Netzwerk versteckt ist (cloaked), des Herstellers (manuf), des Kanals (channel), der Frequenz (frequency), des Trägers (carrier), des Verschlüsselungstyps (encryption) und der Gesamtzahl der von diesem AP empfangenen Pakete (packetsTotal). Sie enthält auch die Management-Frame-Schutz-Fähigkeits-/Anforderungsflags (mfpc, mfpr) und die aus Beacons geparsten RSN/WPA-Sicherheitsdetails, die 1:1-AP-Attribute sind und daher in der AP-Zeile selbst stehen: die ausgehandelte wpa_version (WPA2, WPA3, WPA2/WPA3-Übergang, OWE), die Authentifizierungs- und Schlüsselverwaltungssuiten (, z. B. PSK, SAE, 802.1X), die und (CCMP-128, GCMP-256, TKIP usw.), ein -Flag, das gesetzt wird, wenn eine 802.1X-AKM vorhanden ist, den Management-Frame-Schutz-Status (: Required, Capable oder Disabled), das rohe -Bitfield und dessen menschenlesbare Dekodierung (, z. B. → ). Ebenso enthält sie die Wi-Fi Protected Setup (WPS)-Konfiguration, ein weiteres 1:1-AP-Attribut: den beworbenen Netzwerknamen (), die WPS-Version (), den Gerätenamen (), den Modellnamen (), die Modellnummer (), die Konfigurationsmethoden () zusammen mit ihrer menschenlesbaren Dekodierung (, z. B. → ) und die Tastenfeld-Konfigurationsmethoden (). Schließlich speichert sie die aus Beacons und Probe Responses geparsten 802.11-Management-Fähigkeiten: das 802.11r Fast BSS Transition-Flag () und seine , das 802.11k Radio Resource Measurement-Flag (), das 802.11v BSS Transition Management-Flag (), die Multiple BSSID-Ankündigung () und seinen , das Channel Switch Announcement-Flag () und seinen Zielkanal () und , das gesetzt wird, wenn der Netzwerkname aus einer Probe Response / einem (Re-)Association Request anstelle eines Beacons wiederhergestellt wurde. Die Tabelle verwendet die MAC-Adresse als Primärschlüssel.
ProbeClients: Diese Ansicht wählt die MAC-Adresse des Probes, den Hersteller und Typ des Client-Geräts, die Gesamtzahl der vom Client gesendeten Pakete und die SSID des Probes aus. Sie verknüpft die Tabellen Probe und Client über die MAC-Adresse und ordnet die Ergebnisse nach SSID.
ConnectedAP: Diese Ansicht wählt die BSSID des verbundenen Zugangspunkts, die SSID des Zugangspunkts, die MAC-Adresse des verbundenen Client-Geräts und den Hersteller des Client-Geräts aus. Sie verknüpft die Tabellen Connected, AP und Client über die BSSID bzw. MAC-Adresse und ordnet die Ergebnisse nach BSSID.
ProbeClientsConnected: Diese Ansicht wählt die BSSID und SSID des verbundenen Zugangspunkts, die MAC-Adresse des Probes, den Hersteller und Typ des Client-Geräts, die Gesamtzahl der vom Client gesendeten Pakete und die SSID des Probes aus. Sie verknüpft die Tabellen Probe, Client und ConnectedAP über die MAC-Adresse des Probes und filtert die Ergebnisse, um Probes auszuschließen, die mit derselben SSID verbunden sind, die sie abfragen. Die Ergebnisse werden nach der SSID des Probes geordnet.
Aircrack-ng
Alles in 1 Datei (und getrennt)
Kismet
Wigle
installieren
Alle Dateien im Ordner parsen -f --folder
Erweiterte Fehler, Tilden usw. beheben (behoben in aircrack-ng 1.6)
Bash-Mehrfachdateien unterstützen: "capture*-1*"
Skript zum Löschen eines Clients oder AP aus der DB (mac). - (Whitelist)
Whitelist, um keine MAC zur DB hinzuzufügen (Datei whitelist.txt, MACs hinzufügen, DB erstellen)
Überschreiben, wenn neue Informationen vorhanden sind (alte ESSID='', neue ESSID='WIFI')
Tabelle Handshakes und PMKID
Hashcat-Hash-Format 22000
Tabelle Dateien, wenn Datei existiert, überspringen (vollständiger Pfad)
Dieses Programm ist eine Fortsetzung eines Teils von: https://github.com/T1GR3S/airo-heat
mfpc (fähig) und mfpr (erforderlich), die bitweise aus den RSN‑Fähigkeiten gelesen werden, sowie den abgeleiteten pmf-Zustand (Required, Capable wenn optional, oder Disabled), gespeichert in der AP-Tabelle.ft_80211r, mit der mobility_domain_id), 802.11k Radio Resource Measurement / Neighbor Reports (rrm_80211k) und 802.11v BSS Transition Management (bss_transition_80211v).mbssid, mit dem max_bssid_indicator) bewerben und Channel Switch Announcements (csa, mit dem Zielkanal csa_new_channel) senden.ssid_revealed markiert so gelernte Namen).akm_suitespairwise_ciphersgroup_cipherenterprisepmfrsn_capabilitiesrsn_capabilities_text0x00c0MFPR, MFPCwlan_ssidwps_versionwps_device_namewps_model_namewps_model_numberwps_config_methodswps_config_methods_text0x218cLabel, PushButton, Keypad, Virtual Display PINwps_config_methods_keypadft_80211rmobility_domain_idrrm_80211kbss_transition_80211vmbssidmax_bssid_indicatorcsacsa_new_channelssid_revealedClient: Diese Tabelle speichert Informationen über die während der Erfassungen erkannten drahtlosen Clients, einschließlich ihrer MAC-Adresse (mac), des Netzwerknamens (ssid), des Herstellers (manuf), des Gerätetyps (type), der Gesamtzahl der von diesem Client empfangenen Pakete (packetsTotal) und eines randomized-Flags, das gesetzt wird, wenn die MAC lokal verwaltet wird (eine randomisierte/private Adresse). Die Tabelle verwendet die MAC-Adresse als Primärschlüssel.
SeenClient: Diese Tabelle speichert Informationen über die während der Erfassungen gesehenen Clients, einschließlich ihrer MAC-Adresse (mac), des Erkennungszeitpunkts (time), des zur Erfassung der Daten verwendeten Tools (tool), der Signalstärke (signal_rssi), des Breitengrads (lat), des Längengrads (lon) und der Höhe (alt). Die Tabelle verwendet die Kombination aus MAC-Adresse und Erkennungszeitpunkt als Primärschlüssel und hat eine Fremdschlüsselbeziehung zur Tabelle Client.
Connected: Diese Tabelle speichert Informationen über die drahtlosen Clients, die mit einem Zugangspunkt verbunden sind, einschließlich der MAC-Adresse des Zugangspunkts (bssid) und des Clients (mac). Die Tabelle verwendet eine Kombination aus Zugangspunkt- und Client-MAC-Adressen als Primärschlüssel und hat Fremdschlüsselbeziehungen sowohl zur Tabelle AP als auch zur Tabelle Client.
SeenAp: Diese Tabelle speichert Informationen über die während der Erfassungen gesehenen Zugangspunkte, einschließlich ihrer MAC-Adresse (bssid), des Erkennungszeitpunkts (time), des zur Erfassung der Daten verwendeten Tools (tool), der Signalstärke (signal_rssi), des Breitengrads (lat), des Längengrads (lon), der Höhe (alt) und des Zeitstempels (bsstimestamp). Die Tabelle verwendet die Kombination aus Zugangspunkt-MAC-Adresse und Erkennungszeitpunkt als Primärschlüssel und hat eine Fremdschlüsselbeziehung zur Tabelle AP.
Probe: Diese Tabelle speichert Informationen über die von Clients gesendeten Probe-Requests, einschließlich der Client-MAC-Adresse (mac), des Netzwerknamens (ssid) und des Zeitpunkts der Probe (time). Sie führt auch den Probe-Request-Fingerprint, ein 1:1-Attribut der Probe und daher in der Probe-Zeile: die geordnete Liste der Informationselemente (Tags), die der Client in den Request aufgenommen hat (ie_order) und dessen Hash (fingerprint), charakteristisch für ein Gerätemodell/-Betriebssystem, plus die Quell-Erfassungsdatei (file). Die Fingerprint-Spalten werden für Probe-Requests gefüllt, die aus .cap-Dateien geparst wurden (ssid ist bei Broadcast-Probe-Requests leer); Probes, die aus CSV/netxml geparst wurden, lassen sie leer. Die Tabelle verwendet eine Kombination aus Client-MAC-Adresse und Netzwerkname als Primärschlüssel und hat eine Fremdschlüsselbeziehung zur Tabelle Client.
Handshake: Diese Tabelle speichert Informationen über die während der Erfassungen erfassten Handshakes, einschließlich der MAC-Adresse des Zugangspunkts (bssid), des Clients (mac), des Dateinamens (file) und des Hashcat-Formats (hashcat). Die Tabelle verwendet eine Kombination aus Zugangspunkt- und Client-MAC-Adressen sowie Dateiname als Primärschlüssel und hat Fremdschlüsselbeziehungen sowohl zur Tabelle AP als auch zur Tabelle Client.
Identity: Diese Tabelle repräsentiert EAP-Identitäten und -Methoden, die bei der drahtlosen Authentifizierung verwendet werden. Die Felder bssid und mac sind Fremdschlüssel, die auf die Tabellen AP bzw. Client verweisen. Weitere Felder sind die im Authentifizierungsprozess verwendete identity und method sowie der realm (der Teil nach @ in einer user@realm-Identität, nützlich für die anonymen äußeren Identitäten, die in PEAP/TTLS verwendet werden).
Certificate: Diese Tabelle speichert die X.509-Zertifikate, die in Enterprise-Authentifizierungen (WPA-Enterprise / 802.1X) EAP-TLS/PEAP/TTLS ausgetauscht werden, sowohl das vom Zugangspunkt gesendete Serverzertifikat als auch das vom Supplikanten gesendete Clientzertifikat. Jede Zeile ist mit dem Zugangspunkt über das Feld bssid (ein Fremdschlüssel, der auf die Tabelle AP verweist) und dem Client über das Feld mac verknüpft; das Feld cert_type gibt an, wessen Zertifikat es ist (AP, Client oder Unknown, wenn die EAP-Richtung nicht bestimmt werden kann). Es speichert auch die Quell-Erfassungsdatei file. Die Tabelle speichert alle relevanten Zertifikatsfelder: die Position in der Zertifikatskette (cert_index), version, serial_number, signature_algorithm, vollständige issuer- und subject-Distinguished-Names, Gültigkeitsdaten (not_before, not_after), die aufgeschlüsselten Subject- (subject_cn, subject_o, subject_ou) und Issuer-Komponenten (issuer_cn, issuer_o, issuer_ou), den public_key_algorithm, die public_key_size, die public_key_curve (EC) und den public_key_exponent (RSA) sowie die sha1_fingerprint und sha256_fingerprint. Es extrahiert auch die relevantesten X.509-Erweiterungen: Subject Alternative Names (subject_alt_names), key_usage, ext_key_usage, Basic Constraints (is_ca, path_length), ein self_signed-Flag, die Authority- und Subject-Key-Identifier (authority_key_id, subject_key_id), CRL- und OCSP-URLs (crl_urls, ocsp_urls) und die Zertifikatslebensdauer in Tagen (validity_days). Die Tabelle verwendet die Kombination aus bssid und sha256_fingerprint als Primärschlüssel.
EAPMD5: Diese Tabelle speichert EAP-MD5-Challenge/Response-Paare, die aus Enterprise-Authentifizierungen erfasst wurden. EAP-MD5 überträgt eine CHAP-artige Challenge und MD5-Antwort im Klartext (außerhalb eines TLS-Tunnels), sodass das Paar offline abgehört und geknackt werden kann (hashcat -m 4800 oder eapmd5pass), um das Passwort wiederherzustellen. Jede Zeile zeichnet die Fremdschlüssel bssid (AP) und mac (Client), die identity, den EAP-Identifier (eap_id), der Request und Response verknüpft, die challenge, die response, eine gebrauchsfertige hashcat-Zeile und die Quell-file auf. Sie verwendet die Kombination aus bssid, mac und eap_id als Primärschlüssel.
HandshakeAP: Diese Ansicht wählt die BSSID des Zugangspunkts, die SSID des Zugangspunkts, die MAC-Adresse des Client-Geräts, das den Handshake durchgeführt hat, den Hersteller des Client-Geräts, die Datei, die den Handshake enthält, und die Hashcat-Ausgabe aus. Sie verknüpft die Tabellen Handshake, AP und Client über die BSSID bzw. MAC-Adresse und ordnet die Ergebnisse nach BSSID.
HandshakeAPUnique: Diese Ansicht wählt die BSSID des Zugangspunkts, die SSID des Zugangspunkts, die MAC-Adresse des Client-Geräts, das den Handshake durchgeführt hat, den Hersteller des Client-Geräts, die Datei, die den Handshake enthält, und die Hashcat-Ausgabe aus. Sie verknüpft die Tabellen Handshake, AP und Client über die BSSID bzw. MAC-Adresse und filtert die Ergebnisse, um Handshakes auszuschließen, die nicht von Hashcat geknackt wurden. Die Ergebnisse werden nach SSID gruppiert und nach BSSID geordnet.
IdentityAP: Diese Ansicht wählt die BSSID des Zugangspunkts, die SSID des Zugangspunkts, die MAC-Adresse des Client-Geräts, das die Identitätsanfrage durchgeführt hat, den Hersteller des Client-Geräts, den Identitätsstring und die für die Identitätsanfrage verwendete Methode aus. Sie verknüpft die Tabellen Identity, AP und Client über die BSSID bzw. MAC-Adresse und ordnet die Ergebnisse nach BSSID.
CertificateAP: Diese Ansicht wählt die BSSID und SSID des Zugangspunkts zusammen mit dem Zertifikatstyp (cert_type), den Common Names von Subject und Issuer, dem vollständigen Subject und Issuer, den Gültigkeitsdaten, dem Algorithmus und der Größe des öffentlichen Schlüssels, dem self_signed-Flag und dem sha256_fingerprint aus. Sie verknüpft die Tabellen Certificate und AP über die BSSID und ordnet die Ergebnisse nach BSSID.
SecurityAP: Diese Ansicht wählt die BSSID und SSID des Zugangspunkts zusammen mit wpa_version, akm_suites, pairwise_ciphers, group_cipher, dem enterprise-Flag und den Management-Frame-Schutz-Spalten (mfpc, mfpr) aus. Sie liest diese Spalten direkt aus der Tabelle AP (beschränkt auf die APs, die Sicherheitsdetails haben) und ordnet die Ergebnisse nach BSSID.
CapabilitiesAP: Diese Ansicht wählt die BSSID und SSID des Zugangspunkts zusammen mit seinen 802.11-Management-Fähigkeiten (ft_80211r, mobility_domain_id, rrm_80211k, bss_transition_80211v, mbssid, max_bssid_indicator, csa, csa_new_channel) aus. Sie liest diese Spalten direkt aus der Tabelle AP, beschränkt auf die APs, die mindestens eine davon ankündigen, und ordnet die Ergebnisse nach BSSID.
SummaryAP: Diese Ansicht fasst die Zugangspunkte gruppiert nach SSID und Verschlüsselung zusammen, sodass dieselbe SSID mit unterschiedlichen Sicherheitseinstellungen als separate Zeilen erscheint (praktisch zum Erkennen von gemischten oder herabgestuften Konfigurationen). Für jede Gruppe wählt sie die SSID, die Anzahl der verschiedenen Zugangspunkte (APs count), den Verschlüsselungstyp, die WPA-Version (wpa_version) und den Management-Frame-Schutz-Status (pmf), jeden in der Gruppe gesehenen Hersteller (manuf, kommagetrennt), ob die SSID versteckt ist, und die Anzahl der verschiedenen verbundenen Clients (Clients count). Es werden APs ohne aufgezeichnete Verschlüsselung ausgeschlossen und die Ergebnisse nach der AP-Anzahl in absteigender Reihenfolge geordnet.
HTTP-POST-Passwörter abrufen
DNS-Anfragen