python - 如何存储抓包数据(*.pcap)以供分析

标签 python database pcap libpcap winpcap

我收集了数 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/

相关文章:

python - 如何保持 lambda 表达式中的某些参数不变

python - Django 中的 Forloop.counter

php - 从数据库中查找两个日期之间的差异并将其保存到 Laravel 数据库中

java - 玩2框架清理内存DB

java - Go/Java中如何修改http请求中的ip地址

c - 一个简单的C程序来分析pcap文件,但它不能读取整个pcap文件

python - Numpy:根据列索引数组设置每行的 1 个元素

python - 在 Boost Python 中使用带有 std::wstring 的 C++ 函数的 Unicode

MySQL查询结果: What does the time shown mean?

linux - 如何确定目的MAC地址