2012-10-03 104 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