Python 取证 - 网络时间协议


使用最广泛的时间同步协议是通过网络时间协议 (NTP) 完成的,该协议已被广泛接受为一种实践。

NTP 使用用户数据报协议 (UDP),该协议使用最短时间在服务器和希望与给定时间源同步的客户端之间传送数据包。

网络时间协议

网络时间协议的特点如下:

  • 默认服务器端口为 123。

  • 该协议由许多与国家实验室同步的可访问时间服务器组成。

  • NTP 协议标准由 IETF 管理,提议的标准是 RFC 5905,标题为“网络时间协议版本 4:协议和算法规范”[NTP RFC]

  • 操作系统、程序和应用程序使用 NTP 以正确的方式同步时间。

在本章中,我们将重点介绍 NTP 与 Python 的使用,这可以通过第三方 Python 库 ntplib 实现。该库有效地处理繁重的工作,它将结果与我的本地系统时钟进行比较。

安装 NTP 库

ntplib可以在https://pypi.python.org/pypi/ntplib/下载如下图所示。

该库借助可转换 NTP 协议字段的方法,为 NTP 服务器提供了一个简单的接口。这有助于访问其他关键值,例如闰秒。

安装 NTP 库

以下Python程序有助于理解NTP的用法。

import ntplib
import time

NIST = 'nist1-macon.macon.ga.us'
ntp = ntplib.NTPClient()
ntpResponse = ntp.request(NIST)

if (ntpResponse):
   now = time.time()
   diff = now-ntpResponse.tx_time
   print diff;

上述程序将产生以下输出。

使用 NTP 输出

时间差是在上述程序中计算的。这些计算有助于法医调查。获得的网络数据与对硬盘上的数据的分析有根本的不同。

时区的差异或获取准确的时区可以帮助收集通过此协议捕获消息的证据。