1
2
3 """Network Time Protocol."""
4
5 import time
6 import dpkt
7
8
9
10
11 NO_WARNING = 0
12 LAST_MINUTE_61_SECONDS = 1
13 LAST_MINUTE_59_SECONDS = 2
14 ALARM_CONDITION = 3
15
16
17 RESERVED = 0
18 SYMMETRIC_ACTIVE = 1
19 SYMMETRIC_PASSIVE = 2
20 CLIENT = 3
21 SERVER = 4
22 BROADCAST = 5
23 CONTROL_MESSAGE = 6
24 PRIVATE = 7
25
26 -class NTP(dpkt.Packet):
27 __hdr__ = (
28 ('flags', 'B', 0),
29 ('stratum', 'B', 0),
30 ('interval', 'B', 0),
31 ('precision', 'B', 0),
32 ('delay', 'I', 0),
33 ('dispersion', 'I', 0),
34 ('id', '4s', 0),
35 ('update_time', '8s', 0),
36 ('originate_time', '8s', 0),
37 ('receive_time', '8s', 0),
38 ('transmit_time', '8s', 0)
39 )
40
42 return (self.flags >> 3) & 0x7
44 self.flags = (self.flags & ~0x38) | ((v & 0x7) << 3)
45 v = property(_get_v, _set_v)
46
48 return (self.flags >> 6) & 0x3
50 self.flags = (self.flags & ~0xc0) | ((li & 0x3) << 6)
51 li = property(_get_li, _set_li)
52
54 return (self.flags & 0x7)
56 self.flags = (self.flags & ~0x7) | (mode & 0x7)
57 mode = property(_get_mode, _set_mode)
58
59 if __name__ == '__main__':
60 import unittest
61
64 n = NTP(self.s)
65 self.failUnless(self.s == str(n))
66
82
83 s = '\x24\x02\x04\xef\x00\x00\x00\x84\x00\x00\x33\x27\xc1\x02\x04\x02\xc8\x90\xec\x11\x22\xae\x07\xe5\xc8\x90\xf9\xd9\xc0\x7e\x8c\xcd\xc8\x90\xf9\xd9\xda\xc5\xb0\x78\xc8\x90\xf9\xd9\xda\xc6\x8a\x93'
84 unittest.main()
85