diff --git a/listener.py b/listener.py index b7bb06d..0ff3c9a 100755 --- a/listener.py +++ b/listener.py @@ -1,14 +1,16 @@ #!/usr/bin/env python3 -import os -import signal import csv -import sys +import os +import re +import signal import subprocess +import sys import time -from scapy.all import sniff, Dot11, RadioTap + +from argparse import ArgumentParser from collections import defaultdict from datetime import datetime -from argparse import ArgumentParser +from scapy.all import sniff, Dot11, RadioTap # === Globals === running = True @@ -151,14 +153,15 @@ def reset_interface(interface): def get_connected_bssid(interface): try: out = subprocess.check_output(["iw", interface, "link"]).decode() - for line in out.splitlines(): - if "Connected to" in line: - return line.strip().split()[-1].lower() + match = re.search(r"Connected to ([0-9a-f:]{17})", out.lower()) + if match: + return match.group(1) + print("[!] No valid MAC address found in iw link output.") + return None except Exception as e: print(f"[!] Failed to get connected BSSID for {interface}: {e}") return None - # === Main === def main(): parser = ArgumentParser()