如何从pcap文件中提取以太网级数据?

时间:2011-12-13 13:21:36

标签: python networking scapy

我有一些pcap文件,以前我用tshark结合python来提取源IP地址,时间戳等。

但是,现在我在Wireshark中打开这些pcap文件。它还包含VLAN信息,VID是我现在想要提取的东西。

我在终端中使用tshark -r xx.pcap,它只能显示tcp级别信息,我无法获取此VLAN ID。有谁知道如何在Python中做到这一点?使用一些库或工具?

2 个答案:

答案 0 :(得分:2)

完美的解决方案是Scapy

在此示例中,我使用vlan创建一个数据包,然后打印vlan ID

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 

经过测试,效果很好。

答案 1 :(得分:0)

您可以使用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,最好是启动它,然后玩自动完成,并阅读教程:)