Python Forensics - โปรโตคอลเวลาเครือข่าย

โปรโตคอลที่ใช้กันอย่างแพร่หลายสำหรับการซิงโครไนซ์เวลาและซึ่งได้รับการยอมรับอย่างกว้างขวางว่าเป็นวิธีปฏิบัตินั้นทำผ่าน Network Time Protocol (NTP)

NTP ใช้ User Datagram Protocol (UDP) ซึ่งใช้เวลาขั้นต่ำในการสื่อสารแพ็กเก็ตระหว่างเซิร์ฟเวอร์และไคลเอนต์ที่ต้องการซิงโครไนซ์กับแหล่งเวลาที่กำหนด

คุณสมบัติของ Network Time Protocol มีดังนี้ -

  • พอร์ตเซิร์ฟเวอร์เริ่มต้นคือ 123

  • โปรโตคอลนี้ประกอบด้วยเซิร์ฟเวอร์เวลาที่สามารถเข้าถึงได้จำนวนมากที่ซิงโครไนซ์กับห้องปฏิบัติการระดับชาติ

  • มาตรฐานโปรโตคอล NTP อยู่ภายใต้ IETF และ Proposed Standard คือ RFC 5905 หัวข้อ“ Network Time Protocol เวอร์ชัน 4: Protocol and Algorithms Specification” [NTP RFC]

  • ระบบปฏิบัติการโปรแกรมและแอพพลิเคชั่นใช้ NTP เพื่อซิงโครไนซ์เวลาอย่างเหมาะสม

ในบทนี้เราจะเน้นไปที่การใช้งาน NTP กับ Python ซึ่งเป็นไปได้จาก ntplib ของ Python Library ของบุคคลที่สาม ไลบรารีนี้จัดการกับการยกของหนักได้อย่างมีประสิทธิภาพซึ่งเปรียบเทียบผลลัพธ์กับนาฬิการะบบภายในของฉัน

การติดตั้ง NTP Library

ntplib สามารถดาวน์โหลดได้ที่ https://pypi.python.org/pypi/ntplib/ ดังแสดงในรูปต่อไปนี้

ไลบรารีมีอินเทอร์เฟซที่เรียบง่ายให้กับเซิร์ฟเวอร์ 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;

โปรแกรมข้างต้นจะสร้างผลลัพธ์ต่อไปนี้

ความแตกต่างของเวลาคำนวณในโปรแกรมข้างต้น การคำนวณเหล่านี้ช่วยในการสืบสวนทางนิติวิทยาศาสตร์ ข้อมูลเครือข่ายที่ได้รับนั้นแตกต่างกันโดยพื้นฐานจากการวิเคราะห์ข้อมูลที่พบในฮาร์ดไดรฟ์

ความแตกต่างของเขตเวลาหรือการได้รับเขตเวลาที่ถูกต้องสามารถช่วยในการรวบรวมหลักฐานในการบันทึกข้อความผ่านโปรโตคอลนี้