我有一些 pcap 文件,之前我使用 tshark 结合 python 来提取源 IP 地址、时间戳等。
但是,现在我在 Wireshark 中打开这些 pcap 文件。它还包含 VLAN 信息,VID 是我现在要提取的东西。
我tshark -r xx.pcap
在终端使用,它只能显示tcp级别信息,我无法获取这个VLAN ID。有谁知道如何在 Python 中做到这一点?使用一些库或工具?
我有一些 pcap 文件,之前我使用 tshark 结合 python 来提取源 IP 地址、时间戳等。
但是,现在我在 Wireshark 中打开这些 pcap 文件。它还包含 VLAN 信息,VID 是我现在要提取的东西。
我tshark -r xx.pcap
在终端使用,它只能显示tcp级别信息,我无法获取这个VLAN ID。有谁知道如何在 Python 中做到这一点?使用一些库或工具?
完美的解决方案是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
经过测试并且工作完美。
您可以为此使用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,最好是启动它,并使用自动完成功能,并阅读教程 :)