0

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

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

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

4

2 回答 2

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 

经过测试并且工作完美。

于 2011-12-13T14:13:04.230 回答
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,最好是启动它,并使用自动完成功能,并阅读教程 :)

于 2011-12-13T14:04:04.023 回答