Учебники

Python Forensics — сетевой протокол времени

Наиболее широко используемый протокол для синхронизации времени, широко применяемый на практике, реализуется через сетевой протокол времени (NTP).

NTP использует протокол пользовательских дейтаграмм (UDP), который использует минимальное время для передачи пакетов между сервером и клиентом, которые хотят синхронизироваться с данным источником времени.

Сетевой протокол времени

Особенности протокола сетевого времени следующие:

  • Порт сервера по умолчанию — 123.

  • Этот протокол состоит из множества доступных серверов времени, синхронизированных с национальными лабораториями.

  • Стандарт протокола NTP регулируется IETF, а предлагаемым стандартом является RFC 5905 под названием «Протокол сетевого времени версии 4: спецификация протокола и алгоритмов» [NTP RFC]

  • Операционные системы, программы и приложения используют NTP для правильной синхронизации времени.

Порт сервера по умолчанию — 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

Разница во времени рассчитывается в вышеуказанной программе. Эти расчеты помогают в судебных расследованиях. Полученные данные сети принципиально отличаются от анализа данных, найденных на жестком диске.

Разница в часовых поясах или получение точных часовых поясов может помочь в сборе доказательств для сбора сообщений с помощью этого протокола.