Epoch和wireshark捕获

时间:2013-04-11 18:37:10

标签: c wireshark epoch wireshark-dissector

我有一个.pkt嗅探器捕获。当我从C应用程序中读取捕获中的每个数据包时,我会观察到附加的无线电标题。无线电报头包含每个数据包的纪元时间。我想找出两个数据包之间的时间差,以毫秒为单位。我不知道如何区分两个纪元值并找出时间差(以毫秒为单位)。请帮帮我。

2 个答案:

答案 0 :(得分:1)

  

我有一个.pkt嗅探器捕获。

什么是“.pkt嗅探器捕获”?你是否使用Wireshark来捕获数据包?如果是这样,那么它就是pcap或pcap-ng捕获。

  

无线电标头包含每个数据包的纪元时间。

在大多数嗅探器格式中,数据包的时间戳是“记录头”的一部分,而不是无线电信息头的一部分。对于802.11捕获,某些捕获文件格式可能会提供包含802.11定时同步功能计时器的无线电信息标头,但该计时器没有指定的纪元。

数据包时间戳的纪元取决于捕获文件格式。 pcap和pcap-ng使用1970年1月1日00:00:00 UTC的UN * X纪元,因为pcap最初用于UN * X,而pcap-ng受pcap的影响。例如,其他文件格式可能使用1月1日1601,00:00:00“UTC”的Windows FILETIME纪元(使用proleptic Gregorian calendar)或其他一些时间来源。

但如果你想要的只是

  

以毫秒为单位找出两个数据包之间的时差

然后时代是无关紧要的 - 如果时间被表示为“ X 秒,因为某个时代”(其中 X 不一定是整数;它可能有一个小数部分),然后“自纪元以来 X 秒”和“自纪元以来 Y 秒”之间的时间是 X - Y ,时代本身取消了。

那么,最重要的问题是“自某个时代以来的秒数”是如何表现的。一秒的整数?整数计数为{纳秒,十分之一微秒,微秒,毫秒等}?秒与{纳秒,微秒等}的组合?这就是为什么我们需要知道这是文件格式时间戳还是802.11 TSFT,如果是文件格式时间戳,那么它是什么文件格式。

如果您似乎指出,这是一个Wireshark捕获(即,使用Wireshark进行的捕获,而不仅仅是Wireshark碰巧能够读取的捕获 - 它可以从不使用它的程序读取捕获原生pcap或pcap-ng格式),然后文件格式是pcap或pcap-ng(在这种情况下,纪元是Epoch,即1970年1月1日,00:00:00 UTS),时间戳是32-自Epoch以来的秒数和从那一秒开始的32位微秒,对于pcap,或者自Epoch以来的64位单位计数(单位由接口描述块指定用于捕获有问题的数据包的接口;默认值为微秒)。

要计算两个pcap数据包的时间戳之间的差异(以微秒为单位),取秒值之间的差值,乘以1,000,000,然后将微秒值之间的差值(两个差值都有符号)相加。要将其转换为毫秒,请将其除以1,000。

要计算两个pcap-ng数据包的时间戳之间的差异,请取时间戳值之间的差值;这是一小部分的计数,其中分数由接口描述块中的指定值定义。要将其转换为毫秒,请根据分数进行适当调整(例如,如果是微秒,则将其除以1,000)。

要计算两个802.11数据包的TSFT值之间的差异,只需从另一个中减去一个值;至少对于radiotap,TSFT值以微秒为单位,因此,要将其转换为毫秒,请将其除以1,000。

答案 1 :(得分:0)

“Epoch”不是单位或格式;这是一个时间点。具体来说,它是1970年1月1日午夜的UTC。

Unix timestamps只是自那时起已经过的秒数。从较大的一个中减去较小的一个以秒为单位找出差值,然后乘以1000得到毫秒数。