手动更改pcap文件中数据包的时间值

时间:2016-06-19 16:24:14

标签: networking wireshark libpcap wireshark-dissector

我有一个问题。我想在pcap中更改数据包的时间值。当我们在wireshark中打开一个pcap时,我们在数据包序列号之后的第二列中看到一个时间戳值。 我想更改数据包的时间值。虽然我能够做同样的事情但面临下面的问题。

让我们说在wireshark中显示的数据包的当前时间值是0.960727 我想在这个时间戳上添加100000。 现在,数据包的新标记变为0.1060727,理想情况下应为1.060727。 如果您在wireshark中打开任何pcap文件,您将永远不会在小数点后找到超过6位的时间值。 但是当我添加这个值时,我得到小数点后的7个数字。

请不要告诉我如何将时间值设为1.060727而不是0.1060727?

感谢您在此提出的建议。

此致 索姆

1 个答案:

答案 0 :(得分:0)

我并不完全清楚你要做什么,但我会猜测你是试图通过编辑二进制捕获文件来手动修改单个数据包的时间戳。假设文件格式是.pcap文件,那么我想你试图在一个特定数据包的时间戳上添加100000微秒?

假设是这种情况,那么您需要找到数据包标头的ts_sects_usec值,并将0x000186a0微秒添加到ts_usec值的当前值,但如果此值超过0x000f423f(即,它大于或等于1秒),则应将0x00000001添加到ts_sec值并从新值中减去0x000f4240计算ts_usec值。

要记住的一件重要事情是.pcap文件是用big-endian还是litte-endian格式编写的。这由所谓的magic number0xa1b2c3d4暗示大端和0xd4c3d2a1暗示小端)决定。确保使用ts_usec值和ts_sec值的正确字节顺序执行加法/减法(如果适用),并确保将字节写回ts_usec和{{1字段的预期字节顺序;否则你的结果时间戳将不正确。

如果这不是您尝试做的事情,那么请详细说明您尝试做的事情。