我有一些用 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
再次感谢!