Так что это мой сценарий:Как извлечь данные поставщика с использованием scapy из запроса зонда
#!/usr/bin/env python
import sys
from scapy.all import *
from subprocess import *
call(["clear"])
print "Probe Investigator"
print "-----------------------------------------------------"
intf = raw_input("Enter the Name of the interface to sniff: ")
print ("\n")
clients = []
uni = 0
mach = []
def phandle(p):
if p.haslayer(Dot11ProbeReq):
mac = p.addr2
if p.haslayer(Dot11Elt):
if p.ID == 0:
ssid = p.info
if ssid not in clients and ssid != "":
clients.append(ssid)
print len(clients),mac+"--Probing-->"+ssid
if mac not in mach:
mach.append(mac)
global uni
uni+=1
else:
return
sniff(iface=intf,prn=phandle, store=0)
print ("\n")
print "Unique MACs: ",uni
Как вы можете видеть, я фильтрацию запросов зонда, а также фильтрация, чтобы увидеть, если запросы не транслируются но для конкретных SSID. Я проанализировал запросы на зонд в wireshark, чтобы увидеть, что такие зонды также имеют тег no в Dot11ELt
слой, который определяет поставщика. Если я просто изменил оператор p.ID == 0
на p.ID == 221
, тогда он должен технически предоставить мне информацию о продавце, но вместо этого сценарий просто зависает и никогда не продвигается вперед с остальной частью скрипта.
Как извлечь информацию о поставщике из пакета?
Моя версия питона: 2.7.3 (по умолчанию, 13 Mar 2014, 11:03:55) [GCC 4.7.2] Моя версия Linux: Дистрибьютор ID: Kali Описание: Kali GNU/Linux 1.1.0 релиз: 1.1.0 Codename: Moto Linux версия 3.18.0-kali3-amd64 GCC версии 4.7.2 Debian 4.7.2-5)) # 1 SMP Debian 3.18.6-1 ~ kali2 (2015-03-02)
Ok, так что я могу достичь информационного слоя сейчас, но она закодирована в том, что я, хотя был шестигранник, но это не так. Как я могу это решить? –
Что вы получили и что вы ожидали получить? Как _wireshark_ анализировал точные данные? – Yoel
Ну, в wirehark тег id 221 показывает яблоко или Broadcom в качестве производителя, тогда как если я посмотрю на тот же пакет в scapy dot11elt с тегом 221, или поставщик покажет мне закодированные данные. –