我有一些PCAP文件,以前我用tshark組合python來提取源IP地址,時間戳等。如何從pcap文件中提取以太網級別的數據?
不過,現在我在Wireshark的打開這些文件PCAP。它還包含VLAN信息,VID是我現在要提取的內容。
我用tshark -r xx.pcap
在終端,那隻能說明TCP層的信息,我不能讓這個VLAN ID。有人知道如何在Python中做到這一點嗎?使用一些庫或工具?
我有一些PCAP文件,以前我用tshark組合python來提取源IP地址,時間戳等。如何從pcap文件中提取以太網級別的數據?
不過,現在我在Wireshark的打開這些文件PCAP。它還包含VLAN信息,VID是我現在要提取的內容。
我用tshark -r xx.pcap
在終端,那隻能說明TCP層的信息,我不能讓這個VLAN ID。有人知道如何在Python中做到這一點嗎?使用一些庫或工具?
你可以使用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,最好是啓動它,並帶有自動完成播放,並閱讀教程:)
完美的解決方案是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
測試,運行完美。
'tshark -V'轉儲整個數據包,還是有更多這個問題? –