IPv6ヘッダーとその他の拡張ヘッダーに格納されている情報を分析するために、IPv6トラフィックを含む約10GBのpcapデータがあります。これを行うには、Scapyフレームワークを使用することにしました。私はrdpcap関数を試しましたが、そのような大きなファイルの場合はお勧めしません。それはすべてのファイルをメモリにロードして、私の場合は行き詰まろうとします。私はネットでそのような状況ではsniffが推奨されることを発見しました、私のコードは次のようになります:
def main():
sniff(offline='traffic.pcap', prn=my_method,store=0)
def my_method(packet):
packet.show()
my_methodと呼ばれる関数で、各パケットを個別に受信し、それらを解析できますが、...呼び出したとき- show機能が組み込まれているフレームワークメソッドは次のようになりました:
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 バージョンが現在supportipv6
解析しています。したがって、-ipv6 ".pcap"ファイルを scapy
で解析するには、次のようにします。
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