Refactor enrichment module by adding utility functions, enhancing CSV handling, and implementing SSID metrics extraction. Update run_test script to improve logging on speed test failures.
This commit is contained in:
parent
4b9ad6f609
commit
55b0835dd7
11 changed files with 541 additions and 406 deletions
56
enrichment/merge_ssid_summaries.py
Normal file
56
enrichment/merge_ssid_summaries.py
Normal file
|
@ -0,0 +1,56 @@
|
|||
from collections import defaultdict
|
||||
from statistics import mean
|
||||
|
||||
def merge_ssid_summaries(summary_lists):
|
||||
merged = {}
|
||||
|
||||
for summary in summary_lists:
|
||||
for entry in summary:
|
||||
ssid = entry['SSID']
|
||||
key = ssid # You could also key on both SSID + BSSID set if you're feeling spicy
|
||||
|
||||
if key not in merged:
|
||||
merged[key] = {
|
||||
'SSID': ssid,
|
||||
'Hidden': entry['Hidden'],
|
||||
'Open': entry['Open'],
|
||||
'BSSID_Count': entry['BSSID_Count'],
|
||||
'BSSIDs': set(entry['BSSIDs'].split(";")),
|
||||
'Avg_Signal': [entry['Avg_Signal']],
|
||||
'Max_Signal': entry['Max_Signal'],
|
||||
'Min_Signal': entry['Min_Signal'],
|
||||
'Clients_Seen': entry['Clients_Seen'],
|
||||
'CiscoAvgClients': [entry['CiscoAvgClients']],
|
||||
'CiscoMaxClients': entry['CiscoMaxClients'],
|
||||
'PacketCount': entry['PacketCount']
|
||||
}
|
||||
else:
|
||||
merged[key]['Hidden'] = merged[key]['Hidden'] or entry['Hidden']
|
||||
merged[key]['Open'] = merged[key]['Open'] and entry['Open']
|
||||
merged[key]['BSSIDs'].update(entry['BSSIDs'].split(";"))
|
||||
merged[key]['Avg_Signal'].append(entry['Avg_Signal'])
|
||||
merged[key]['Max_Signal'] = max(merged[key]['Max_Signal'], entry['Max_Signal'])
|
||||
merged[key]['Min_Signal'] = min(merged[key]['Min_Signal'], entry['Min_Signal'])
|
||||
merged[key]['Clients_Seen'] += entry['Clients_Seen']
|
||||
merged[key]['CiscoAvgClients'].append(entry['CiscoAvgClients'])
|
||||
merged[key]['CiscoMaxClients'] = max(merged[key]['CiscoMaxClients'], entry['CiscoMaxClients'])
|
||||
merged[key]['PacketCount'] += entry['PacketCount']
|
||||
|
||||
final_list = []
|
||||
for ssid, data in merged.items():
|
||||
final_list.append({
|
||||
'SSID': data['SSID'],
|
||||
'Hidden': data['Hidden'],
|
||||
'Open': data['Open'],
|
||||
'BSSID_Count': len(data['BSSIDs']),
|
||||
'BSSIDs': ";".join(sorted(data['BSSIDs'])),
|
||||
'Avg_Signal': round(mean(data['Avg_Signal']), 2),
|
||||
'Max_Signal': data['Max_Signal'],
|
||||
'Min_Signal': data['Min_Signal'],
|
||||
'Clients_Seen': data['Clients_Seen'],
|
||||
'CiscoAvgClients': round(mean(data['CiscoAvgClients']), 2),
|
||||
'CiscoMaxClients': data['CiscoMaxClients'],
|
||||
'PacketCount': data['PacketCount']
|
||||
})
|
||||
|
||||
return final_list
|
Loading…
Add table
Add a link
Reference in a new issue