
루프에서 도보 Wi-Fi 보안 점검을 수행하고 증거 보고서를 생성하는 Bash 도구입니다. (재발명된 Wi-Fi WarDriving)
CyclePatrol은 단일 Bash 스크립트 cp.sh입니다. 터미널용 Wi-Fi 보안 평가 도구입니다.
Linux와 Android(Kali NetHunter)에서 실행됩니다. root 권한이 필요합니다.
이 도구는 루프로 실행됩니다. 각 라운드에서 다음을 수행합니다:
승인된 사용만 허용됩니다. CyclePatrol은 능동 무선 공격을 실행합니다. 소유한 네트워크 또는 테스트에 대한 서면 허가를 받은 네트워크에서만 사용하십시오.
이 문서는 소스 코드를 기반으로 작성되었습니다. 네트워크를 공격하는 방법을 가르치지 않습니다. 이 문서는 도구가 어떻게 구축되는지, 데이터가 어떻게 이동하는지, 보안 로직이 어디에 있는지를 설명합니다.
| 항목 | 값 | 출처 |
|---|---|---|
| 도구 이름 | CyclePatrol | TOOL_NAME |
| 버전 | 1.6 | VERSION |
| SAR / 보고서 버전 | 1 / 5 | SAR_VERSION / REPORT_VERSION |
| 언어 | Bash 5+ | 스크립트 헤더 |
| 권한 | root 필요 | run_precheck |
| 기본 인터페이스 | wlan2 | DEF_IFACE |
| 기본 로그 디렉터리 | /sdcard/Download/wifi | DEF_LOG_DIR |
| 추적 파일 | cp.sh, vendor/oui.json, vendor/vendors.json, README.md, LICENSE, docs/ | 저장소 루트 |
| 구성 | 환경 변수 + 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
도움말 및 전체 옵션 목록:
./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
자세한 내용은 docs/architecture.md와 docs/data-flow.md를 참조하세요.
| 구성 요소 | 기능 (예시) | 역할 |
|---|---|---|
| 시작 / 설정 | main, validate_env, run_precheck, auto_install_deps | 플래그 파싱, root + 인터페이스 + 도구 확인, 임시 디렉터리 생성 |
| 인터페이스 제어 | ensure_mode, iface_set_type, iface_set_channel, iface_do_scan | monitor/managed 모드, 채널, iw 스캔 |
| 스텔스 | stealth_mac_rotate, stealth_gen_mac, stealth_wps_id_block | 랜덤 MAC, 랜덤 WPS UUID |
| 스캔 + 파싱 | scan_band, parse_scan | iw scan 출력 수집, 비콘을 필드로 파싱 |
| 정보 보강 | get_chip, get_cves, detect_dpp_vulns, 벤더 KB 조회 | OUI → 벤더 → 칩셋, CVE 힌트, DPP 검사 |
| 범위 게이트 | active_attack_permitted, allowlist_init_active | BSSID에서 활성 모듈 실행 가능 여부 결정 |
| 평가 모듈 | attack_pixie, attack_vendor, attack_pmkid, attack_deauth_handshake, attack_wpa_psk_brute, attack_wpa_enterprise_eviltwin | 무선 테스트 (외부 도구 래핑) |
| 오프라인 크랙 | offline_crack, _hashcat_22000, _aircrack_cap | 캡처된 PMKID / 핸드셰이크 크랙 |
| 증거 + 출력 | sar_store_record, save_proof, make_report, recon_report | JSONL 사실, 증거 파일, HTML 보고서 |
| 위치 | location_fix, location_nmea_feeder | 워드라이빙용 GPS 태깅 (Android / gpsd) |
전체 함수 맵: docs/project-structure.md.
CyclePatrol은 오케스트레이터입니다. 표준 Linux 무선 도구를 서브프로세스로 호출합니다.
| 도구 | 사용처 | 목적 |
|---|---|---|
iw, ip, nmcli, macchanger | 인터페이스 + 스텔스 | 스캔, 모드, 채널, MAC |
reaver | attack_pixie, attack_vendor, attack_null, attack_empty, attack_user_pin | WPS 등록자 교환 |
pixiewps | attack_pixie | WPS 오프라인 PIN 복구 |
wpa_supplicant, wpa_cli, wpa_passphrase | WPS, verify_psk_live, attack_wpa_psk_brute | 연결, 실시간 키 확인 |
hcxdumptool, hcxpcapngtool | attack_pmkid, attack_pmkid_active | PMKID 캡처 → hashcat 22000 |
tcpdump | eapol_passive_capture | 수동 EAPOL 캡처 |
airodump-ng, aireplay-ng, mdk4 | attack_deauth_handshake, run_recon | 캡처, 디인증, 정찰 |
hashcat, aircrack-ng | offline_crack | 캡처 파일 오프라인 크랙 |
eaphammer, hostapd-wpe | attack_wpa_enterprise_eviltwin | 802.1X 이블트윈 자격 증명 캡처 |
dragondrain, dragontime | sae_dos_dragondrain, sae_timing_dragontime | WPA3 / SAE 검사. 함수는 정의되었으나 호출되지 않음 (데드 코드), docs/security.md 참조 |
tshark, airgraph-ng | recon_report | 가동 시간 파싱, 그래프 |
gpsd, termux-location, gpspipe | 위치 | GPS 측위 / 태깅 |
jq | 벤더 KB | JSON 조회 (선택 사항) |
모듈 세부 사항 및 게이팅: docs/modules.md.
모든 것이 LOG_DIR (기본값 /sdcard/Download/wifi) 아래에 기록됩니다.
디렉터리는 chmod 700으로 생성됩니다. 출력 파일은 chmod 600을 사용합니다.
| 경로 | 내용 |
|---|---|
sar.jsonl | AP별 사실, 한 줄에 하나의 JSON 객체 |
cp_audit.log | 감사 로그: AP, 방법, 결과 |
report_*.html | 평가 보고서 (발견 사항, 심각도, 증거) |
report_recon_*.html | 수동 정찰 조사 보고서 |
proof/proof_*.conf | 확인된 발견 사항의 증거: PIN, PSK, SHA-256, 실시간 검증 |
proof/proofs.jsonl | 증거 보관 연계 매니페스트: 증거 파일당 한 줄, SHA-256 포함 |
proof/handshake_*.cap | 캡처된 4-way 핸드셰이크 |
proof/pmkid_*.22000 | hashcat 22000 형식의 PMKID |
known_bssids.txt, processed_bssids.txt | 상태 (이미 완료된 항목 건너뛰기) |
보고서 심각도는 Critical / High / Medium / Low / Info입니다. 발견 사항은 키가 실제로 복구되었고 그에 대한 증명 파일이 존재하는 경우에만 Critical로 분류됩니다. 보고서는 증명으로 뒷받침된 발견 사항을 보여주는 Simple view로 열립니다. Technical view 토글을 켜면 posture 발견 사항, 증거 테이블, 진단 로그가 추가됩니다. Posture 발견 사항(Medium / Low / Info)은 해당 등급을 뒷받침하는 측정된 beacon 사실을 함께 제공합니다. 필드 스키마와 보고서 모델은 docs/outputs.md에 있습니다.
| 파일 | 내용 |
|---|---|
docs/architecture.md | 컴포넌트, 제어 흐름, 신뢰 경계, 다이어그램 |
docs/data-flow.md | 스캔 → 파싱 → 처리 → 보고, 필드 파이프라인, 스코프 흐름 |
docs/modules.md | 모든 평가 모듈, 각 모듈이 감싸는 도구, 해당 스코프 게이트 |
docs/configuration.md | 모든 환경 변수와 CLI 플래그 |
docs/outputs.md | sar.jsonl 스키마, 증명 파일, 보고서 모델 |
docs/security.md | 스코프 모델, 기본 posture, 디스크 상의 시크릿, 확인된 관찰 사항 |
docs/attack-surface.md | 진입점, 외부 의존성 맵, 런타임 다이어그램, 해당되지 않는 항목 |
docs/setup-and-testing.md | 요구 사항, 설치, 실행, 검증 명령 |
docs/project-structure.md | 파일 및 전체 함수 맵 |
Aliaksandr Zasinets (BITART).
MIT. LICENSE를 참조하세요. Copyright (c) 2026 Aliaksandr Zasinets.