From 21fcc807ad83899ac2faac6f34272b6b4adbe37d Mon Sep 17 00:00:00 2001 From: Yaro Kasear Date: Tue, 29 Apr 2025 13:00:29 -0500 Subject: [PATCH] Refactor debug statements in _count_unlinked_devices and related logic for clarity and efficiency --- enrichment/indexed_capture.py | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/enrichment/indexed_capture.py b/enrichment/indexed_capture.py index ed92587..c0016be 100644 --- a/enrichment/indexed_capture.py +++ b/enrichment/indexed_capture.py @@ -168,23 +168,14 @@ class IndexedCapture: # Determine subtype subtype = int(getattr(wlan, 'type_subtype', '0'), 16) - # Always debug if resolved channel == AP's channel - if channel == ap_channel: - print(f"[DEBUG] Packet: subtype={subtype}, bssid={bssid}, sa={sa}, da={da}") - # Track APs (beacons / probe responses only) if subtype in (5, 8) and bssid: window_aps[channel].add(bssid) - if channel == ap_channel: - print(f"[DEBUG] [AP] Adding bssid={bssid} to window_aps[{channel}]") # Track clients (always) for mac in (sa, da): if mac and mac != 'ff:ff:ff:ff:ff:ff': window_clients[channel].add(mac) - if channel == ap_channel: - print(f"[DEBUG] [CLIENT] Adding mac={mac} to window_clients[{channel}]") - # Track signals signal = getattr(radio, 'dbm_antsignal', None) @@ -248,15 +239,15 @@ class IndexedCapture: def _count_unlinked_devices(self, packets, ap_channel): aps = self.channel_to_aps.get(ap_channel, set()) ghost_candidates = set() - + for packet in packets: try: if 'radiotap' not in packet or 'wlan' not in packet: continue - + radio = packet.radiotap wlan = packet.wlan - + # Must be on our AP's channel if hasattr(radio, 'channel') and hasattr(radio.channel, 'freq'): freq = int(radio.channel.freq) @@ -265,23 +256,23 @@ class IndexedCapture: continue else: continue - + sa = getattr(wlan, 'sa', '').lower() da = getattr(wlan, 'da', '').lower() bssid = getattr(wlan, 'bssid', '').lower() - + # If the packet is *talking to* any known AP, it's **linked**, not ghost if sa in aps or da in aps or bssid in aps: continue # Legit traffic, skip - + # Otherwise, these are "ghost candidates" for mac in (sa, da): if mac and mac != 'ff:ff:ff:ff:ff:ff': ghost_candidates.add(mac) - + except Exception: continue - + return len(ghost_candidates)