我收集了数 MB 的网络流量并想对其进行分析。我面临的问题是我想以一种可以降低搜索时间复杂度的方式存储它。
我的第一个想法是将它放入一个数据库中,所有可能的属性都在列中,但后来我意识到表中会有很多 NULL 值,这会降低性能数据库。即使小型数据库的性能下降很小,当我解析大型 *.pcap 文件(大于 1Gb)时,下降也会极大地影响数据库的性能。随着数据库的大小将增加,表中 NULL 值的数量也会增加。
那么有没有更好的方法来存储 *.pcap 文件以供分析,我一直在研究 XML 树作为解决方案,但我不确定。我正在使用 python 来完成它,我正在使用 dpkt 模块从 *.pcap 文件中提取数据
提前致谢
最佳答案
您可以分两步完成:
首先,使用tshark工具将pcap文件转换成.csv;例如:
tshark -r input_file.pcap -n -T fields -E separator=, -e frame.time -e ip.src -e ip.dst -e ip.proto -e tcp.port >outfile.csv
然后使用 Python 中的 csv 模块读取它并进行分析。
import csv
with open("outfile.csv", "r") as f:
reader = csv.reader(f, delimiter=",")
for row in reader:
# do whatever with the data row...
希望这对您有所帮助。
关于python - 如何存储抓包数据(*.pcap)以供分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19165751/