从 ICMP 时间戳获取远程系统时间

从 ICMP 时间戳获取远程系统时间

我从一篇文章中看到,ICMP 时间戳可用于确定系统时间,所以我尝试了一下hping3 192.168.1.x --icmp --icmp-ts -V。输出显示

len=46 ip=192.168.1.x ttl=xx id=xxxx tos=0 iplen=40 icmp_seq=x rtt=x.xms
ICMP timestamp: Originate=27494134 Receive=27316024 Transmit=27316024
ICMP timestamp RTT tsrtt=xx

问题是我似乎无法理解输出...如何从上述结果中得出系统时间?还是我在这里做错了什么?


解决方案

远程主机的时间戳可以通过以下方式计算:Transmit=27316024

  1. 将 27316024 毫秒转换为小时,结果为 7.59 小时
  2. 7.59 小时相当于世界时间 07:35
  3. 根据您当地的时区更改时间

更多

时间戳是世界标准时间午夜以来的毫秒数。

Originate是本地机器制作请求数据包的时间
Receive是远程机器接收数据包的时间
Transmit是远程机器制作响应数据包的时间

答案1

阅读该协议,你会发现这是自 UT 以来的毫秒格式。https://www.ietf.org/rfc/rfc0792.txt

除非设备无法提供此信息,并且时间是假的 - 请阅读 RFC。这是一个聪明的技巧,但这不是获取时间的可靠方法。

相关内容