Enhance analyze_pcap function to return additional SSID metrics including number of BSSIDs, average signal, max signal, and number of channels for improved analysis.
This commit is contained in:
parent
cc4f4f0adb
commit
246dfb7aee
1 changed files with 18 additions and 4 deletions
22
enrich.py
22
enrich.py
|
@ -378,6 +378,8 @@ def analyze_pcap(pcapng_path, start_ts, end_ts, ap_bssid, ap_channel):
|
|||
except Exception as e:
|
||||
continue
|
||||
|
||||
our_ssid = bssid_to_ssid.get(ap_bssid, None)
|
||||
|
||||
clients_on_ap = get_clients_on_ap(filtered_packets, ap_bssid)
|
||||
clients_on_channel = get_clients_on_channel(filtered_packets, ap_channel, ap_bssid)
|
||||
aps_on_channel = get_aps_on_channel(filtered_packets, ap_channel)
|
||||
|
@ -385,11 +387,18 @@ def analyze_pcap(pcapng_path, start_ts, end_ts, ap_bssid, ap_channel):
|
|||
unlinked_devices = get_unlinked_devices(filtered_packets, ap_channel)
|
||||
cisco_avg_reported_clients = mean(cisco_reported_clients) if cisco_reported_clients else 0
|
||||
cisco_max_reported_clients = max(cisco_reported_clients) if cisco_reported_clients else 0
|
||||
num_bssids = len(ssid_to_bssids[our_ssid]) if our_ssid in ssid_to_bssids else 0
|
||||
average_signal = mean(ssid_signals[our_ssid]) if our_ssid in ssid_signals else 0
|
||||
max_ssid_signal = max(ssid_signals[our_ssid]) if our_ssid in ssid_signals else 0
|
||||
num_channels_ssid = len(ssid_to_bssids[our_ssid]) if our_ssid in ssid_to_bssids else 0
|
||||
|
||||
finally:
|
||||
cap.close()
|
||||
|
||||
return clients_on_ap, clients_on_channel, aps_on_channel, avg_ap_signal, max_ap_signal, unlinked_devices, cisco_avg_reported_clients, cisco_max_reported_clients
|
||||
return (clients_on_ap, clients_on_channel, aps_on_channel,
|
||||
avg_ap_signal, max_ap_signal, unlinked_devices,
|
||||
cisco_avg_reported_clients, cisco_max_reported_clients, num_bssids,
|
||||
average_signal, max_ssid_signal, num_channels_ssid)
|
||||
|
||||
def main():
|
||||
args = parse_args()
|
||||
|
@ -418,7 +427,8 @@ def main():
|
|||
fieldnames = reader.fieldnames + [
|
||||
'ClientsOnAP', 'ClientsOnChannel', 'APsOnChannel',
|
||||
'AvgAPSignal', 'StrongestAPSignal', 'UnlinkedDevices',
|
||||
'CiscoAvgReportedClients', 'CiscoMaxReportedClients'
|
||||
'CiscoAvgReportedClients', 'CiscoMaxReportedClients', 'NumberofBSSIDsOnSSID',
|
||||
'AvgSSIDSignal', 'MaxSSIDSignal', 'NumberofChannelsOnSSID'
|
||||
]
|
||||
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
|
||||
writer.writeheader()
|
||||
|
@ -433,7 +443,7 @@ def main():
|
|||
writer.writerow(row)
|
||||
continue
|
||||
|
||||
clients_ap, clients_chan, aps_chan, avg_signal, strongest_signal, unlinked, cisco_avg_reported_clients, cisco_max_reported_clients = analyze_pcap(args.pcapng, tstart, tend, ap_bssid, ap_channel)
|
||||
clients_ap, clients_chan, aps_chan, avg_signal, strongest_signal, unlinked, cisco_avg_reported_clients, cisco_max_reported_clients, num_bssids, average_signal, max_ssid_signal = analyze_pcap(args.pcapng, tstart, tend, ap_bssid, ap_channel)
|
||||
|
||||
row.update({
|
||||
'ClientsOnAP': clients_ap,
|
||||
|
@ -443,7 +453,11 @@ def main():
|
|||
'StrongestAPSignal': strongest_signal,
|
||||
'UnlinkedDevices': unlinked,
|
||||
'CiscoAvgReportedClients': cisco_avg_reported_clients,
|
||||
'CiscoMaxReportedClients': cisco_max_reported_clients
|
||||
'CiscoMaxReportedClients': cisco_max_reported_clients,
|
||||
'NumberofBSSIDs': num_bssids,
|
||||
'AvgSSIDSignal': average_signal,
|
||||
'MaxSSIDSignal': max_ssid_signal,
|
||||
'NumberofChannelsOnSSID': num_bssids
|
||||
})
|
||||
|
||||
writer.writerow(row)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue