diff --git a/enrich.py b/enrich.py index 5f2bac0..75f9484 100755 --- a/enrich.py +++ b/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)