读写包python-scapy

时间:2012-10-03 16:40:24

标签: python networking packet scapy

我正在尝试从多个文件中逐个读取数据包,并将它们写入不同文件夹中的文件(使用相同的文件名)。我正在使用这个程序:

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()逐个读取该文件中的所有数据包,将该文件中的所有数据包写入另一个文件中使用wrpcap,/ home / new /在不同目录中的文件名。

Scapy正在使用当前数据包覆盖前一个数据包。有没有办法将数据包附加到文件而不是覆盖?感谢

1 个答案:

答案 0 :(得分: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