Хорошо, поэтому я пытаюсь создать файл csv со списком всех MAC-адресов и SSID, которые были замечены. Это код, который у меня до сих пор, большая часть его: http://edwardkeeble.com/2014/02/passive-wifi-tracking/ Я использую python 2.7.Запись MAC-адресов в csv с использованием scapy и python
from scapy.all import *
import csv, time
from datetime import datetime
PROBE_REQUEST_TYPE=0
PROBE_REQUEST_SUBTYPE=4
WHITELIST = ['de:ad:be:ef:ca:fe',] # Replace this with your phone's MAC address
def PacketHandler(pkt):
if pkt.haslayer(Dot11):
if pkt.type==PROBE_REQUEST_TYPE and pkt.subtype == PROBE_REQUEST_SUBTYPE and (pkt.addr2.lower() not in WHITELIST and pkt.addr2.upper() not in WHITELIST):
CheckCsv(pkt)
def PrintPacket(pkt):
try:
extra = pkt.notdecoded
except:
extra = None
if extra!=None:
signal_strength = -(256-ord(extra[-4:-3]))
else:
signal_strength = -100
print "No signal strength found"
print "Added: %s SSID: %s"%(pkt.addr2,pkt.getlayer(Dot11ProbeReq).info)
with open('logmacs.csv','ab') as out:
w=csv.writer(out)
w.writerow([datetime.now().strftime('%Y-%m-%d'),datetime.now().strftime('%H:%M:%S'),pkt.addr2,pkt.getlayer(Dot11ProbeReq).info,signal_strength])
out.close()
def CheckCsv(pkt):
with open('logmacs.csv', 'rb') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
if pkt.addr2 != row[2]:
PrintPacket(pkt)
f.close()
def main():
print "[%s] Starting scan"%datetime.now()
print "Scanning..."
while True:
sniff(iface=sys.argv[1],prn=PacketHandler, count=1)
time.sleep(2)
if __name__=="__main__":
main()
Прямо сейчас, кажется, что либо он захватывает всю массу пакетов или застревает в цикле писать один пакет. Я добавил «count = 1 и while True: и time.sleep (2)», чтобы попытаться предотвратить это, но, похоже, не помогло.
То, что я пытаюсь сделать, это войти на дату/время, когда MAC видно, чтобы создать список уникальных МКВ, но это не совсем делать это ....
У меня это работает, я думаю. Я прочитал его для mac, а затем, если он найден, он устанавливает переменную в true, а затем ломается, иначе она продолжает проверять. Тогда у меня есть другой оператор if, проверяющий переменную, чтобы решить, нужно ли мне добавлять mac, потому что он еще не существует. – Gaudard
Если я правильно вас понимаю, вы все равно открываете файл дважды на каждом пакете, но отделили два, чтобы они не смешивались. Это решило бы проблему, но все же менее эффективно, чем мое предложение выше (однако это может быть не критично в вашем случае). В любом случае, поскольку этот ответ решил вашу проблему, пожалуйста, рассмотрите [голосование] (http://meta.stackexchange.com/q/173399) и [принятие] (http://meta.stackexchange.com/q/5234) Это. Обратите внимание, что нет абсолютно никаких обязательств в отношении любого из них. – Yoel
Я не совсем уверен, что вы имеете в виду, я думал, что это то, что я сделал. Я не могу понять, как правильно получить код ... но если бы вы могли показать мне код, который будет большой помощью! Вот что у меня есть до сих пор: https://github.com/gaudard/scripts/blob/master/Python/MACAddrScanner.py – Gaudard