如何将.pcap文件更改为带有我想要的列列表的csv文件(例如:wlan.sa,wlan.ra,frame.len)?输出的csv文件需要与输入的.pcap文件具有相同的名称。所有输出文件都需要写入单独的文件夹中。并且会像原始pcap文件一样被分成子文件夹。我是编程新手。请帮忙。我只知道如何在文件夹和子文件夹中获取文件。
import csv
import os
startdir = 'in.d'
outdir = 'out.d'
suffix = '.pcap'
for root, dirs, files in os.walk(startdir):
for name in files:
if not name.endswith(suffix):
答案 0 :(得分:1)
如果尝试在其他位置重新创建文件夹结构,则需要确保已创建文件夹。可以使用os.makedirs()
命令来完成。可以通过使用比startdir
更深的任何路径来确定子文件夹的结构。然后可以将其附加到您的outputdir
位置。
也可以使用os.path.splitext()
替换文件扩展名。
例如:
import os
startdir = '/root/Desktop/TTT'
suffix= '.pcap'
outputdir = os.path.join(startdir, "Outcsv")
for root, dirs, files, in os.walk(startdir):
for name in files:
if name.lower().endswith(suffix):
sub_folders = root[len(startdir)+1:]
input_filename = os.path.join(root, name)
output_path = os.path.join(outputdir, sub_folders)
os.makedirs(output_path, exist_ok=True) # Ensure the output folder exists
output_filename = os.path.join(output_path, os.path.splitext(name)[0] + '.csv')
cmd = 'tshark -r {} -T fields -e frame.number -e frame.time_relative -e wlan.sa -e wlan.da -e wlan.ta -e wlan.ra -e frame.time_delta_displayed -e frame.len -E header=y -E separator=, -E quote=d -E occurrence=f > {}'
final_cmd = cmd.format(input_filename, output_filename)
print(final_cmd)
os.system(final_cmd)
答案 1 :(得分:0)
致电tshark,(类似这样)
f_in = 'x.pcap'
f_out = 'x.csv'
tshark_template = 'tshark -r {} -T fields -e frame.number -e frame.time -e eth.src -e eth.dst -e ip.src -e ip.dst -e ip.proto -E header=y -E separator=, -E quote=d -E occurrence=f > {}'
final_tshark_cmd = tshark_template.format(f_in,f_out)
使用python动态构建命令,因此您可以控制文件名。
每个-e
代表要在输出中显示的字段。