我收集了一些MB的网络流量,想对其进行分析。我所面临的问题是,我想以这样的方式存储它,这样我可以减少搜索时的时间复杂度。
我的第一个想法是把它放到一个数据库中,在列中包含所有可能的属性,但是后来我意识到表中会有很多空值,这会降低数据库的性能。即使对于一个小数据库来说性能下降很小,当我解析一个大的*.pcap文件(大于1gb)时,性能下降也会严重影响数据库的性能。随着数据库的大小和表中空值的数量的增加。
因此,有没有更好的方法来存储*.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...

希望这有帮助。

09-25 17:01
查看更多