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;
โปรแกรมข้างต้นจะสร้างผลลัพธ์ต่อไปนี้
ความแตกต่างของเวลาคำนวณในโปรแกรมข้างต้น การคำนวณเหล่านี้ช่วยในการสืบสวนทางนิติวิทยาศาสตร์ ข้อมูลเครือข่ายที่ได้รับนั้นแตกต่างกันโดยพื้นฐานจากการวิเคราะห์ข้อมูลที่พบในฮาร์ดไดรฟ์
ความแตกต่างของเขตเวลาหรือการได้รับเขตเวลาที่ถูกต้องสามารถช่วยในการรวบรวมหลักฐานในการบันทึกข้อความผ่านโปรโตคอลนี้