Compare commits
2 commits
4891f0bdfe
...
e3c3647a7e
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e3c3647a7e | ||
![]() |
1d2fafb4e3 |
1 changed files with 11 additions and 7 deletions
18
enrich.py
18
enrich.py
|
@ -305,6 +305,7 @@ def analyze_pcap(pcapng_path, start_ts, end_ts, ap_bssid, ap_channel):
|
||||||
ssid_to_bssids = defaultdict(set)
|
ssid_to_bssids = defaultdict(set)
|
||||||
bssid_to_ssid = {}
|
bssid_to_ssid = {}
|
||||||
cisco_reported_clients = []
|
cisco_reported_clients = []
|
||||||
|
ssid_packet_counts = defaultdict(int)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Filter packets manually by timestamp
|
# Filter packets manually by timestamp
|
||||||
|
@ -374,7 +375,7 @@ def analyze_pcap(pcapng_path, start_ts, end_ts, ap_bssid, ap_channel):
|
||||||
|
|
||||||
if ssid:
|
if ssid:
|
||||||
ssid_hidden_status[ssid] = hidden_ssid
|
ssid_hidden_status[ssid] = hidden_ssid
|
||||||
|
ssid_packet_counts[ssid] += 1
|
||||||
|
|
||||||
# Cisco Client Count
|
# Cisco Client Count
|
||||||
if tag_number == '133':
|
if tag_number == '133':
|
||||||
|
@ -430,17 +431,19 @@ def analyze_pcap(pcapng_path, start_ts, end_ts, ap_bssid, ap_channel):
|
||||||
'Min_Signal': min(signals) if signals else 0,
|
'Min_Signal': min(signals) if signals else 0,
|
||||||
'Clients_Seen': len(ssid_clients.get(ssid, [])),
|
'Clients_Seen': len(ssid_clients.get(ssid, [])),
|
||||||
'CiscoAvgClients': round(mean(cisco_reported_clients), 2) if cisco_reported_clients else 0,
|
'CiscoAvgClients': round(mean(cisco_reported_clients), 2) if cisco_reported_clients else 0,
|
||||||
'CiscoMaxClients': max(cisco_reported_clients) if cisco_reported_clients else 0
|
'CiscoMaxClients': max(cisco_reported_clients) if cisco_reported_clients else 0,
|
||||||
|
'PacketCount': ssid_packet_counts[ssid]
|
||||||
})
|
})
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
packet_count = len(filtered_packets)
|
||||||
cap.close()
|
cap.close()
|
||||||
|
|
||||||
return (clients_on_ap, clients_on_channel, aps_on_channel,
|
return (clients_on_ap, clients_on_channel, aps_on_channel,
|
||||||
avg_ap_signal, max_ap_signal, unlinked_devices,
|
avg_ap_signal, max_ap_signal, unlinked_devices,
|
||||||
cisco_avg_reported_clients, cisco_max_reported_clients, num_bssids,
|
cisco_avg_reported_clients, cisco_max_reported_clients, num_bssids,
|
||||||
average_signal, max_ssid_signal, num_channels_ssid,
|
average_signal, max_ssid_signal, num_channels_ssid,
|
||||||
ssid_summary)
|
ssid_summary, packet_count)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = parse_args()
|
args = parse_args()
|
||||||
|
@ -470,7 +473,7 @@ def main():
|
||||||
'ClientsOnAP', 'ClientsOnChannel', 'APsOnChannel',
|
'ClientsOnAP', 'ClientsOnChannel', 'APsOnChannel',
|
||||||
'AvgAPSignal', 'StrongestAPSignal', 'UnlinkedDevices',
|
'AvgAPSignal', 'StrongestAPSignal', 'UnlinkedDevices',
|
||||||
'CiscoAvgReportedClients', 'CiscoMaxReportedClients', 'NumberofBSSIDsOnSSID',
|
'CiscoAvgReportedClients', 'CiscoMaxReportedClients', 'NumberofBSSIDsOnSSID',
|
||||||
'AvgSSIDSignal', 'MaxSSIDSignal', 'NumberofChannelsOnSSID'
|
'AvgSSIDSignal', 'MaxSSIDSignal', 'NumberofChannelsOnSSID', 'PacketCount'
|
||||||
]
|
]
|
||||||
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
|
writer = csv.DictWriter(outfile, fieldnames=fieldnames)
|
||||||
writer.writeheader()
|
writer.writeheader()
|
||||||
|
@ -489,7 +492,7 @@ def main():
|
||||||
avg_signal, strongest_signal, unlinked, \
|
avg_signal, strongest_signal, unlinked, \
|
||||||
cisco_avg_reported_clients, cisco_max_reported_clients, num_bssids, \
|
cisco_avg_reported_clients, cisco_max_reported_clients, num_bssids, \
|
||||||
average_signal, max_ssid_signal, num_channels_ssid, \
|
average_signal, max_ssid_signal, num_channels_ssid, \
|
||||||
ssid_summary = analyze_pcap(args.pcapng, tstart, tend, ap_bssid, ap_channel)
|
ssid_summary, packet_count = analyze_pcap(args.pcapng, tstart, tend, ap_bssid, ap_channel)
|
||||||
|
|
||||||
row.update({
|
row.update({
|
||||||
'ClientsOnAP': clients_ap,
|
'ClientsOnAP': clients_ap,
|
||||||
|
@ -503,7 +506,8 @@ def main():
|
||||||
'NumberofBSSIDsOnSSID': num_bssids,
|
'NumberofBSSIDsOnSSID': num_bssids,
|
||||||
'AvgSSIDSignal': average_signal,
|
'AvgSSIDSignal': average_signal,
|
||||||
'MaxSSIDSignal': max_ssid_signal,
|
'MaxSSIDSignal': max_ssid_signal,
|
||||||
'NumberofChannelsOnSSID': num_channels_ssid
|
'NumberofChannelsOnSSID': num_channels_ssid,
|
||||||
|
'PacketCount': packet_count
|
||||||
})
|
})
|
||||||
|
|
||||||
writer.writerow(row)
|
writer.writerow(row)
|
||||||
|
@ -514,7 +518,7 @@ def main():
|
||||||
with open(ssid_outfile, 'w', newline='', encoding='utf-8') as f:
|
with open(ssid_outfile, 'w', newline='', encoding='utf-8') as f:
|
||||||
fieldnames = [
|
fieldnames = [
|
||||||
'SSID', 'Hidden', 'Open', 'BSSID_Count', 'BSSIDs', 'Avg_Signal', 'Max_Signal',
|
'SSID', 'Hidden', 'Open', 'BSSID_Count', 'BSSIDs', 'Avg_Signal', 'Max_Signal',
|
||||||
'Min_Signal', 'Clients_Seen', 'CiscoAvgClients', 'CiscoMaxClients'
|
'Min_Signal', 'Clients_Seen', 'CiscoAvgClients', 'CiscoMaxClients', 'PacketCount'
|
||||||
]
|
]
|
||||||
ssid_writer = csv.DictWriter(f, fieldnames=fieldnames)
|
ssid_writer = csv.DictWriter(f, fieldnames=fieldnames)
|
||||||
ssid_writer.writeheader()
|
ssid_writer.writeheader()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue