如何修改.pcap 文件的时间戳范围?

How to modify the timestamp range of a .pcap file?

问题

我需要修改在 5 分钟时间跨度内捕获的 .pcap 文件,使其模拟在 20 分钟时间跨度内捕获的 .pcap 文件。问题是我不知道该怎么做。

例子

为了说明问题,假设我有一个 .pcap 文件,其中包含 4 个捕获的数据包 p1-p4t 作为开始时间,这样:

我希望生成的 .pcap 文件包含相同的四个数据包,但时间戳已缩放(从 5 分钟到 20 分钟),因此它们代表以下内容:

尝试过的解决方案

背景

我正在使用 tcpreplay 重放用户浏览网页的场景。我同时注入了一些数据包 ,这些数据包依赖于 我重播的 .p​​cap 文件,即通过实时监控重播流量并随后调整它发送的数据包来注入数据包。整个流量跟踪——即重放流量和注入的数据包——都是使用 tcpdump 捕获的。由于有很多大的 .pcap 文件我想重放,我使用 tcpreplay --multiplier 选项来加速这个过程。但是,这意味着最终捕获的是原始 .pcap 文件的压缩版本。我希望 'stretch' 新创建的 .pcap 与原始文件大小相同。

这可以通过 Wireshark 使用其 "Time Shift" 功能来完成。

假设数据包1的时间戳是2017-08-17 12:00:00.000000,select数据包1然后选择"Edit -> Time Shift...",设置数据包1的时间为2017-08-17 12:00:00.000000(即不要更改这个)。单击 旁边的框...然后设置数据包 并输入 2 作为数据包编号和 2017-08-17 12:04:00.000000 作为时间戳。您会注意到它还指示 "and extrapolate the time for all other packets",这就是您想要的。点击 应用

在这一点上,时间戳应该调整到你想要的,尽管亚秒组件可能不会最终对所有数据包完全相同,并且由于某种原因甚至数据包 1 的亚秒组件不是 完全 最初指定的内容。如果你真的想保留原来的亚秒分量,那么你必须一次调整一个数据包。考虑到只有4个包需要调整,这样应该是可行的。不过,我可能建议为错误的亚秒级调整提交 Wireshark bug report