如何修改.pcap 文件的时间戳范围?
How to modify the timestamp range of a .pcap file?
问题
我需要修改在 5 分钟时间跨度内捕获的 .pcap 文件,使其模拟在 20 分钟时间跨度内捕获的 .pcap 文件。问题是我不知道该怎么做。
例子
为了说明问题,假设我有一个 .pcap 文件,其中包含 4 个捕获的数据包 p1
-p4
和 t
作为开始时间,这样:
p1
发送时间为 t
+ 0 分钟
p2
在 t
+ 1 分钟后发送
p3
发送时间为 t
+ 2 分钟
p4
在 t
+ 3 分钟后发送
我希望生成的 .pcap 文件包含相同的四个数据包,但时间戳已缩放(从 5 分钟到 20 分钟),因此它们代表以下内容:
p1
发送时间为 t
+ 0 分钟
p2
在 t
+ 4 分钟后发送
p3
发送时间为 t
+ 8 分钟
p4
在 t
+ 12 分钟 发送
尝试过的解决方案
editcap
,但是我在这里能找到的唯一选项是使用 -t
选项将所有时间戳调整为设定值。
背景
我正在使用 tcpreplay
重放用户浏览网页的场景。我同时注入了一些数据包 ,这些数据包依赖于 我重播的 .pcap 文件,即通过实时监控重播流量并随后调整它发送的数据包来注入数据包。整个流量跟踪——即重放流量和注入的数据包——都是使用 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。
问题
我需要修改在 5 分钟时间跨度内捕获的 .pcap 文件,使其模拟在 20 分钟时间跨度内捕获的 .pcap 文件。问题是我不知道该怎么做。
例子
为了说明问题,假设我有一个 .pcap 文件,其中包含 4 个捕获的数据包 p1
-p4
和 t
作为开始时间,这样:
p1
发送时间为t
+ 0 分钟p2
在t
+ 1 分钟后发送p3
发送时间为t
+ 2 分钟p4
在t
+ 3 分钟后发送
我希望生成的 .pcap 文件包含相同的四个数据包,但时间戳已缩放(从 5 分钟到 20 分钟),因此它们代表以下内容:
p1
发送时间为t
+ 0 分钟p2
在t
+ 4 分钟后发送p3
发送时间为t
+ 8 分钟p4
在t
+ 12 分钟 发送
尝试过的解决方案
editcap
,但是我在这里能找到的唯一选项是使用-t
选项将所有时间戳调整为设定值。
背景
我正在使用 tcpreplay
重放用户浏览网页的场景。我同时注入了一些数据包 ,这些数据包依赖于 我重播的 .pcap 文件,即通过实时监控重播流量并随后调整它发送的数据包来注入数据包。整个流量跟踪——即重放流量和注入的数据包——都是使用 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。