我需要使用 python 代码将驱动器上的 pcap 文件转换为 csv 文件(我知道如何使用wireshark UI 来完成此操作),但我需要通过 python 代码来完成此操作,
我已经尝试过这段代码:
import os
os.system("tshark -r mirai.pcap -T fields -e ip.src -e frame.len -e ip.proto -E separatorr=, -E occurrence=f > traffic.csv")
我得到一个结果文件,但它是空的。
任何人都可以帮助我吗?
当我将命令更改为:
时,它就开始工作了:os.system("tshark -r mirai.pcap -T fields -e ip.src -e frame.len -e ip.proto -E separator=, -E occurrence=f > traffic.csv")
即将
separatorr
更改为 separator
。
通常我使用包
pyshark
(https://pypi.org/project/pyshark/) 在 python 中处理我的 pcap 文件。
这是最简单的方法(我认为)
os.system ('tshark -r'+in_file +'>'+ out_file +'.txt')
哪里
in_file = <name of your pcap file>
out_file = <name of your output file>
PS:仅在 python 3 上测试过
我使用
subprocess
按以下方式完成:
import subprocess
with open('/path/to/csv_file.csv','w') as f:
subprocess.run("tshark -r /path/to/pcap_file.pcap -T fields
-e frame.number -e ip.src -e ip.dst
-E header=y -E separator=/t".split(), stdout =f)
stdout
被写入 '/path/to/csv_file.csv'
您可以使用 tshark 和 Python 来自动执行此操作。
import os
for file in os.listdir('/path/to/pcap/files/'):
output_csv = file + '.csv'
os.system(f"tshark -N n -r ./test/{file} -T fields -e frame.number -e _ws.col.Time -e _ws.col.Source -e _ws.col.Destination -e _ws.col.Protocol -e _ws.col.Length -e _ws.col.Info -E header=y -E separator=, > {output_csv}")
您没有获得空 csv 的原因是您尚未安装可供 CLI 使用的 tshark。在Linux中。尝试 apt-install tshark, 在 Windows 中,您必须安装 Wireshark,然后将环境变量设置为安装文件夹,以使 tshark 激活到您的命令提示符。