
Script pour analyser les captures Aircrack-ng dans une base de données SQLite et extraire des informations utiles comme les handshakes, les identités MGT, les relations intéressantes entre APs, clients et leurs sondes, les informations WPS et une vue globale de tous les APs vus.
Script pour analyser les captures Aircrack-ng dans une base de données SQLite et extraire des informations utiles comme les handshakes (au format 22000 hashcat), les identités réseau d'entreprise (MGT) et les paires challenge/réponse EAP-MD5, les certificats X.509 et la configuration de sécurité RSN/WPA de chaque réseau, les capacités 802.11r/k/v, Multiple BSSID et Channel Switch annoncées par les points d'accès, les relations intéressantes entre points d'accès, clients et leurs Probes, les informations WPS, ainsi qu'une vue globale de tous les points d'accès observés.
Certificate.AP.hashcat -m 4800) dans la table EAPMD5.Probe).SummaryAP) des points d'accès groupés par ESSID et chiffrement, montrant le nombre de points d'accès et de clients, la version WPA et l'état PMF, ainsi que chaque fabricant par groupe, pour donner un aperçu rapide de l'état de sécurité des réseaux à proximité (et repérer les SSID avec une sécurité mixte/dégradée).AP.docker pull r4ulcl/wifi_db
### Installation manuelle
#### Systèmes basés sur Debian (Ubuntu, Kali, Parrot, etc.)
Dépendances:
- 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 (avec un environnement virtuel)``` 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
> Le venv doit être activé (`source wifi_db_env/bin/activate`) dans chaque nouveau
> shell avant d'exécuter `wifi_db.py`. Utilisez `deactivate` pour le quitter.
#### Arch
Dépendances :
- 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 (à l'aide d'un environnement virtuel)``` 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
> Le venv doit être activé (`source wifi_db_env/bin/activate`) dans chaque nouveau
> shell avant d'exécuter `wifi_db.py`. Utilisez `deactivate` pour le quitter.
## Utilisation
### Exemple d'utilisation dans [WiFiChallenge Lab](https://lab.wifichallenge.com/)
- https://r4ulcl.com/posts/wifi_db-in-wifichallenge-lab/
### Scanner avec airodump-ng
Exécutez airodump-ng en sauvegardant la sortie avec -w :``` 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` : Pour enregistrer la sortie dans le fichier db.SQLITE du dossier actuel
- `-v $CAPTURESFOLDER:/captures/` : Pour partager le dossier des captures avec le docker

### Créer la base de données SQLite en utilisant l'installation manuelle
Une fois la capture créée, nous pouvons créer la base de données en important la capture. Pour ce faire, mettre le nom de la capture sans format. N'oubliez pas d'activer d'abord l'environnement virtuel (`source wifi_db_env/bin/activate`).``` bash
python3 wifi_db.py scan-01
Dans le cas où nous avons plusieurs captures, nous pouvons charger le dossier dans lequel elles se trouvent directement. Et avec -d nous pouvons renommer la base de données de sortie.``` bash python3 wifi_db.py -d database.sqlite scan-folder

### Ouvrir la base de données
La base de données peut être ouverte avec:
- [sqlitebrowser](https://sqlitebrowser.org/)

Ci-dessous un exemple d'une table ProbeClientsConnected.

### Arguments``` 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)
À faire
À faire
wifi_db contient plusieurs tables pour stocker les informations relatives au trafic réseau sans fil capturé par airodump-ng. Les tables sont les suivantes :
AP : Cette table stocke les informations sur les points d'accès (AP) détectés lors des captures, notamment leur adresse MAC (bssid), le nom du réseau (ssid), si le réseau est masqué (cloaked), le fabricant (manuf), le canal (channel), la fréquence (frequency), le porteuse (carrier), le type de chiffrement (encryption) et le total des paquets reçus de cet AP (packetsTotal). Elle contient également les indicateurs de capacité/exigence de protection des trames de gestion (mfpc, mfpr) et les détails de sécurité RSN/WPA analysés à partir des balises, qui sont des attributs 1:1 de l'AP et résident donc sur la ligne AP elle-même : la wpa_version négociée (WPA2, WPA3, transition WPA2/WPA3, OWE), les suites d'authentification et de gestion des clés (, par exemple PSK, SAE, 802.1X), les et (CCMP-128, GCMP-256, TKIP, etc.), un indicateur activé lorsqu'un AKM 802.1X est présent, l'état de protection des trames de gestion ( : Requis, Capable ou Désactivé), le champ de bits brut et son décodage lisible (, ex. → ). Elle contient également la configuration Wi-Fi Protected Setup (WPS), un autre attribut 1:1 de l'AP : le nom réseau annoncé (), la version WPS (), le nom de l'appareil (), le nom du modèle (), le numéro de modèle (), les méthodes de configuration () ainsi que leur décodage lisible (, ex. → ), et les méthodes de configuration par clavier (). Enfin, elle stocke les capacités de gestion 802.11 analysées à partir des balises et des réponses aux sondes : le drapeau de transition rapide BSS 802.11r () et son , le drapeau de mesure des ressources radio 802.11k (), le drapeau de gestion de transition BSS 802.11v (), la publicité Multi-BSSID () et son , le drapeau d'annonce de changement de canal () et son canal cible (), et , activé lorsque le nom du réseau a été récupéré à partir d'une réponse de sonde / demande de (ré)association au lieu d'une balise. La table utilise l'adresse MAC comme clé primaire.
ProbeClients : Cette vue sélectionne l'adresse MAC de la sonde, le fabricant et le type de l'appareil client, le nombre total de paquets transmis par le client, et le SSID de la sonde. Elle joint les tables Probe et Client sur l'adresse MAC et classe les résultats par SSID.
ConnectedAP : Cette vue sélectionne le BSSID du point d'accès connecté, le SSID du point d'accès, l'adresse MAC du périphérique client connecté et le fabricant du périphérique client. Elle joint les tables Connected, AP et Client respectivement sur le BSSID et l'adresse MAC, et classe les résultats par BSSID.
ProbeClientsConnected : Cette vue sélectionne le BSSID et le SSID du point d'accès connecté, l'adresse MAC de la sonde, le fabricant et le type du périphérique client, le nombre total de paquets transmis par le client et le SSID de la sonde. Elle joint les tables Probe, Client et ConnectedAP sur l'adresse MAC de la sonde, et filtre les résultats pour exclure les sondes qui sont connectées au même SSID qu'elles sondent. Les résultats sont classés par le SSID de la sonde.
Aircrack-ng
Tout en 1 fichier (et séparément)
Kismet
Wigle
Installation
Analyser tous les fichiers d'un dossier -f --folder
Correction des erreurs étendues, des tildes, etc. (corrigé dans aircrack-ng 1.6)
Prise en charge des fichiers multiples bash : "capture*-1*"
Script pour supprimer un client ou un AP de la base de données (mac). - (Liste blanche)
Liste blanche pour ne pas ajouter une mac à la base de données (fichier whitelist.txt, ajouter les macs, créer la base de données)
Écraser s'il y a de nouvelles informations (ancien ESSID='', nouvel ESSID='WIFI')
Table des handshakes et PMKID
Format de hachage hashcat 22000
Ce programme est la continuation d'une partie de : https://github.com/T1GR3S/airo-heat
mfpc (capable) et mfpr (requis) lus bit à bit depuis les capacités RSN, et l'état pmf dérivé (Required, Capable lorsqu'il est optionnel, ou Disabled), stocké dans la table AP.ft_80211r, avec le mobility_domain_id), 802.11k Radio Resource Measurement / rapports de voisinage (rrm_80211k), et 802.11v BSS Transition Management (bss_transition_80211v).mbssid, avec le max_bssid_indicator) et qui envoient des annonces de changement de canal (csa, avec le canal cible csa_new_channel).ssid_revealed marque les noms appris de cette manière).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 : Cette table stocke les informations sur les clients sans fil détectés lors des captures, notamment leur adresse MAC (mac), le nom du réseau (ssid), le fabricant (manuf), le type d'appareil (type), le total des paquets reçus de ce client (packetsTotal) et un indicateur randomized activé lorsque l'adresse MAC est administrée localement (adresse randomisée/privée). La table utilise l'adresse MAC comme clé primaire.
SeenClient : Cette table stocke les informations sur les clients vus lors des captures, notamment leur adresse MAC (mac), l'heure de détection (time), l'outil utilisé pour capturer les données (tool), la force du signal (signal_rssi), la latitude (lat), la longitude (lon) et l'altitude (alt). La table utilise la combinaison de l'adresse MAC et de l'heure de détection comme clé primaire, et possède une relation de clé étrangère avec la table Client.
Connected : Cette table stocke les informations sur les clients sans fil connectés à un point d'accès, notamment l'adresse MAC du point d'accès (bssid) et du client (mac). La table utilise une combinaison des adresses MAC du point d'accès et du client comme clé primaire, et possède des relations de clé étrangère avec les tables AP et Client.
SeenAp : Cette table stocke les informations sur les points d'accès vus lors des captures, notamment leur adresse MAC (bssid), l'heure de détection (time), l'outil utilisé pour capturer les données (tool), la force du signal (signal_rssi), la latitude (lat), la longitude (lon), l'altitude (alt) et l'horodatage (bsstimestamp). La table utilise la combinaison de l'adresse MAC du point d'accès et de l'heure de détection comme clé primaire, et possède une relation de clé étrangère avec la table AP.
Probe : Cette table stocke les informations sur les demandes de sonde envoyées par les clients, notamment l'adresse MAC du client (mac), le nom du réseau (ssid) et l'heure de la sonde (time). Elle porte également l'empreinte de la demande de sonde, qui est un attribut 1:1 de la sonde et réside donc sur la ligne Probe : la liste ordonnée des éléments d'information (tags) que le client a inclus dans la demande (ie_order) et son hachage (fingerprint), caractéristique d'un modèle/appareil/OS, plus le fichier source de capture (file). Les colonnes d'empreinte sont renseignées pour les demandes de sonde analysées à partir de fichiers .cap (ssid est vide pour les demandes de sonde de diffusion) ; les sondes analysées à partir de CSV/netxml les laissent vides. La table utilise une combinaison de l'adresse MAC du client et du nom du réseau comme clé primaire, et possède une relation de clé étrangère avec la table Client.
Handshake : Cette table stocke les informations sur les handshakes capturés lors des captures, notamment l'adresse MAC du point d'accès (bssid), le client (mac), le nom du fichier (file) et le format hashcat (hashcat). La table utilise une combinaison des adresses MAC du point d'accès et du client, et du nom du fichier comme clé primaire, et possède des relations de clé étrangère avec les tables AP et Client.
Identity : Cette table représente les identités et méthodes EAP (Extensible Authentication Protocol) utilisées dans l'authentification sans fil. Les champs bssid et mac sont des clés étrangères qui référencent respectivement les tables AP et Client. Les autres champs incluent identity et method utilisés dans le processus d'authentification, ainsi que realm (la partie après @ dans une identité user@realm, utile pour les identités externes anonymes vues dans PEAP/TTLS).
Certificate : Cette table stocke les certificats X.509 échangés dans les authentifications EAP-TLS/PEAP/TTLS d'entreprise (WPA-Enterprise / 802.1X), à la fois le certificat serveur envoyé par le point d'accès et le certificat client envoyé par le suppliant. Chaque ligne est associée au point d'accès via le champ bssid (une clé étrangère référençant la table AP) et au client via le champ mac ; le champ cert_type indique de qui est le certificat (AP, Client ou Unknown lorsque la direction EAP ne peut être déterminée). Elle conserve également le fichier source de capture (file). La table stocke tous les champs pertinents du certificat : la position dans la chaîne de certificats (cert_index), version, serial_number, signature_algorithm, les noms distinctifs complets issuer et subject, les dates de validité (not_before, not_after), les composants décomposés du sujet (subject_cn, subject_o, subject_ou) et de l'émetteur (issuer_cn, issuer_o, issuer_ou), public_key_algorithm, public_key_size, public_key_curve (EC) et public_key_exponent (RSA), ainsi que sha1_fingerprint et sha256_fingerprint. Elle extrait également les extensions X.509 les plus pertinentes : Subject Alternative Names (subject_alt_names), key_usage, ext_key_usage, Basic Constraints (is_ca, path_length), un indicateur self_signed, les Authority et Subject Key Identifiers (authority_key_id, subject_key_id), les URL CRL et OCSP (crl_urls, ocsp_urls) et la durée de vie du certificat en jours (validity_days). La table utilise la combinaison de bssid et sha256_fingerprint comme clé primaire.
EAPMD5 : Cette table stocke les paires challenge/réponse EAP-MD5 capturées lors d'authentifications d'entreprise. EAP-MD5 transmet un challenge de type CHAP et une réponse MD5 en clair (en dehors de tout tunnel TLS), de sorte que la paire peut être interceptée et craquée hors ligne (hashcat -m 4800 ou eapmd5pass) pour récupérer le mot de passe. Chaque ligne enregistre les clés étrangères bssid (AP) et mac (client), identity, l'identifiant EAP (eap_id) qui relie la demande et la réponse, challenge, response, une ligne hashcat prête à l'emploi, et le fichier source (file). Elle utilise la combinaison de bssid, mac et eap_id comme clé primaire.
HandshakeAP : Cette vue sélectionne le BSSID du point d'accès, le SSID du point d'accès, l'adresse MAC du périphérique client qui a effectué le handshake, le fabricant du périphérique client, le fichier contenant le handshake et la sortie hashcat. Elle joint les tables Handshake, AP et Client respectivement sur le BSSID et l'adresse MAC, et classe les résultats par BSSID.
HandshakeAPUnique : Cette vue sélectionne le BSSID du point d'accès, le SSID du point d'accès, l'adresse MAC du périphérique client qui a effectué le handshake, le fabricant du périphérique client, le fichier contenant le handshake et la sortie hashcat. Elle joint les tables Handshake, AP et Client respectivement sur le BSSID et l'adresse MAC, et filtre les résultats pour exclure les handshakes qui n'ont pas été craqués par hashcat. Les résultats sont groupés par SSID et classés par BSSID.
IdentityAP : Cette vue sélectionne le BSSID du point d'accès, le SSID du point d'accès, l'adresse MAC du périphérique client qui a effectué la demande d'identité, le fabricant du périphérique client, la chaîne d'identité et la méthode utilisée pour la demande d'identité. Elle joint les tables Identity, AP et Client respectivement sur le BSSID et l'adresse MAC, et classe les résultats par BSSID.
CertificateAP : Cette vue sélectionne le BSSID et le SSID du point d'accès ainsi que le type de certificat (cert_type), les noms communs du sujet et de l'émetteur, le sujet et l'émetteur complets, les dates de validité, l'algorithme et la taille de la clé publique, l'indicateur self_signed et sha256_fingerprint. Elle joint les tables Certificate et AP sur le BSSID et classe les résultats par BSSID.
SecurityAP : Cette vue sélectionne le BSSID et le SSID du point d'accès ainsi que wpa_version, akm_suites, pairwise_ciphers, group_cipher, l'indicateur enterprise et les colonnes de protection des trames de gestion (mfpc, mfpr). Elle lit ces colonnes directement dans la table AP (limitée aux AP qui ont des détails de sécurité) et classe les résultats par BSSID.
CapabilitiesAP : Cette vue sélectionne le BSSID et le SSID du point d'accès ainsi que ses capacités de gestion 802.11 (ft_80211r, mobility_domain_id, rrm_80211k, bss_transition_80211v, mbssid, max_bssid_indicator, csa, csa_new_channel). Elle lit ces colonnes directement dans la table AP, limitée aux AP qui annoncent au moins l'une d'entre elles, et classe les résultats par BSSID.
SummaryAP : Cette vue résume les points d'accès groupés par SSID et chiffrement, de sorte que le même SSID avec des paramètres de sécurité différents apparaisse sur des lignes séparées (pratique pour repérer les configurations mixtes ou dégradées). Pour chaque groupe, elle sélectionne le SSID, le nombre de points d'accès distincts (APs count), le type de chiffrement, la version WPA (wpa_version) et l'état de protection des trames de gestion (pmf), chaque fabricant vu dans le groupe (manuf, séparé par des virgules), si le SSID est masqué, et le nombre de clients connectés distincts (Clients count). Elle exclut les AP sans chiffrement enregistré et classe les résultats par nombre d'AP décroissant.
Table des fichiers : si le fichier existe, passer (chemin complet)
Obtenir les mots de passe des POST HTTP
Requêtes DNS