
Herramienta Bash para comprobaciones de seguridad Wi-Fi a pie en bucle, con informes de evidencia. (reinvención del WarDriving Wi-Fi)
CyclePatrol es un único script Bash, cp.sh. Es una herramienta de evaluación de seguridad Wi-Fi para la terminal.
Se ejecuta en Linux y Android (Kali NetHunter). Requiere root.
La herramienta se ejecuta en un bucle. En cada ronda:
Solo para uso autorizado. CyclePatrol ejecuta ataques inalámbricos activos. Úsalo únicamente en redes de tu propiedad o para las que tengas permiso por escrito para probar.
Esta documentación está escrita a partir del código fuente. No enseña cómo atacar redes. Explica cómo está construida la herramienta, cómo se mueven los datos y dónde reside la lógica de seguridad.
| Elemento | Valor | Origen |
|---|---|---|
| Nombre de la herramienta | CyclePatrol | TOOL_NAME |
| Versión | 1.6 | VERSION |
| Versión de SAR / informe | 1 / 5 | SAR_VERSION / REPORT_VERSION |
| Lenguaje | Bash 5+ | cabecera del script |
| Privilegios | se requiere root | run_precheck |
| Interfaz predeterminada | wlan2 | DEF_IFACE |
| Directorio de logs predeterminado | /sdcard/Download/wifi | DEF_LOG_DIR |
| Archivos rastreados | cp.sh, vendor/oui.json, vendor/vendors.json, README.md, LICENSE, docs/ | raíz del repositorio |
| Configuración | solo variables de entorno + flags de CLI | 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
Ayuda y la lista completa de opciones:
./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
Consulta docs/architecture.md y docs/data-flow.md para más detalle.
| Componente | Funciones (ejemplos) | Tarea |
|---|---|---|
| Arranque / configuración | main, validate_env, run_precheck, auto_install_deps | analizar flags, comprobar root + interfaz + herramientas, crear directorios temporales |
| Control de interfaz | ensure_mode, iface_set_type, iface_set_channel, iface_do_scan | modo monitor/managed, canal, escaneo con iw |
| Sigilo | stealth_mac_rotate, stealth_gen_mac, stealth_wps_id_block | MAC aleatoria, UUID WPS aleatorio |
| Escaneo + análisis | scan_band, parse_scan | recopilar la salida de iw scan, analizar beacons en campos |
| Enriquecimiento | get_chip, get_cves, detect_dpp_vulns, búsquedas en la KB de fabricantes | OUI → fabricante → chipset, indicios de CVE, comprobaciones DPP |
| Control de alcance | active_attack_permitted, allowlist_init_active | decidir si un módulo activo puede ejecutarse sobre un BSSID |
| Módulos de evaluación | attack_pixie, attack_vendor, attack_pmkid, attack_deauth_handshake, attack_wpa_psk_brute, attack_wpa_enterprise_eviltwin | las pruebas inalámbricas (envuelven herramientas externas) |
| Cracking offline | offline_crack, _hashcat_22000, _aircrack_cap | crackear el PMKID / handshake capturado |
| Evidencias + salida | sar_store_record, save_proof, make_report, recon_report | hechos en JSONL, archivos de prueba, informes HTML |
| Ubicación | location_fix, location_nmea_feeder | etiquetado GPS para war-driving (Android / gpsd) |
Mapa completo de funciones: docs/project-structure.md.
CyclePatrol es un orquestador. Invoca herramientas inalámbricas estándar de Linux como subprocesos.
| Herramienta | Usada por | Propósito |
|---|---|---|
iw, ip, nmcli, macchanger | interfaz + sigilo | escaneo, modo, canal, MAC |
reaver | attack_pixie, attack_vendor, attack_null, attack_empty, attack_user_pin | intercambio con el registrador WPS |
pixiewps | attack_pixie | recuperación offline del PIN WPS |
wpa_supplicant, wpa_cli, wpa_passphrase | WPS, verify_psk_live, attack_wpa_psk_brute | asociación, comprobación de clave en vivo |
hcxdumptool, hcxpcapngtool | attack_pmkid, attack_pmkid_active | captura de PMKID → hashcat 22000 |
tcpdump | eapol_passive_capture | captura pasiva de EAPOL |
airodump-ng, aireplay-ng, mdk4 | attack_deauth_handshake, run_recon | captura, deauth, recon |
hashcat, aircrack-ng | offline_crack | cracking offline de las capturas |
eaphammer, hostapd-wpe | attack_wpa_enterprise_eviltwin | captura de credenciales mediante evil-twin 802.1X |
dragondrain, dragontime | sae_dos_dragondrain, sae_timing_dragontime | comprobaciones WPA3 / SAE. Funciones definidas pero nunca invocadas (código muerto), consulta docs/security.md |
tshark, airgraph-ng | recon_report | análisis de uptime, gráficos |
gpsd, termux-location, gpspipe | ubicación | fix / etiquetado GPS |
jq | KB de fabricantes | búsqueda JSON (opcional) |
Detalle de módulos y control de ejecución: docs/modules.md.
Todo se escribe bajo LOG_DIR (por defecto /sdcard/Download/wifi).
El directorio se crea con chmod 700. Los archivos de salida usan chmod 600.
| Ruta | Qué |
|---|---|
sar.jsonl | hechos por AP, un objeto JSON por línea |
cp_audit.log | registro de auditoría: AP, método, resultado |
report_*.html | informe de evaluación (hallazgos, severidad, evidencias) |
report_recon_*.html | informe de reconocimiento pasivo |
proof/proof_*.conf | prueba de un hallazgo confirmado: PIN, PSK, SHA-256, verificación en vivo |
proof/proofs.jsonl | manifiesto de cadena de custodia: una línea por archivo de prueba, con su SHA-256 |
proof/handshake_*.cap | handshake de 4 vías capturado |
proof/pmkid_*.22000 | PMKID en formato hashcat 22000 |
known_bssids.txt, processed_bssids.txt | estado (omitir los ya procesados) |