четверг, 31 мая 2018 г.

Добавить производителей в базу данных giskismet.

В kismet предусмотрено использование баз данных wireshark для указания связи MAC к имени производителю чипов. Если по какой-то причине(например при сборе данных о сетях в системе не был установлен wireshark (wireshark-common) с соответствующей базой данных, можно использовать данный скрипт для пост-модернизации базы данных giskismet с целью добавить название производителя по собранным сетям.


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

Комментариев нет:

Отправить комментарий