【问题标题】:How to store packet capture data (*.pcap) for analyzing如何存储抓包数据 (*.pcap) 以供分析
【发布时间】:2013-10-10 12:55:38
【问题描述】:

我收集了几 mb 的网络流量,想对其进行分析。我面临的问题是我想以一种可以降低搜索时间复杂度的方式存储它。

我的第一个想法是把它放到一个列中所有可能属性的数据库中,但后来我意识到表中会有很多 NULL 值,这会降低性能数据库。即使小型数据库的性能下降很小,当我解析一个大的 *.pcap 文件(大于 1Gb)时,性能下降也会极大地影响数据库的性能。随着数据库大小的增加,表中 NULL 值的数量也会增加。

那么有没有更好的方法来存储 *.pcap 文件以供分析,我一直在研究 XML 树作为解决方案,但我不确定。我正在使用 python 来做到这一点,我正在使用 dpkt 模块从 *.pcap 文件中提取数据

提前致谢

【问题讨论】:

  • 解析 pcap 的性能如何?你希望达到什么样的表现?
  • 您对解析后的数据有什么计划?你想浏览它吗?搜索什么?过滤掉特定的数据包?
  • @Milo :我想对数据进行搜索以获取相应的数据包。并过滤特定的数据包。主要工作是对数据进行搜索。
  • @tMC :我无法将数据解析为任何内容,因为我没有正确的存储方式。所以基本上我只是将一个 pcap 文件解析为一个文本文件。所以在性能问题上,现在很糟糕。
  • 我写了一个 MPEG-2 传输流分析器(TS 文件很大),我的方法是为文件构建一个特殊的映射。它是内存中的一个简单列表,其中包含有关数据包和快速解析的一些基本信息。当我想要完整的信息时,我从 TS 文件中解析了选定的数据包(以及围绕它的更多数据包)。我认为这也可以在这里应用:例如如果您想过滤掉 UDP 或 TCP 数据包,则将该信息添加到地图中。这只是一个想法。

标签: python database pcap libpcap winpcap


【解决方案1】:

您可以分两步完成:

首先,使用 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...

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多