
Outil Bash pour des contrôles de sécurité Wi-Fi à pied en boucle, avec rapports de preuves. (re-invention du WarDriving Wi-Fi)
CyclePatrol est un seul script Bash, cp.sh. C'est un outil d'évaluation de la sécurité Wi-Fi pour le terminal.
Il fonctionne sous Linux et Android (Kali NetHunter). Il nécessite root.
L'outil s'exécute en boucle. À chaque tour, il :
Usage autorisé uniquement. CyclePatrol exécute des attaques sans fil actives. Utilisez-le uniquement sur des réseaux que vous possédez ou pour lesquels vous disposez d'une autorisation écrite de test.
Cette documentation est rédigée à partir du code source. Elle n'enseigne pas comment attaquer des réseaux. Elle explique comment l'outil est construit, comment les données circulent et où réside la logique de sécurité.
| Élément | Valeur | Source |
|---|---|---|
| Nom de l'outil | CyclePatrol | TOOL_NAME |
| Version | 1.6 | VERSION |
| Version SAR / rapport | 1 / 5 | SAR_VERSION / REPORT_VERSION |
| Langage | Bash 5+ | en-tête du script |
| Privilège | root requis | run_precheck |
| Interface par défaut | wlan2 | DEF_IFACE |
| Répertoire de logs par défaut | /sdcard/Download/wifi | DEF_LOG_DIR |
| Fichiers suivis | cp.sh, vendor/oui.json, vendor/vendors.json, README.md, LICENSE, docs/ | racine du dépôt |
| Configuration | variables d'environnement + options CLI uniquement | main |
# 1. get the code
git clone https://github.com/buybitart/cyclepatrol
cd cyclepatrol
# 2. make it runnable
chmod +x cp.sh
# 3. start (root required)
sudo ./cp.sh
Aide et liste complète des options :
./cp.sh --help
flowchart TD
M[main parse CLI] --> AI[auto_install_deps apt]
AI --> PC[run_precheck validate_env root iface tmp dirs allowlists]
PC --> RC{recon mode?}
RC -- "--recon" --> RE[run_recon airodump-ng] --> RPT1[report_recon_*.html] --> END1[exit]
RC -- default --> R0[run_recon once at start]
R0 --> LOOP[run_scan_loop]
LOOP --> MAC[stealth MAC rotate]
MAC --> SCAN[scan_band 2.4 / 5 / 6E via iw scan]
SCAN --> PARSE[parse_scan awk -> targets]
PARSE --> PT[process_target per AP, up to MAX_TARGETS]
PT --> REP[make_report report_*.html]
REP --> SLEEP[sleep COOLDOWN] --> LOOP
Voir docs/architecture.md et docs/data-flow.md pour plus de détails.
| Composant | Fonctions (exemples) | Rôle |
|---|---|---|
| Démarrage / configuration | main, validate_env, run_precheck, auto_install_deps | analyser les options, vérifier root + interface + outils, créer les répertoires temporaires |
| Contrôle de l'interface | ensure_mode, iface_set_type, iface_set_channel, iface_do_scan | mode monitor/managed, canal, scan iw |
| Furtivité | stealth_mac_rotate, stealth_gen_mac, stealth_wps_id_block | MAC aléatoire, UUID WPS aléatoire |
| Scan + analyse | scan_band, parse_scan | collecter la sortie de iw scan, analyser les beacons en champs |
| Enrichissement | get_chip, get_cves, detect_dpp_vulns, recherches dans la base de connaissances fournisseurs | OUI → fournisseur → chipset, indices CVE, vérifications DPP |
| Contrôle de périmètre | active_attack_permitted, allowlist_init_active | décider si un module actif peut s'exécuter sur un BSSID |
| Modules d'évaluation | attack_pixie, attack_vendor, attack_pmkid, attack_deauth_handshake, attack_wpa_psk_brute, attack_wpa_enterprise_eviltwin | les tests sans fil (encapsulent des outils externes) |
| Cassage hors ligne | offline_crack, _hashcat_22000, _aircrack_cap | casser un PMKID / handshake capturé |
| Preuves + sortie | sar_store_record, save_proof, make_report, recon_report | faits JSONL, fichiers de preuve, rapports HTML |
| Localisation | location_fix, location_nmea_feeder | géolocalisation GPS pour le war-driving (Android / gpsd) |
Carte complète des fonctions : docs/project-structure.md.
CyclePatrol est un orchestrateur. Il appelle les outils sans fil Linux standard en tant que sous-processus.
| Outil | Utilisé par | Objectif |
|---|---|---|
iw, ip, nmcli, macchanger | interface + furtivité | scan, mode, canal, MAC |
reaver | attack_pixie, attack_vendor, attack_null, attack_empty, attack_user_pin | échange avec le registrar WPS |
pixiewps | attack_pixie | récupération hors ligne du PIN WPS |
wpa_supplicant, wpa_cli, wpa_passphrase | WPS, verify_psk_live, attack_wpa_psk_brute | association, vérification de clé en direct |
hcxdumptool, hcxpcapngtool | attack_pmkid, attack_pmkid_active | capture PMKID → hashcat 22000 |
tcpdump | eapol_passive_capture | capture EAPOL passive |
airodump-ng, aireplay-ng, mdk4 | attack_deauth_handshake, run_recon | capture, deauth, recon |
hashcat, aircrack-ng | offline_crack | cassage hors ligne des captures |
eaphammer, hostapd-wpe | attack_wpa_enterprise_eviltwin | capture d'identifiants via evil-twin 802.1X |
dragondrain, dragontime | sae_dos_dragondrain, sae_timing_dragontime | vérifications WPA3 / SAE. Fonctions définies mais jamais appelées (code mort), voir docs/security.md |
tshark, airgraph-ng | recon_report | analyse de l'uptime, graphiques |
gpsd, termux-location, gpspipe | localisation | position GPS / étiquetage |
jq | base de connaissances fournisseurs | recherche JSON (facultatif) |
Détail des modules et contrôle d'accès : docs/modules.md.
Tout est écrit sous LOG_DIR (par défaut /sdcard/Download/wifi).
Le répertoire est créé avec chmod 700. Les fichiers de sortie utilisent chmod 600.
| Chemin | Contenu |
|---|---|
sar.jsonl | faits par AP, un objet JSON par ligne |
cp_audit.log | journal d'audit : AP, méthode, résultat |
report_*.html | rapport d'évaluation (constats, gravité, preuves) |
report_recon_*.html | rapport d'enquête de reconnaissance passive |
proof/proof_*.conf | preuve d'un constat confirmé : PIN, PSK, SHA-256, vérification en direct |
proof/proofs.jsonl | manifeste de chaîne de possession : une ligne par fichier de preuve, avec son SHA-256 |
proof/handshake_*.cap | handshake 4-way capturé |
proof/pmkid_*.22000 | PMKID au format hashcat 22000 |
known_bssids.txt, processed_bssids.txt | état (ignorer ce qui est déjà fait) |