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