2011-12-13 63 views
0

我有一些PCAP文件,以前我用tshark組合python來提取源IP地址,時間戳等。如何從pcap文件中提取以太網級別的數據?

不過,現在我在Wireshark的打開這些文件PCAP。它還包含VLAN信息,VID是我現在要提取的內容。

我用tshark -r xx.pcap在終端,那隻能說明TCP層的信息,我不能讓這個VLAN ID。有人知道如何在Python中做到這一點嗎?使用一些庫或工具?

+0

'tshark -V'轉儲整個數據包,還是有更多這個問題? –

回答

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,最好是啓動它,並帶有自動完成播放,並閱讀教程:)

1

完美的解決方案是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 

測試,運行完美。

相關問題