2012-10-03 99 views
1

我试图从多个文件中逐一读取数据包,并将它们写入不同文件夹中的文件(使用相同的文件名)。我使用这个程序:读取和写入数据包python-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) 

在这个程序中,我从/家/包/信息/ sub1目录读取文件,使用嗅()通过一个阅读所有的数据包在该文件中的一个,写全那些在这个文件中的数据包使用wrpcap,/ home/new /,到不同目录中具有相同文件名的另一个文件。

Scapy覆盖了当前的数据包。有没有办法将数据包追加到文件而不是覆盖?由于

+0

如果你想阅读所有这些,他们都写;为什么不复制文件? 'cp -f/home/packets/info/sub1/$ {filename}/home/new/$ {filename}' – tMC

回答

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