2017-01-15 18 views
0

Я хочу получить информацию о mac-адресах, «говорящих» в протоколе 802.11 из файла pcap с использованием scapy. Я сделал что-то подобное, что работа с TCP соединений:Получение информации о соединениях layer2 с помощью scapy

l = self.pcap[int(arg)] 
    ipsrc = l.getlayer("IP").src 
    ipdst = l.getlayer("IP").dst 
    portsrc = l.getlayer("TCP").sport 
    portdst = l.getlayer("TCP").dport 

    pkt = [] 
    pkt.append([]) 
    for i,p in enumerate(self.pcap): 
     if p.haslayer('TCP'): 
      if p[IP].src == ipsrc and p[IP].dst == ipdst and p[TCP].sport == portsrc and p[TCP].dport == portdst: 
       pkt.append([i, p]) 
      if p[IP].src == ipdst and p[IP].dst == ipsrc and p[TCP].sport == portdst and p[TCP].dport == portsrc: 
       pkt.append([i, p]) 

где arg является число, которое представляет идентификатор пакета и self.pcap является PCAP файл, который был открыт с помощью команды rdpcap.

Кто-нибудь есть идеи, как сделать то же самое, что и указанная выше функция, но по MAC-адресу и протоколу 802.11? Благодарю.

+0

Вы хотите получить информацию об инкапсуляции Ethernet для заголовка 802.11 или только заголовка 802.11 Mac? – Dmitry

+0

@ Только заголовок заголовка Dmitry – Moshe9362

ответ

1

Смотрите пример для получения макинтош адресов из заголовка 802,11 макинтош:

from scapy.all import * 

pcap = rdpcap('test_wifi.pcap') 
for pkt in pcap: 
    if pkt.haslayer(Dot11): 
     print "Addr1 = %s, Addr2 = %s, Addr3 = %s, Addr4 = %s" %(pkt.addr1, pkt.addr2, pkt.addr3, pkt.addr4) 

я могу установить беспроводную карту в режим мониторинга и сохранения перехваченных пакетов в файл «test_wifi.pcap» для тестирования этого кода.