import sqlite3 import codecs import sys from collections import Counter from tabulate import tabulate con = sqlite3.connect('wireless.dbl') cur = con.cursor() cur.execute("SELECT Manuf FROM wireless") rows = cur.fetchall() stat = [] for row in rows: st = row[0] stat.append(row[0]) c = Counter(stat) l = [] for key in sorted(c.iterkeys()): l.append([key, c[key]]) sum=0 for vend in l: venst=str(vend[0]).rstrip('\n') sum=sum+vend[1] # print (venst+", "+str(vend[1])) #print ("Total AP:"+sum) percent=[] for perc in l: venndd = str(perc[0]).rstrip('\n') numb = perc[1] perce = 100 * float(numb)/float(sum) percent.append([venndd, perce, numb]) # print (percent) #print (l) #print tabulate(percent, headers=['Vendor', "Percent of total", 'Total'], tablefmt='orgtbl') #print filter(lambda x: 'Ubiquti' in x, percent) #print (sortvend) #print (sys.argv[1]) print tabulate(filter(lambda x: sys.argv[1] in x, percent), headers=['Vendor', "Percent of total", 'Total'], tablefmt='orgtbl')
Показаны сообщения с ярлыком wifi. Показать все сообщения
Показаны сообщения с ярлыком wifi. Показать все сообщения
четверг, 31 мая 2018 г.
Статистика производителей Wi-Fi точек доступа из базы kismet.
Добавить производителей в базу данных giskismet.
В kismet предусмотрено использование баз данных wireshark для указания связи MAC к имени производителю чипов. Если по какой-то причине(например при сборе данных о сетях в системе не был установлен wireshark (wireshark-common) с соответствующей базой данных, можно использовать данный скрипт для пост-модернизации базы данных giskismet с целью добавить название производителя по собранным сетям.
UPD:
если преобразовать текстовый файл в словарь и работать с данными записанными в словарь можно увеличить производительность программы минимум на 50%:
Последнюю версию базы данных MAC адресов можно скачать на сайте wireshark:
https://www.wireshark.org/tools/oui-lookup.html
mac_ database.txt
mergedb.py
import sqlite3 import codecs #Подключаемся к базе данных сгенерированной giskismet con = sqlite3.connect('wireless.dbl') cur = con.cursor() cur.execute("SELECT id,BSSID FROM wireless") rows = cur.fetchall() #Функция которая открывает базу данных MAC адресов для сверки с MAC из базы данных #Если находит совпадения вносит соответствие в поле Manuf (производитель) def ScanData(f,i): filetxt = codecs.open("mac_database.txt", 'r', 'utf-8') for line in filetxt: if f==line.split(" ")[0]: print (clmac+" vendor: "+line.split(" ")[1]) cur.execute("UPDATE wireless SET Manuf=? WHERE id=?", (line.split(' ')[1], i)) con.commit() filetxt.close #Построчно считываем MAC адреса из БД и применяем к ним функцию выше for row in rows: mac=row[1] i=row[0] clmac=mac[:8] ScanData(clmac,i)
UPD:
если преобразовать текстовый файл в словарь и работать с данными записанными в словарь можно увеличить производительность программы минимум на 50%:
import sqlite3 import codecs con = sqlite3.connect('wireless.dbl') cur = con.cursor() cur.execute("SELECT id,BSSID FROM wireless") rows = cur.fetchall() d = {} for line in open('mac_database.txt'): line = line.split(" ") d[line[0]]= line[1] def ScanData(f,i): for line in d: if f==line: print (clmac+" vendor: "+d[line]) cur.execute("UPDATE wireless SET Manuf=? WHERE id=?", (d[line], i)) con.commit() for row in rows: mac=row[1] i=row[0] clmac=mac[:8] ScanData(clmac,i)
Последнюю версию базы данных MAC адресов можно скачать на сайте wireshark:
https://www.wireshark.org/tools/oui-lookup.html
mac_ database.txt
mergedb.py
Подписаться на:
Сообщения (Atom)