[英]Reading PCAP file with scapy
我有大約10GB的pcap數據和IPv6流量來分析存儲在IPv6標頭和其他擴展標頭中的信息。 為此,我決定使用Scapy框架。 我試過rdpcap函數,但對於這樣的大文件,不建議使用。 它試圖將所有文件加載到內存中並陷入我的情況。 我在網上發現,在這種情況下建議使用嗅探 ,我的代碼如下:
def main():
sniff(offline='traffic.pcap', prn=my_method,store=0)
def my_method(packet):
packet.show()
在名為my_method的函數中,我分別接收每個數據包,我可以解析它們,但....當我調用show function with in-build framework方法時,我得到了這樣的信息:
當在wireshark中打開時,我得到了正確的數據包:
你能告訴我如何在scapy中解析這些數據包以獲得正確的結果嗎?
編輯:根據評論中的討論,我找到了一種用Python解析PCAP文件的方法。 在我看來,簡單的方法是使用pyshark框架:
import pyshark
pcap = pyshark.FileCapture(pcap_path) ### for reading PCAP file
可以使用for循環輕松迭代讀取文件
for pkt in pcap:
#do what you want
對於解析IPv6頭,以下方法可能很有用:
pkt['ipv6'].tclass #Traffic class field
pkt['ipv6'].tclass_dscp #Traffic class DSCP field
pkt['ipv6'].tclass_ecn #Traffic class ECN field
pkt['ipv6'].flow #Flow label field
pkt['ipv6'].plen #Payload length field
pkt['ipv6'].nxt #Next header field
pkt['ipv6'].hlim #Hop limit field
更新
最新的scapy版本現在支持 ipv6
解析。 所以要用scapy
解析一個ipv6“.pcap”文件現在可以這樣做:
from scapy.all import *
scapy_cap = rdpcap('file.pcap')
for packet in scapy_cap:
print packet[IPv6].src
現在正如我在最初詢問此問題時回顧過的那樣,對於較舊的scapy
版本(不支持ipv6解析):
pyshark
可以用來代替( pyshark
是tshark的包裝器),如下所示: import pyshark
shark_cap = pyshark.FileCapture('file.pcap')
for packet in shark_cap:
print packet.ipv6.src
tshark
(有點終端版本的wireshark): $ tshark -r file.pcap -q -Tfields -e ipv6.src
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.