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

时间:2017-08-17 12:01:41

标签: wireshark pcap tcpdump tcpreplay editcap

问题

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

实施例

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

  • 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文件的压缩版本。我想'拉伸'新创建的.pcap与原始大小相同。

1 个答案:

答案 0 :(得分:2)

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

假设数据包1的时间戳为2017-08-17 12:00:00.000000,请选择数据包1,然后选择"编辑 - >时移..." 并将数据包1的时间设置为2017-08-17 12:00:00.000000(即,不要更改此时间)。单击" ...旁边的框,然后设置数据包" 并输入2作为数据包编号,输入2017-08-17 12:04:00.000000作为时间戳。您会注意到它还会指示"并推断所有其他数据包的时间" ,这就是您想要的。点击应用

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