diff --git a/listener.py b/listener.py index 45babe2..65c675b 100755 --- a/listener.py +++ b/listener.py @@ -26,7 +26,7 @@ target_ap_bssid = None beacon_counts = defaultdict(int) current_channel = None include_probes = False -# deadpoint_candidates = set() +deadpoint_candidates = set() unlinked_candidates = set() bssid_channels = {} @@ -108,6 +108,7 @@ def handle_packet(pkt): beacon_counts[a2] += 1 if beacon_counts[a2] > 1: aps.add(a2) + deadpoint_candidates.add(a2) ssid = parse_ssid(pkt) if ssid: ssid_map[a2] = ssid @@ -165,7 +166,7 @@ def write_csv(outfile): "NumberofBSSIDsOnSSID": "N/A", "NumberofChannelsOnSSID": "N/A", "UnlinkedDevices": len(unlinked_candidates), - "Deadpoints": len([ap for ap in aps if is_deadpoint(ap)]) + "Deadpoints": len([ap for ap in deadpoint_candidates if is_deadpoint(ap)]) } new_file = not os.path.exists(outfile) @@ -210,7 +211,7 @@ def print_suspect_aps(): ssid = ssid_map.get(bssid, "") flags = [] if any(kw in ssid.lower() for kw in keywords): - flags.append("Likely non-AP") + flags.append("Suspicious SSID") if is_deadpoint(bssid): flags.append("Deadpoint") if flags: @@ -233,9 +234,6 @@ def channel_hopper(interface): time.sleep(CHANNEL_HOP_INTERVAL) def is_deadpoint(ap_bssid): - # Once again for debugging, pretty-print APs with no clients - if ap_bssid not in ap_clients: - print(f"[!] Deadpoint detected: {ap_bssid} (no clients)") return sum(ap_clients[ap_bssid].values()) < 2 # No meaningful client interaction # === Main ===