Как извлечь данные уровня Ethernet из файла pcap? - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть несколько файлов pcap, ранее я использовал tshark комбинированный python для извлечения IP-адреса источника, метки времени и т. Д.

Однако теперь я открываю эти файлы pcap в Wireshark.Он также содержит информацию о VLAN, VID - это то, что я хочу извлечь прямо сейчас.

Я использую tshark -r xx.pcap в терминале, он может только показывать информацию об уровне tcp, я не могу получить этот VLAN ID.Кто-нибудь знает, как это сделать в Python?использовать какую-нибудь библиотеку или инструмент?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

идеальное решение - Scapy

В этом примере я создаю пакет с vlan, а затем печатаю идентификатор vlan

from scapy.all import *
pkt=Ether()/Dot1Q(vlan=0x32)/IP(dst="192.168.1.66")/ICMP()
print pkt[Dot1Q].vlan

, и в этом примере показано, какпрочитайте файл pcap и распечатайте VLAN ID

from scapy.all import *
from scapy.utils import *
pkts=rdpcap("filename.pcap")
for pkt in pkts:
    if pkt.haslayer(Dot1Q):
        print pkt[Dot1Q].vlan 

, проверенный и отлично работающий.

0 голосов
/ 13 декабря 2011

Вы можете использовать Scapy для этого:

from scapy.all import *

recs = rdpcap("yourpcap.pcap")

# extract vlan id from first record
for rec in recs:
    dot1q = rec.get_layer(Dot1Q)
    if dot1q is None:
        # not vlan here, skip.
        continue
    print 'Vlanid found:', dot1q.vlan, 'on packet', rec

Не проверено, но может работать. Чтобы выучить scappy, лучше всего запустить его, поиграть с автозавершением и прочитать учебные пособия:)

...