我有一个文件,其中tcpdump
包含几天内捕获的数据包。从这个文件中,我想查看在仅几个小时的特定时间段内捕获的数据包。
我知道我可以用来tcpdump -r
从文件中读取数据包。我可以使用所有常用的过滤器,例如按协议和端口号过滤。我也知道我可以-c
用来限制输出的数据包数量。但这不允许我从一开始就跳过一些数据包。
我可以在我感兴趣的时间范围内使用tcpdump -tttt
,grep
但最后我想用 将数据包写入一个新的(较小的)文件-w
,grep
但对此我无能为力。
有没有办法指示tcpdump
只包含特定时间间隔的数据包?
有一个名为
editcap
(wireshark 系列的一部分)的命令行工具,可以按时间范围过滤 pcap 文件。StackOverflow 上这个问题的答案中有更多信息:https://stackoverflow.com/questions/19952991/filter-a-pcap-dump-file-for-a-specific-time-range#19955700
还有一个名为的工具
logdissect
可以过滤 tcpdump 终端输出,并输出到 tcpdump 的终端输出格式,或 json(带有一些基本字段,如源/目标主机、协议、日期戳)。不幸的是,它无法输出到 pcap,但如果您不需要 pcap 输出,它可以按许多不同的标准进行过滤。它在 pip (python 首选安装程序)上可用,它在 github 上带有安装说明。只是为了充分披露,我写了 logdissect。我通常不会在这里提及我自己的项目,但在这种情况下它可能会有所帮助。