Wireless Lab 01 — Wireless Survey Analyzer
WARMUP: Chapters 2–5 (802.11, handshake, WPA3/802.1X, evil twins).
Threat model
From the parking lot, an attacker passively captures your Wi-Fi and stands up an evil twin (your SSID, a stronger signal) to harvest traffic or credentials. The "attacker" this lab analyzes is a weak or impersonated wireless link: an open/WEP network, a WPA2-PSK with a crackable passphrase, or a rogue AP cloning a managed SSID. The engine turns a scan into posture ratings, crackability verdicts, and rogue/evil-twin findings against an approved BSSID inventory.
What you build (lab.py)
classify_posture(ap)→(rating, issues):open-network,wep-broken,weak-passphrase,pmkid-exposed,no-mfp; rating critical/weak/acceptable/strong.crackability(ap)→trivial/offline-feasible/offline-hard/online-only/n/a-enterprise— encoding that WPA2-PSK = passphrase entropy and WPA3-SAE resists offline cracking.detect_rogues(scan, approved)→ evil-twin/rogue findings (known SSID on an unapproved BSSID; open clone of a managed SSID = critical).
Attack cases the tests cover
- Open/WEP = critical + trivial; WPA2-PSK weak/PMKID = offline-feasible; WPA2-PSK strong = offline-hard; WPA3-SAE = strong + online-only; Enterprise = n/a.
- Missing 802.11w flagged; an evil twin (SSID match, unapproved BSSID) detected; an open clone rated critical; an unknown SSID is not flagged; findings sorted by severity.
Run
pip install -r requirements.txt
LAB_MODULE=solution pytest -q
pytest -q
Hardening / extensions
- Add channel/RSSI anomaly scoring (a known SSID suddenly louder or on a new channel).
- Flag WPA3 transition mode (downgrade-to-WPA2) and Enterprise without server-cert validation.
- Ingest a real
airodump/Kismet CSV and locate rogues by signal triangulation.
Interview / resume
"Built a Wi-Fi survey analyzer that rates AP posture, judges handshake crackability (WPA2-PSK offline vs WPA3-SAE online), and detects evil-twin/rogue APs against an approved inventory — encoding that a matching SSID proves nothing."
Limitations: analyzes scan metadata (no live capture); crackability is a category, not a time estimate; rogue detection keys on the approved-BSSID inventory.