
루프에서 도보 Wi-Fi 보안 점검을 수행하고 증거 보고서를 생성하는 Bash 도구입니다.
CyclePatrol은 하나의 Bash 스크립트 cp.sh입니다. 터미널용 Wi-Fi 보안 평가 도구입니다.
Linux와 Android(Kali NetHunter)에서 실행됩니다. root 권한이 필요합니다.
이 도구는 루프로 실행됩니다. 각 라운드에서:
승인된 사용만 허용됩니다. CyclePatrol은 능동 무선 공격을 실행합니다. 소유한 네트워크 또는 서면으로 테스트 허가를 받은 네트워크에서만 사용하십시오.
이 문서는 소스 코드만을 기반으로 작성되었습니다. 네트워크를 공격하는 방법은 설명하지 않습니다. 도구가 어떻게 구성되어 있는지, 데이터가 어떻게 이동하는지, 보안 로직이 어디에 있는지를 설명합니다.
| 항목 | 값 | 출처 |
|---|---|---|
| 도구 이름 | CyclePatrol | TOOL_NAME |
| 버전 | 1.3 | VERSION |
| SAR / 보고서 버전 | 1 / 4 | 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 | 저장소 루트 |
| 테스트 / CI | 저장소에 없음 | 저장소 루트 |
| 구성 | 환경 변수 + 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
./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 | 모니터/관리 모드, 채널, 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, vendor 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 O6 참조 |
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/handshake_*.cap | 캡처된 4-way 핸드셰이크 |
proof/pmkid_*.22000 | hashcat 22000 형식의 PMKID |
proof/eapol_*.pcap | EAPOL 캡처 |
known_bssids.txt, processed_bssids.txt | 상태 (이미 완료된 항목 건너뛰기) |
recon_reported.txt, vuln_reported.txt | 보고서 중복 제거 상태 |
보고서 심각도: Critical / High / Medium / Low.
발견 상태: confirmed / potential / beacon-based / config-based.
REVEAL_CREDS=1이 아닌 한 보고서 본문에서 비밀 정보는 마스킹됩니다.
필드 스키마 및 보고서 모델: docs/outputs.md.
| 파일 | 내용 |
|---|---|
docs/architecture.md | 구성 요소, 제어 흐름, 신뢰 경계, 다이어그램 |
docs/data-flow.md | 스캔 → 파싱 → 처리 → 보고, 필드 파이프라인, 범위 흐름 |
docs/modules.md | 모든 평가 모듈, 래핑하는 도구, 범위 게이트 |
docs/configuration.md | 모든 환경 변수 및 CLI 플래그 |
docs/outputs.md | sar.jsonl 스키마, 증명 파일, 보고서 모델 |
docs/attack-surface.md | 진입점, 외부 의존성 맵, 런타임 다이어그램, 해당되지 않는 항목 |
docs/setup-and-testing.md | 요구 사항, 설치, 실행, 검증 명령 |
docs/project-structure.md | 파일 및 전체 함수 맵 |
Aliaksandr Zasinets (BITART).
MIT. LICENSE 참조. Copyright (c) 2026 Aliaksandr Zasinets.