c++ - 如何通过内容正则表达式匹配过滤 pcap(例如 tcpdump)文件?

标签 c++ python pcap packet-capture tcpdump

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

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

提前致谢!

回答:

根据 Nim 的回答,可以通过 Wireshark/tshark 执行此操作。对于其他人的引用,这是一个示例命令行,我在其中检查 udp 数据包中的字符串匹配(可以构建此示例以进行 tcp 或特定协议(protocol)字段搜索):

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

再次感谢!

最佳答案

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

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

关于c++ - 如何通过内容正则表达式匹配过滤 pcap(例如 tcpdump)文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515198/

相关文章:

c++ - undefined reference 错误

python - 如何使用 PYTHON 遍历目录中的文件并将 INFO 插入 MySQL 数据库

通过 ctypes 使用 pcap 的 python 段错误

ssl - 解密来自 PCAP 的 TLS 流量

ruby - 在 ruby​​ 中捕获网络流量 - pcap 相关问题

c++ - 为什么显式初始化列表更容易失败?

c++ - C++ 应用程序中的控制台

python - Multiprocessing.Pool 使 Numpy 矩阵乘法变慢

c++ - opencv人脸检测导调用脑崩溃

python - 将 3 个不同的数据集保存到同一 Excel 文件下的 3 个不同的工作表中