【问题标题】:How does one filter pcap (e.g. tcpdump) files by content regex match?一个按内容正则表达式匹配的过滤 pcap(例如 tcpdump)文件如何匹配?
【发布时间】:2012-03-19 21:18:38
【问题描述】:

我有一些用 tcpdump 收集的大型 pcap(数据包捕获)文件。我想过滤掉包含特定字符串的数据包。我希望我的输出仍然是 pcap 格式。我发现了几种仅显示与 pcap 文件中的正则表达式匹配的数据包的方法,但我需要的是过滤此类文件而不是过滤掉数据包的显示(例如标准输出)。输出需要是删除匹配数据包的 pcap 文件。

我怀疑 dpkt(一个 python 模块)可能会有所帮助,但如果可能的话,我更愿意使用现有的 (C/C++) 工具来做到这一点。我会接受代码作为答案(也许一个很好的带有基准的 dpkt 示例会说服我也这样做;-))。

提前致谢!

答案:

根据 Nim 的回答,可以通过 Wireshark/tshark 执行此操作。供其他人参考,这里有一个示例命令行,我在其中检查 udp 数据包中的字符串匹配(此示例可以在此基础上进行 tcp 或特定协议字段搜索):

tshark -r infile  -R 'not udp matches "my_search_string"' -w outfile

再次感谢!

【问题讨论】:

  • 如果您可以过滤掉显示内容,您可以将标准输出重定向到文件吗?
  • 对,但我的要求是输出是 pcap,而不是你在标准输出上打印的数据包的字符串表示形式。

标签: c++ python pcap packet-capture tcpdump


【解决方案1】:

这个website 有一个很好的例子,说明如何用 C 语言读取 pcap 文件,快速谷歌搜索将揭示如何重写文件。

或者,AFAIK Wireshark 可能已经允许您执行此操作 - 即打开文件,应用过滤器并保存文件(快速运行 Wireshark - 显示它确实提供此功能)。

【讨论】:

  • 是的! tshark 这样做。感谢您的指点。我正在更新问题以更好地格式化命令行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
相关资源
最近更新 更多