2017-06-08 3 views
1

python/scapyを使用してパケットのpcapファイルパケットを反復処理します。このファイルには複数のプロトコルがあります。現在の反復はプロトコル固有であるため、次のパケットが別のプロトコルからのものであれば、反復は「ジャンプ」します。私はなぜこれが今のようになるのか分かりません。どんなプロトコルであっても、パケット用のパケットが必要です。python/scapyを使用してパケット用のpcapファイルパケットを反復処理します

少し例:

data = 'new.pcap' 
zz = rdpcap(data) 
sessions = zz.sessions() 

for session in sessions: 
    for packet in sessions[session]: 
    eth_src = packet[Ether].src 
    eth_type = packet[Ether].type 

if eth_src == "00:22:97:04:06:b9" and eth_type == 0x8100:  
    # do anything 
elif eth_src == "00:22:97:04:06:b9" and eth_type == 0x22f0: 
    # do anything 
else: 
    # do anything 

誰もが理由を知っていますか?

答えて

2

は、単純に試してみてください。PcapReader()は発電機を作成し、パケットが必要なときに読んで、メモリに保存されていない間、rdpcap()を使用して

for pkt in PcapReader('new.pcap'): 
    eth_src = pkt[Ether].src 
    eth_type = pkt[Ether].type 
    if [...] 

は、メモリ内のリストを作成します(巨大なPCAPファイルを処理することを可能にするました)。

あなたには、いくつかの理由のためのリストが必要な場合は、操作を行います。

packets = rdpcap('new.pcap') 
for pkt in packets: 
    eth_src = pkt[Ether].src 
    eth_type = pkt[Ether].type 
    if [...] 
+0

作品は、ありがとうございました! – crappidy

関連する問題