将所有 pcap 文件转换为包含所需列的 csv python
Convert all pcap file to csv with required columns python
我需要将所有输出的 CSV 文件写入不同的文件夹。例如,如果 .pcap
个文件位于子文件夹 Sub1
、Sub2
中。而 Sub1
有 a1.pcap
和 a2.pcap
。 Sub2 有 b1.pcap
和 b2.pcap
。
我需要将输出的 CSV 文件写入与上述名称相同的文件夹中。 Sub1
、Sub2
,那么Sub1
应该有a1.csv
、a2.csv
。 Sub2
应该有 b1.csv
、b2.csv
。
请问我该怎么做?
我收到以下错误:
outputdir = startdir / "Outcsv"
TypeError: unsupported operand type(s) for /: 'str' and 'str'
密码是:
import os
startdir= '/root/Desktop/TTT'
suffix= '.pcap'
outputdir = startdir / "Outcsv"
for root,dirs, files, in os.walk(startdir):
for name in files:
if name.endswith(suffix):
filename = os.path.join(root,name)
output_filename = outputdir / filename.relative_to(startdir)
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 > {}.csv'
final_cmd = cmd.format(filename, output_filename)
os.system(final_cmd)
调用 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
代表您希望在输出中的一个字段。
如果您尝试在其他位置重新创建文件夹结构,则需要确保已创建文件夹。这可以使用 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)
我需要将所有输出的 CSV 文件写入不同的文件夹。例如,如果 .pcap
个文件位于子文件夹 Sub1
、Sub2
中。而 Sub1
有 a1.pcap
和 a2.pcap
。 Sub2 有 b1.pcap
和 b2.pcap
。
我需要将输出的 CSV 文件写入与上述名称相同的文件夹中。 Sub1
、Sub2
,那么Sub1
应该有a1.csv
、a2.csv
。 Sub2
应该有 b1.csv
、b2.csv
。
请问我该怎么做?
我收到以下错误:
outputdir = startdir / "Outcsv"
TypeError: unsupported operand type(s) for /: 'str' and 'str'
密码是:
import os
startdir= '/root/Desktop/TTT'
suffix= '.pcap'
outputdir = startdir / "Outcsv"
for root,dirs, files, in os.walk(startdir):
for name in files:
if name.endswith(suffix):
filename = os.path.join(root,name)
output_filename = outputdir / filename.relative_to(startdir)
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 > {}.csv'
final_cmd = cmd.format(filename, output_filename)
os.system(final_cmd)
调用 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
代表您希望在输出中的一个字段。
如果您尝试在其他位置重新创建文件夹结构,则需要确保已创建文件夹。这可以使用 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)