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