1

複数のファイルからパケットを 1 つずつ読み取り、別のフォルダー内のファイルに書き込もうとしています (同じファイル名を使用)。私はこのプログラムを使用しています:

import os, os.path
from scapy.all import*

i=0
filename = ''

def callback_func(pkt):
    wrpcap("/home/new/"+filename,pkt)

files_in_dir = os.listdir("/home/packets/info/sub1")
for file in files_in_dir:
    filename = str(file)
    sniff(prn = callback_func, offline = file)  

このプログラムでは、/home/packets/info/sub1 ディレクトリからファイルを読み取り、sniff() を使用してそのファイル内のすべてのパケットを 1 つずつ読み取り、そのファイル内のすべてのパケットを同じファイル名の別のファイルに書き込みます。 wrpcap を使用したディレクトリ /home/new/。

Scapy は、前のパケットを現在のパケットで上書きしています。上書きするのではなく、パケットをファイルに追加する方法はありますか? ありがとう

4

1 に答える 1

2

あなたがscapyに頼んだのは上書きだけです...追加するには、次のようなことをする必要があります...

import os, os.path
from scapy.all import *

i=0
filename = ''

ORIG_DIR = '/home/packets/info/sub1'
files_in_dir = os.listdir(ORIG_DIR)
for file in files_in_dir:
    filename = str(file)
    paks = rdpcap(ORIG_DIR+filename)  # Read original packets
    paks.extend(sniff(offline=file))      # Append new packets to original pak list
    wrpcap('/home/new/'+filename, paks)   # write new pak list to file
于 2012-10-07T11:02:19.940 に答える