Python Forensics 简明教程

Python Forensics - Network Time Protocol

用于同步时间的且已被广泛接受为一种做法的最广泛使用的协议是通过网络时间协议 (NTP) 完成的。

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

network time protocol

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

  1. 默认服务器端口为 123。

  2. 该协议包含许多可以与国家实验室同步的可访问时间服务器。

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

  4. 操作系统、程序和应用程序使用 NTP 以适当的方式同步时间。

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

Installing the NTP Library

ntplib 可从 https://pypi.python.org/pypi/ntplib/ 处下载,如下图所示。

该库使用可转换 NTP 协议字段的方法提供 NTP 服务器的简单界面。这有助于访问其他关键值,例如闰秒。

installing ntp library

以下 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;

以上程序会生成以下输出。

using ntp output

在以上程序中计算了时间差。这些计算有助于进行取证调查。获得的网络数据从根本上不同于在硬盘上找到的数据分析。

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