ααααααααααααααααααααΊα
- αα·ααααΆα’αααΈ DHCP αα ααΎαααααΆα IPv4
- ααα Python (α αααΎαααΆαααααΌαααααα·α π)
- ααΆααααα½ααααΆαααΈααα
DB2DHCP (ααααΉααααααααα»α), ααΎααα ααΈααα αααααΆαααααα·ααΆααααααΌααααα»ααααααΆαα OS ααααΈα α αΎααααα»ααα·αα αΌαα α·αααααΆααΆααΆαααααααααααααΈαααααα·αααΆααα·ααΈ "ααααΆααααααΌαα₯α‘αΌαααα" - ααΆαααα½αααΆααααΆαααΈααα DHCP ααααααα»αααααΎαααΆαααΆαα½αααΉααααααααΆααααα»αααΆαααααΎαααΎαα’αΆααααααΆα IP ααααα’αααααΆααααααααΎ mac ααααα’αααααΆα α¬ααααΌαααΆααα½ααααα αΌαααααΆαα mac+port (αααααΎα 82)
- αααααααααα½αααα (α’αΌ! αααααΆαααααααΆαααααααα»αα αΌαα α·ααα)
- ααα½αβααΆαβααα·βα’αααΈβααΆαβαααααβααΌαβααααΉαβααααβα’αααβαα βααΎ Habrahabr (α¬βααβααα’βααΆαβαααβαααβααΊβααΆβααΆαβα’ααααΎα) π
ααααααα ααΆααααΎαααΆα π ααΆαααααααΎ FreeBSD αα·α Ubuntu OS α ααΆαααααΉααααΈ ααΌαα’αΆα
ααααΌαααΆααα½αα±ααααααΎαααΆααα
ααααα OS ααΆαα½α αααααΆααα ααΆα αΆααααΌα
ααΆαα·αααΆαααΆαα
αααΆααααΆαααα
αααα»αααΌααααααα
αααααααα! αα
ααΆαα
αααΎαααααααααααΌαααα
ααααΆαααα
ααααΆαααααααΆααα’ααααααααααα
α·ααα
ααααΎαααΆαααααΆαααα‘αΎα ααααααα ααΆαααααααα αα·αααΆαααααΎααααΆααααααααααααΆα "αα·ααααΆαααααααΉα" ααΊααΆαααΆαα αααΎα α αΎααααααΆααααααααΉααααΈαα·α αα½α α’αααΈαα·ααΈααΆα DHCP α ααααΆααβααααΌβαβαααα»αα α αΎααααααΆαααααααααα·ααΆαααααπ
ααααΉααααΈαα·α αα½α
ααΎ DHCP ααΆα’αααΈ?
αααααΊααΆαα·ααΈααΆααααααΆααααα’αα»ααααΆαα±ααα§ααααααααααααα’αΆααααααΆα IP ααααααΆ (αα·ααααΆαααΆααααααααααααααααΌα ααΆ gateway, DNS ααα) ααΈαααΆαααΈααα DHCP α αααα ααααααΌαααΆαααααΆααααααΌααααααααΎαα·ααΈααΆα UDP α αααααΆαααααΌαα ααααααα·ααααα·ααΆαααααα§ααααααα αααααααΎαα»ααααΆαααΆαααααααααααΆαααΆαααΌα ααΆααααααα
- α§ααααα (α’αα·αα·αα) ααααΎααααΎααΆαααααΆα UDP (DHCPDISCOVER) ααααααααΆαααΆαα½αααΉαααααΎ "ααα’ ααααΆααααΆαααααααα±αααααα»αααΌαα’αΆααααααΆα IP" α ααΎαααΈααααα ααα ααΆααααααΆ (ααα»αααααα·αααααα) ααααΎααΎαα‘αΎαααΈα ααα 68 (ααααα) α αΎααα·ααα ααΊα ααα 67 (αα·ααα ) α α§ααααααα½αα ααα½αααααααΎαααα ααααααααΆαααΈα ααα 67 αααααα α’αΆααααααΆα MAC ααααα§αααααα’αα·αα·ααααααΌαααΆααα½ααααα αΌααα αααα»ααααα ααααααααΆα DHCPDISCOVER α
- αααΆαααΈααα DHCP ααΆααα’αααααααΆαααΈααΆαααα ααΎαααααΆα (α αΎαααΆα’αΆα ααΆααα½αα ααα½ααααα»αα αααααα½αααΆ) αααααΎαααΆααααααααΌα DHCPOFFER ααΆαα½αααΉαααΆαααααααααααΆααααααΆααα§ααααααααααΆαααααΎ DHCPDISCOVER α αΎαααα αΆααααααΆαααΆααΆααααααΆααααααα ααΆααααααα’ααααααααΆαα’αααααααααα ααααααααΆααααααααΌαααΆαααααα»ααα»ααααααΆααααΊααα’ααααΎα’αΆααααααΆα MAC ααααα’αα·αα·αααααααΆαααααααα»ααα αααα»αααααΎ DHCPDISCOVER α
- α’αα·αα·ααααα½ααααααα ααααααααΆαααΆαα½αααΉαααααΎαααααΆααααΆαααααααααααΆα ααααΎαααΎαα’αααΈαααααΆααααΆααααα»α (αααααααα·αα·α ααααα’αΆα αα»αααααΆ α§ααΆα ααα αααααααΆααααΆαααααααααα ααααααααΆα α ααα½αααααΌαααααα) αα·αααααΎ "ααααΎααααΌαααΆα" DHCPREQUEST ααΆαα½αααΉαααΆαααααααααααΆα ααΈαααΆαααΈααα DHCP αααααΆα αΌαα α·αααα αααα»αααααΈααα αααα ααααααααΆααα ααΆαααααΆαααΈααα DHCP ααΆααααΆααα
- αααΆαααΈααααααααΆαααα½α DHCPREQUEST ααααΎαααα αααααααα DHCPACK ααααααα»ααααααΆααΆααααααΈααΆαααααααααααΆααααααΆααααααααααΆααα’αα·αα·αααααααααααα
ααΎαααΈαααααα ααΆααααα
ααααααααΆα DHCPINFORM αααα
ααααααΈα’αα·αα·αα α αΎααααααααααΊααΎααααΈααΌαααααΉαααααααΆαααΈααα DHCP ααΆ "α’αα·αα·αααα
ααα" αα·ααααα»αααααΎααΆαααααααααααΆααααααΆαα
ααα αα
αααα»αααΆαα’αα»αααααααααααΆαααΈαααααα αααα
ααααααααΆαααΆααααααα·αααααΌαααΆαα’αΎααΎααα
αααααααααα αα
ααΆααΌαα ααα»ααααα αα Ethernet ααΎααα ααΌα αααα
αααα»αααααΈααααααΎα ααΎαααΉααα·α
αΆαααΆαααα·αααααααααααααΆααααΈααααΉαααΆααααααα
ααααααααΆα UDP αααααααΆαααααααΆαα·ααΈααΆααααααΆαα OSI αααααΊαα
ααΆαααααααα DHCPα
DHCPDISCOVER
ααΌα αααα ααααΎαααΆαααααΆαααα½αααΆαα’αΆααααααΆα IP αααααΆααα§αααααα αΆααααααΎαααααααΆαααΈαααααα DHCP ααααΎααααΎααααΆαααΈα ααα 68 αα 255.255.255.255:67 α αα αααα»ααααα ααααα α’αα·αα·αααα½ααααα αΌαα’αΆααααααΆα MAC ααααααΆ ααααΌα ααΆα’αααΈαααααΆα ααααα½αααΆαααΈαααΆαααΈααα DHCP α αα ααΆαααααααααααα ααααααΌαααΆααα·αααααΆαα αααα»αααΆααΆαααΆααααααα
ααΆααΆααα ααΆαααααααααααα αα DHCPDISCOVER
ααΈααΆαααα
αααα»ααααα
αα
αααααααααα
α§ααΆα ααα:
ααα
ααααΈααααΆα
αα
ααΆααααααα
1
ααααΎα
αΆααααααΎα
1
ααααααααααΆααα½α
1
ααααααααΆαα 1 - ααααΎααΈα’αα·αα·αααα
αααΆαααΈααα 2 - ααΆαααααΎαααααΈαααΆαααΈααααα
α’αα·αα·αα
2
αααααα Hardware
1
ααααααααααΆααα½α
1
ααααααααα’αΆααααααΆααααααααΉα αα
αααα»ααα·ααΈααΆαααα 1 - MAC
3
αααααααΉαααααααααααα
6
ααααααααααΆααα½α
1
ααααααα’αΆααααααΆα MAC α§ααααα
4
Hops
1
ααααααααααΆααα½α
1
α
ααα½αααααΌαααααα
5
αααβαααααΆααβααααα·βαβαααα·βααΆα
23:cf:de:1d
ααααααααααΆααα½α
4
α§ααααααααααα’ααααααααΆαααααα·ααααα·ααΆααα·αααα αααααΎααααα’αα·αα·αααα
ααΎαααααΌαααααααα·ααααα·ααΆαααααΎ
7
ααΈααΈαααΆαααααααα»ααα
0
ααααααααααΆααα½α
4
αααααααΆαα·αααΆαα·ααΆααΈα
αΆααααΈααΆαα
αΆααααααΎαααααααΎαααΆαααα½αα’αΆααααααΆα
9
αααα
αΆααααααΎα
0
ααααααααααΆααα½α
2
ααααα½αα
ααα½ααααα’αΆα
αααααααΎααααΈαααα αΆαααΈαααΆαααΆαααααααα·ααΈααΆα
11
α’αΆααααααΆα IP ααααα’αα·αα·αα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP ααααα’αα·αα·αα (ααααα·αααΎααΆα)
15
α’αΆααααααΆα IP α’αα·αα·ααααααα’αααα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP ααααααααααααααΆαααΈααα (ααααα·αααΎααΆα)
19
α’αΆααααααΆα IP αααΆαααΈααααααααΆαα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP αααΆαααΈααα (ααααα·αααΎααααΆαα)
23
α’αΆααααααΆα IP ααααΆααααΆααααααΌααααα
172.16.114.41
αααααΆαα
4
α’αΆααααααΆα IP ααααααααΆααααΆααααααΌαα (α§ααΆα ααα αα»αααΆαα)
27
α’αΆααααααΆα MAC ααααα’αα·αα·αα
14:d6:4d:a7:c9:55
ααααααααααΆααα½α
6
α’αΆααααααΆα MAC ααααα’αααααααΎαααα
ααααααααΆα (α’αα·αα·αα)
31
αααααα’αΆααααααΆααααααααΉαααααα’αα·αα·αα
ααααααααααΆααα½α
10
αα
α’αΈααααα»αα ααΆααααααΆααααΌαααΆααααααααααααααΌααα
41
ααααααααΆαααΈααα
αααααΆαα
64
ααααααααΆαααΈααα DHCP α ααΆααααααΆαα·αααααααα
105
αααααα―αααΆαα
αΆααααααΎα
αααααΆαα
128
αααααα―αααΆααα
ααΎαααΆαααΈααααααααααΎαααααααΆααΈαααααΆαααΆααα
αααα
αΆααααααΎα
235
ααΌααΈααααααα
63: 82: 53: 63
ααααααααααΆααα½α
4
ααα "ααααααα" αααααΎαααααΆαααααα½ααααα
αΌαα α’αααα’αΆα
αααααααΆαααα
ααααααααΆααααααΆαααααα·αααα·αααααα·ααΈααΆα DHCP
αααααΎα DHCP α α’αΆα αα ααΆαααααΆααααΆαα½αα
236
ααααααααΎα
53
ααααΌ
1
αααααΎα 53 ααααααααΆαααααααααααα
ααααααααΆα DHCP
1 - DHCPDISCOVER
3 - DHCPREQUEST
2 - DHCPOFFER
5 - DHCPACK
8 - DHCPINFORM
αααααααααααΎα
1
ααααΌ
1
ααααααααααΎα
1
ααααΌ
1
ααααααααΎα
50
ααααΌ
1
ααΎα’αΆααααααΆα IP ααΆαααα’αα·αα·ααα
ααααα½αααΆα?
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
172.16.134.61
αααααΆαα
4
ααααααααΎα
55
1
αααΆαααΆαααααααααααΆααααααΆαααααΎαααα’αα·αα·ααα αααΆαααΆαα’αΆα
αα»αααααΆ
01 - αααΆαααααααΆα
α α£ - α
αααα
ααα
αΌα
α α¦ - DNS
oc - ααααααααΆαααΈα
0f - αααααααααααααΆα
1c - α’αΆααααααΆαααααααΎααΆαααααΆα (ααααΆα)
42 - ααααααααΆαααΈααα TFTP
79 - classless Static Route
αααααααααααΎα
8
1
ααααααααααΎα
01:03:06:0c:0f:1c:42:79
8
ααααααααΎα
82
ααααΌ
αααααΎα 82 ααααααααΌαα’αΆααααααΆα MAC ααα§ααααα repeater αα·αααααααααααααα½αα
ααα½αα
ααΆαα αααΎαααΆααΆα ααααααα»αααΆααααααααΆαααΈαααααα DHCP ααααΎαααΆαα αααααΎααααααΆααααΆαααΆααααααααααααα ααααΈαα½αααΊααΆα ααα½ααα "suboption" ααΈααΈαααΊααααααααααααΆ αααααΆαααααααααααααααΆα
αααα»αααααΈααα αααα»ααααααΎαααΈ 82 αααααΎαααααααΌαααΆαααΆαααααα
αΌαα
Agent Circuit ID = 00:04:00:01:00:04 αααααΈαααα
α»ααααααααΊααΆα
ααααααΆαααΈαααααα DHCP αααααααΎααΆααα
ααααααααΆααααααΆααααΆαααΈα ααααΆα = 00:06:c8:be:19:93:11:48 - α’αΆααααααΆα MAC ααααα§αααααα’ααααα·ααΆαα‘αΎααα·α DHCP
αααααααααααΎα
18
ααααΌ
ααααααααααΎα
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
ααααααααααΆααα½α
α
α»ααααα
αααααααα
αα
255
ααααΌ
1
255 ααααΆαα±ααα
α»ααααα
αααααααα
ααααααααΆα
DHCPOFFER
αααΆαααΆαααΆαααΈαααααα½αααΆααααα ααααααααΆα DHCPDISCOVER α αΎαααααα·αααΎααΆααΎαααΆααΆα’αΆα αααααααΌαα’αα·αα·ααααΌαα’αααΈαα½αααΈααααΎαααααΆαααααΎαα»αααα ααΆαααααΎαααΆαααααΎααααααααΆααααΆ - DHCPDISCOVER α ααΆαααααΎαααααααΌαααΆααααααΌααα α ααα "ααΈαααααααααααΆααΆααα" αααααΆαααααΆααααααΆααα αα αααααα α’αα·αα·αααα·αααΆααααΆαα’αΆααααααΆα IP αα α‘αΎααα ααΌα ααααααΆα’αΆα ααα½ααααααα ααααααααΆαααΆααα»αααααΆααααΆααααΌαααΆαααααΎαααααΆαααααΆαα α’αα·αα·ααααα½αααααΆααααΆαααααΊααΆαααα αααααααΆααααΆαααααα’αΆααααααΆα MAC ααααααΆαααα αααα»ααααα αα ααααΌα ααΆαααααααα·ααααα·ααΆααααααΆαααααααΎααα ααααααα ααααααΌαααααΌαααΆααααααΎαα
ααΆααΆααα ααΆαααααααααααα αα DHCPOFFER
ααΈααΆαααα
αααα»ααααα
αα
αααααααααααα (ααΌαα
)
α§ααΆα ααα:
ααα
ααααΈααααΆα
αα
ααΆααααααα
1
ααααΎα
αΆααααααΎα
1
ααααααααααΆααα½α
1
ααααααααΆαα 1 - ααααΎααΈα’αα·αα·αααα
αααΆαααΈααα 2 - ααΆαααααΎαααααΈαααΆαααΈααααα
α’αα·αα·αα
2
αααααα Hardware
1
ααααααααααΆααα½α
1
ααααααααα’αΆααααααΆααααααααΉα αα
αααα»ααα·ααΈααΆαααα 1 - MAC
3
αααααααΉαααααααααααα
6
ααααααααααΆααα½α
1
ααααααα’αΆααααααΆα MAC α§ααααα
4
Hops
1
ααααααααααΆααα½α
1
α
ααα½αααααΌαααααα
5
αααβαααααΆααβααααα·βαβαααα·βααΆα
23:cf:de:1d
ααααααααααΆααα½α
4
α§ααααααααααα’ααααααααΆαααααα·ααααα·ααΆααα·αααα αααααΎααααα’αα·αα·αααα
ααΎαααααΌαααααααα·ααααα·ααΆαααααΎ
7
ααΈααΈαααΆαααααααα»ααα
0
ααααααααααΆααα½α
4
αααααααΆαα·αααΆαα·ααΆααΈα
αΆααααΈααΆαα
αΆααααααΎαααααααΎαααΆαααα½αα’αΆααααααΆα
9
αααα
αΆααααααΎα
0
ααααααααααΆααα½α
2
ααααα½αα
ααα½ααααα’αΆα
αααααααΎααααΈαααα αΆαααΈαααΆαααΆαααααααα·ααΈααΆαα αααα»αααααΈααα 0 ααΆααααααΆααααααααααΎ Unicast
11
α’αΆααααααΆα IP ααααα’αα·αα·αα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP ααααα’αα·αα·αα (ααααα·αααΎααΆα)
15
α’αΆααααααΆα IP α’αα·αα·ααααααα’αααα
172.16.134.61
αααααΆαα
4
α’αΆααααααΆα IP ααααααααααααααΆαααΈααα (ααααα·αααΎααΆα)
19
α’αΆααααααΆα IP αααΆαααΈααααααααΆαα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP αααΆαααΈααα (ααααα·αααΎααααΆαα)
23
α’αΆααααααΆα IP ααααΆααααΆααααααΌααααα
172.16.114.41
αααααΆαα
4
α’αΆααααααΆα IP ααααααααΆααααΆααααααΌαα (α§ααΆα ααα αα»αααΆαα)
27
α’αΆααααααΆα MAC ααααα’αα·αα·αα
14:d6:4d:a7:c9:55
ααααααααααΆααα½α
6
α’αΆααααααΆα MAC ααααα’αααααααΎαααα
ααααααααΆα (α’αα·αα·αα)
31
αααααα’αΆααααααΆααααααααΉαααααα’αα·αα·αα
ααααααααααΆααα½α
10
αα
α’αΈααααα»αα ααΆααααααΆααααΌαααΆααααααααααααααΌααα
41
ααααααααΆαααΈααα
αααααΆαα
64
ααααααααΆαααΈααα DHCP α ααΆααααααΆαα·αααααααα
105
αααααα―αααΆαα
αΆααααααΎα
αααααΆαα
128
αααααα―αααΆααα
ααΎαααΆαααΈααααααααααΎαααααααΆααΈαααααΆαααΆααα
αααα
αΆααααααΎα
235
ααΌααΈααααααα
63: 82: 53: 63
ααααααααααΆααα½α
4
ααα "ααααααα" αααααΎαααααΆαααααα½ααααα
αΌαα α’αααα’αΆα
αααααααΆαααα
ααααααααΆααααααΆαααααα·αααα·αααααα·ααΈααΆα DHCP
αααααΎα DHCP α α’αΆα αα ααΆαααααΆααααΆαα½αα
236
ααααααααΎα
53
ααααΌ
1
αααααΎα 53 αααααααααααααααααα
ααααααααΆα DHCP 2 - DHCPOFFER
αααααααααααΎα
1
ααααΌ
1
ααααααααααΎα
2
ααααΌ
1
ααααααααΎα
1
ααααΌ
1
αααααΎαααΎααααΈαααααααΌαα’αα·αα·αα DHCP ααΌααααΆαααααααΆα
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
255.255.224.0
αααααΆαα
4
ααααααααΎα
3
ααααΌ
1
αααααΎαααΎααααΈαααααααΌαα’αα·αα·αα DHCP ααΌαα
αααα
ααα
αΌαααααΆαααΎα
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
172.16.12.1
αααααΆαα
4
ααααααααΎα
6
ααααΌ
1
αααααΎαααΎααααΈαααααααΌα DHCP ααααααΆαααΈαααααα DNS
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
8.8.8.8
αααααΆαα
4
ααααααααΎα
51
ααααΌ
1
α’αΆαα»ααΆααααααΆαααΆαααααααααααΆααααααΆαα
αααα·αααΆαα·ααΆααΈ αααααΆααααΈααααααΆαααΈαααααα DHCP ααααΌαααααααΎαα»ααα½αααΆααααααα
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
86400
ααααΌ
4
ααααααααΎα
82
ααααΌ
1
αααααΎαααΈ 82 ααααΎα‘αΎααα·αααΌαα’αααΈαααααΆααααααα»α DHCPDISCOVER
αααααααααααΎα
18
ααααΌ
1
ααααααααααΎα
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4 α: α’α
ααααΌ
18
α
α»ααααα
αααααααα
αα
255
ααααΌ
1
255 ααααΆαα±ααα
α»ααααα
αααααααα
ααααααααΆα
DHCPREQUEST
αααααΆααααΈα’αα·αα·ααααα½αααΆα DHCPOFFER ααΆαααααααΎααααα ααααααααΆααααααααΎαα»ααααΆαααΆαααααααααααΆααα·αααααααααΆαααααΆαααΈααα DHCP ααΆααα’αααα ααΎαααααΆαααααα ααα»αααααααααΆααααααΆααααΆαααα½αααα»αααααααα DHCPOFFER αααααααΌαααΆαα "α αΌαα α·ααα" αααα»αα αααααααα·αα·α αααα "α αΌαα α·ααα" α’αΆα αα»αααααΆ αα·αα’αΆαααααααΎααΆαα’αα»αααα DHCP ααααα’αα·αα·ααα α’αααααα½αααααΎααααΌαααΆααααααΆαααααααααΎα’αΆααααααΆα MAC αααααΆαααΈααα DHCP α ααΌα ααααΆαααααααα αααα ααααααααΆα DHCPREQUEST α’αΆα ααααΌαααΆαααααΎαααα’αα·αα·ααααααα·αα αΆαααΆα ααααααΎα DHCPDISCOVER ααΆαα»ααα·α ααααα·αααΎα’αΆααααααΆα IP αααααααΆαααΈαααααααΌαααΆαααα½αααΈαα»ααα½α α αΎαα
ααΆααΆααα ααΆαααααααααααα αα DHCPREQUEST
ααΈααΆαααα
αααα»ααααα
αα
αααααααααααα (ααΌαα
)
α§ααΆα ααα:
ααα
ααααΈααααΆα
αα
ααΆααααααα
1
ααααΎα
αΆααααααΎα
1
ααααααααααΆααα½α
1
ααααααααΆαα 1 - ααααΎααΈα’αα·αα·αααα
αααΆαααΈααα 2 - ααΆαααααΎαααααΈαααΆαααΈααααα
α’αα·αα·αα
2
αααααα Hardware
1
ααααααααααΆααα½α
1
ααααααααα’αΆααααααΆααααααααΉα αα
αααα»ααα·ααΈααΆαααα 1 - MAC
3
αααααααΉαααααααααααα
6
ααααααααααΆααα½α
1
ααααααα’αΆααααααΆα MAC α§ααααα
4
Hops
1
ααααααααααΆααα½α
1
α
ααα½αααααΌαααααα
5
αααβαααααΆααβααααα·βαβαααα·βααΆα
23:cf:de:1d
ααααααααααΆααα½α
4
α§ααααααααααα’ααααααααΆαααααα·ααααα·ααΆααα·αααα αααααΎααααα’αα·αα·αααα
ααΎαααααΌαααααααα·ααααα·ααΆαααααΎ
7
ααΈααΈαααΆαααααααα»ααα
0
ααααααααααΆααα½α
4
αααααααΆαα·αααΆαα·ααΆααΈα
αΆααααΈααΆαα
αΆααααααΎαααααααΎαααΆαααα½αα’αΆααααααΆα
9
αααα
αΆααααααΎα
8000
ααααααααααΆααα½α
2
ααααα½αα
ααα½ααααα’αΆα
αααααααΎααααΈαααα αΆαααΈαααΆαααΆαααααααα·ααΈααΆαα αααα»αααααΈααα "ααΆαααααΆα" ααααΌαααΆαααααα
11
α’αΆααααααΆα IP ααααα’αα·αα·αα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP ααααα’αα·αα·αα (ααααα·αααΎααΆα)
15
α’αΆααααααΆα IP α’αα·αα·ααααααα’αααα
172.16.134.61
αααααΆαα
4
α’αΆααααααΆα IP ααααααααααααααΆαααΈααα (ααααα·αααΎααΆα)
19
α’αΆααααααΆα IP αααΆαααΈααααααααΆαα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP αααΆαααΈααα (ααααα·αααΎααααΆαα)
23
α’αΆααααααΆα IP ααααΆααααΆααααααΌααααα
172.16.114.41
αααααΆαα
4
α’αΆααααααΆα IP ααααααααΆααααΆααααααΌαα (α§ααΆα ααα αα»αααΆαα)
27
α’αΆααααααΆα MAC ααααα’αα·αα·αα
14:d6:4d:a7:c9:55
ααααααααααΆααα½α
6
α’αΆααααααΆα MAC ααααα’αααααααΎαααα
ααααααααΆα (α’αα·αα·αα)
31
αααααα’αΆααααααΆααααααααΉαααααα’αα·αα·αα
ααααααααααΆααα½α
10
αα
α’αΈααααα»αα ααΆααααααΆααααΌαααΆααααααααααααααΌααα
41
ααααααααΆαααΈααα
αααααΆαα
64
ααααααααΆαααΈααα DHCP α ααΆααααααΆαα·αααααααα
105
αααααα―αααΆαα
αΆααααααΎα
αααααΆαα
128
αααααα―αααΆααα
ααΎαααΆαααΈααααααααααΎαααααααΆααΈαααααΆαααΆααα
αααα
αΆααααααΎα
235
ααΌααΈααααααα
63: 82: 53: 63
ααααααααααΆααα½α
4
ααα "ααααααα" αααααΎαααααΆαααααα½ααααα
αΌαα α’αααα’αΆα
αααααααΆαααα
ααααααααΆααααααΆαααααα·αααα·αααααα·ααΈααΆα DHCP
αααααΎα DHCP α α’αΆα αα ααΆαααααΆααααΆαα½αα
236
ααααααααΎα
53
ααααΌ
3
αααααΎα 53 αααααααααααααααααα
ααααααααΆα DHCP 3 - DHCPREQUEST
αααααααααααΎα
1
ααααΌ
1
ααααααααααΎα
3
ααααΌ
1
ααααααααΎα
61
ααααΌ
1
ααααααααΆααα’αα·αα·ααα 01 (αααααΆαα Ehernet) + α’αΆααααααΆα MAC αααΆαααΈαααααα
αααααααααααΎα
7
ααααΌ
1
ααααααααααΎα
01:2c:ab:25:ff:72:a6
ααααααααααΆααα½α
7
ααααααααΎα
60
ααααΌ
"α’αααβαααααβααααΆααβα’αααβααα"α αααα»αααααΈαααααααα»α ααΆααΆαααΆαααα’αααΈαααααααΆαααΈαααααα DHCP α αααα ααααΆα§ααααααααααααααααα‘ααα’αααΈααααα α§ααΆα ααα Windows ααΆαααΆααα MSFT 5.0
αααααααααααΎα
11
ααααΌ
ααααααααααΎα
udhcp α .α©α©
αααααΆαα
ααααααααΎα
55
1
αααΆαααΆαααααααααααΆααααααΆαααααΎαααα’αα·αα·ααα αααΆαααΆαα’αΆα
αα»αααααΆ
01 - αααΆαααααααΆα
α α£ - α
αααα
ααα
αΌα
α α¦ - DNS
oc - ααααααααΆαααΈα
0f - αααααααααααααΆα
1c - α’αΆααααααΆαααααααΎααΆαααααΆα (ααααΆα)
42 - ααααααααΆαααΈααα TFTP
79 - classless Static Route
αααααααααααΎα
8
1
ααααααααααΎα
01:03:06:0c:0f:1c:42:79
8
ααααααααΎα
82
ααααΌ
1
αααααΎαααΈ 82 ααααΎα‘αΎααα·αααΌαα’αααΈαααααΆααααααα»α DHCPDISCOVER
αααααααααααΎα
18
ααααΌ
1
ααααααααααΎα
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4 α: α’α
ααααΌ
18
α
α»ααααα
αααααααα
αα
255
ααααΌ
1
255 ααααΆαα±ααα
α»ααααα
αααααααα
ααααααααΆα
DHCPACK
ααΆβααΆαβαααααΆααβααΆ "ααΆα/α αΆα αααβααααΌαβα αΎα αααβααΆβα’αΆααααααΆα IP ααααβα’ααα α αΎαβαααα»αβααΉαβαα·αβαααααβααΆβαα βα±ααβα’αααβααααα" ααΈβαααΆαααΈαβαααααΎ DHCP αααβααΆβαααα ααβααααααΆαβαααα»αβαααααα DHCPACK ααΈβαααΆαααΈαβαααααΎβαααβα’αα·αα·ααβαααααΎα ααΆβααααΌαβααΆαβααααΎβααΆαβααααΆαβααΌα βααΆβαααα ααβαααααβαααβα αααααΈααΆαα αααα»αααΌαααΆαααααααααααΆαααααΆαααΈααα DHCP αααααΆαα’αα»αααααα αααα»α Python ααααα αααα»αααααΈααααααα»αα ααααααααΎααΆαααααΆαααΆαα½ααααααααΎαααα ααααααααΆααα ααΆαα IP α’αα·αα·ααααΆααααΆαα ααααα·αααΎααΆααααΌαααΆαααααΉααα½α α αΎαα ααΎαααΈααααα ααα αααΆαααΈααα DHCP αα·ααααααααΆαααααααααΆααΎαααα ααααααααΆα DHCPACK ααΆααα ααααααΆαααΈαααααααααα¬ααα ααααα·αααΎα’αα·αα·αααα·αααα½αααΆα DHCPACK ααααα½αααααα»αααααααα ααΆααααΆααααααααΎααααααα DHCPREQUEST
ααΆααΆααα ααΆαααααααααααα αα DHCPACK
ααΈααΆαααα
αααα»ααααα
αα
αααααααααααα (ααΌαα
)
α§ααΆα ααα:
ααα
ααααΈααααΆα
αα
ααΆααααααα
1
ααααΎα
αΆααααααΎα
2
ααααααααααΆααα½α
1
ααααααααΆαα 1 - ααααΎααΈα’αα·αα·αααα
αααΆαααΈααα 2 - ααΆαααααΎαααααΈαααΆαααΈααααα
α’αα·αα·αα
2
αααααα Hardware
1
ααααααααααΆααα½α
1
ααααααααα’αΆααααααΆααααααααΉα αα
αααα»ααα·ααΈααΆαααα 1 - MAC
3
αααααααΉαααααααααααα
6
ααααααααααΆααα½α
1
ααααααα’αΆααααααΆα MAC α§ααααα
4
Hops
1
ααααααααααΆααα½α
1
α
ααα½αααααΌαααααα
5
αααβαααααΆααβααααα·βαβαααα·βααΆα
23:cf:de:1d
ααααααααααΆααα½α
4
α§ααααααααααα’ααααααααΆαααααα·ααααα·ααΆααα·αααα αααααΎααααα’αα·αα·αααα
ααΎαααααΌαααααααα·ααααα·ααΆαααααΎ
7
ααΈααΈαααΆαααααααα»ααα
0
ααααααααααΆααα½α
4
αααααααΆαα·αααΆαα·ααΆααΈα
αΆααααΈααΆαα
αΆααααααΎαααααααΎαααΆαααα½αα’αΆααααααΆα
9
αααα
αΆααααααΎα
8000
ααααααααααΆααα½α
2
ααααα½αα
ααα½ααααα’αΆα
αααααααΎααααΈαααα αΆαααΈαααΆαααΆαααααααα·ααΈααΆαα αααα»αααααΈααα "ααΆαααααΆα" ααααΌαααΆαααααα
11
α’αΆααααααΆα IP ααααα’αα·αα·αα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP ααααα’αα·αα·αα (ααααα·αααΎααΆα)
15
α’αΆααααααΆα IP α’αα·αα·ααααααα’αααα
172.16.134.61
αααααΆαα
4
α’αΆααααααΆα IP ααααααααααααααΆαααΈααα (ααααα·αααΎααΆα)
19
α’αΆααααααΆα IP αααΆαααΈααααααααΆαα
0.0.0.0
αααααΆαα
4
α’αΆααααααΆα IP αααΆαααΈααα (ααααα·αααΎααααΆαα)
23
α’αΆααααααΆα IP ααααΆααααΆααααααΌααααα
172.16.114.41
αααααΆαα
4
α’αΆααααααΆα IP ααααααααΆααααΆααααααΌαα (α§ααΆα ααα αα»αααΆαα)
27
α’αΆααααααΆα MAC ααααα’αα·αα·αα
14:d6:4d:a7:c9:55
ααααααααααΆααα½α
6
α’αΆααααααΆα MAC ααααα’αααααααΎαααα
ααααααααΆα (α’αα·αα·αα)
31
αααααα’αΆααααααΆααααααααΉαααααα’αα·αα·αα
ααααααααααΆααα½α
10
αα
α’αΈααααα»αα ααΆααααααΆααααΌαααΆααααααααααααααΌααα
41
ααααααααΆαααΈααα
αααααΆαα
64
ααααααααΆαααΈααα DHCP α ααΆααααααΆαα·αααααααα
105
αααααα―αααΆαα
αΆααααααΎα
αααααΆαα
128
αααααα―αααΆααα
ααΎαααΆαααΈααααααααααΎαααααααΆααΈαααααΆαααΆααα
αααα
αΆααααααΎα
235
ααΌααΈααααααα
63: 82: 53: 63
ααααααααααΆααα½α
4
ααα "ααααααα" αααααΎαααααΆαααααα½ααααα
αΌαα α’αααα’αΆα
αααααααΆαααα
ααααααααΆααααααΆαααααα·αααα·αααααα·ααΈααΆα DHCP
αααααΎα DHCP α α’αΆα αα ααΆαααααΆααααΆαα½αα
236
ααααααααΎα
53
ααααΌ
3
αααααΎα 53 αααααααααααααααααα
ααααααααΆα DHCP 5 - DHCPACK
αααααααααααΎα
1
ααααΌ
1
ααααααααααΎα
5
ααααΌ
1
ααααααααΎα
1
ααααΌ
1
αααααΎαααΎααααΈαααααααΌαα’αα·αα·αα DHCP ααΌααααΆαααααααΆα
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
255.255.224.0
αααααΆαα
4
ααααααααΎα
3
ααααΌ
1
αααααΎαααΎααααΈαααααααΌαα’αα·αα·αα DHCP ααΌαα
αααα
ααα
αΌαααααΆαααΎα
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
172.16.12.1
αααααΆαα
4
ααααααααΎα
6
ααααΌ
1
αααααΎαααΎααααΈαααααααΌα DHCP ααααααΆαααΈαααααα DNS
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
8.8.8.8
αααααΆαα
4
ααααααααΎα
51
ααααΌ
1
α’αΆαα»ααΆααααααΆαααΆαααααααααααΆααααααΆαα
αααα·αααΆαα·ααΆααΈ αααααΆααααΈααααααΆαααΈαααααα DHCP ααααΌαααααααΎαα»ααα½αααΆααααααα
αααααααααααΎα
4
ααααΌ
1
ααααααααααΎα
86400
ααααΌ
4
ααααααααΎα
82
ααααΌ
1
αααααΎαααΈ 82 ααααΎα‘αΎααα·αααΌαα’αααΈαααααΆααααααα»α DHCPDISCOVER
αααααααααααΎα
18
ααααΌ
1
ααααααααααΎα
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4 α: α’α
ααααΌ
18
α
α»ααααα
αααααααα
αα
255
ααααΌ
1
255 ααααΆαα±ααα
α»ααααα
αααααααα
ααααααααΆα
ααΆαααααα
ααΆαααα‘αΎααα·αααΆααΆαααΆαααα‘αΎααααΌαα»α python αααα αΆαααΆα ααααααΆααααΆαααΆαα ααΆααααΌαααΆαααααααααΆ MySQL ααααΌαααΆαααα‘αΎα αα·αααααααα ααΆαααααααααα½α α αΎαα
FreeBSD
pkg ααα‘αΎα python3 python3 -m ensurepip pip3 ααα‘αΎα mysql-connector
ααΌααα»αααΌ
sudo apt-get ααα‘αΎα python3 sudo apt-get ααα‘αΎα pip3 sudo pip3 ααα‘αΎα mysql-connector
ααΎααααααΎαααΌαααααΆααα·αααααα MySQL αααα»αα―αααΆα pydhcp.sql αα αααα»αααΆ α αΎααααα αα―αααΆαααααααα ααΆααααααααα
ααΆααααααβαα ααΆαααααααα
ααΆαααααααααΆαααΈαααααΆααα’αααααα·ααα αααα»αα―αααΆα xml α α―αααΆααααα
1.0 α’α₯α₯.α’α₯α₯.α’α₯α₯.α’α₯α₯ 0.0.0.0 α¨α¦α α α‘ 255.255.255.255 192.168.0.71 α¨.α¨.α¨.α¨ localhost ααΆααααα ααΆααααα pydhcp option_8600_hex: sw_port1:255.255.255.0:192.168.0.1 option_8.8.8.8_hex: sw_port82:1:20 option_22_hex: sw_mac: 82:2 α£ ααααΎαααΎα ip,mask,router,dns ααΈα’αααααααΎααααΆααααα upper(mac)=upper('{option_16_AgentRemoteId_hex}') αα·α upper(port)=upper('{option_18_AgentCircuitId_port_hex}') ααααΎαααΎα ip,mask,router,dns ααΈα’αααααααΎααααΆααααα upper(mac)=upper('{sw_mac}') αα·α upper(port)=upper('{sw_port82}') ααααΎαααΎα ip,mask,router,dns ααΈα’αααααααΎααααΆααααα upper(mac)=upper('{ClientMacAddress}') αααα αΌααα αααα»ααααααααα· (id,dt,mac,ip,comment) ααααα (null,now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')
α₯α‘αΌαααααα αααα»ααααα’α·αααααααααααα ααΎααααΆα:
ααααα dhcpserver αα·αααααΆα’αααΈααΆααααααααΌαααααΆααααααΆααααΆαα αΆααααααΎααααΆαααΈααα αααααΊα
- αααΆαααΈα - α’αΆααααααΆα IP ααΆααααααΆαααΈαααααααΆαααα ααΎα ααα 67
- ααΆαααααΆα - ααΎ ip αα½αααΆααΆα’αααααααΆααααααΆαα DHCPOFFER αα·α DHCPACK
- DHCPServer - ααΎα’αααΈαα ααΆ ip αααααααΆαααΈααα DHCP
- αααααααΆαα½α LeaseTime ααα’αΆααααααΆα IP αααααΆαα αα
- ThreadLimit - ααΎααΆααααααααα‘αΆαααα»ααααΆαααααααα»αααααΎαααΆααααα»ααααααααΆαααααΆααΎααααΈααααΎαααΆααααα ααααααααΆα UDP α αΌααα ααΎα ααα 67 α ααΆααααΌαααΆαααααααααΆαα½αααΎαααααααααααΆαααααα»αααααα π
- defaultMask,defaultRouter,defaultDNS - α’αααΈαααααααΌαααΆααααααααΌαα’αα·αα·ααααΆαααααΆαααΎαααααα·αααΎ IP ααααΌαααΆαααααΎααα αααα»αααΌαααααΆααα·αααααα ααα»αααααααΆαααΆαααααααααααααα·αααααΌαααΆααααααΆαααααααΆααααΆααα
ααααα mysqlα
αααΆαααΈα αααααα’αααααααΎ ααΆααααααααΆαα αααααααΌαααααΆα - α’αααΈααααααααΆααα·ααΆαααααααα½αα―αα αα
ααΆααααααααααΌαααααΆααα·αααααααααα αΆαααααα ααααααΌαααΆααααα αααα
ααΎ
ααααααααα½αα ααααΎαααααΆααααΆαααα½αααΆα OFFER/ACK ααααΌαααΆααα·αααααΆαα ααΈαααα
- offer_count β α ααα½αβαααααΆααβαααβααΆαβααααΎβαααβαααααβααααααβααΌα βααΆ ip,mask,router,dns
- offer_n - ααααα’αααααααα½αα ααααα·αααΎααΆααααα‘αααααα·αααΊααα αααααΆααααααααα·ααααα·ααααΎαααααααΌαααΆαααααα
- history_sql - αααα½αααααααααα§ααΆα ααααα "αααααααα·ααΆαα’αα»ααααΆα" αααααΆααα’αα·αα·αα
ααααΎα’αΆα αα½ααααα αΌαα’αααααΆαα½αααΈααααααααααΎα α¬αααααΎαααΈαα·ααΈααΆα DHCP α
ααααααααααΎαα αααααΊααΆαααααααααααΆααΆαααααα½αα±ααα αΆααα’αΆααααααα αα ααΈαααααΎαα’αΆα αααααΎαα’ααααααααΎαα’αΆα ααααΎαα αααααααααα αααα»αααααααααα½αα
α§ααΆα ααα:
option_82_hex:sw_port1:20:22
αααααΆααααΆααααααααΆααααααααααΆααααΆααααΌααααααΆααααααα»ααααααΎαααααΎα DHCP 82 ααΆααααααααααααααααΆααα½ααααα»αα αααααααΈ 20 αα 22 ααααααα½ααααα αΌα α αΎαααΆααααΆαα αααα»α sw_port1 α’αααααααΈ (ααααΌαα αααααΈαααααααααααααΎααΆααα)
option_82_hex:sw_mac:26:40
αααααα’ααα sw_mac ααααα hex ααΈαα½α 26:40
α’αααβα’αΆα βααΎαβααΎαβαααααΎαβαααβα’αΆα βααααΎβααΆαβααΆααβα’ααβαααβα’αΆα βααααΌαβααΆαβααααΎβαααα»αβαααα½αβαααβα αΆααααααΎαβαααΆαααΈαβαααααΎβαααβαα»αααΆαα -d α ααΎαααΉαααΎαα’αααΈαα½αααΌα αααα
--a αααα ααααααααΆα DHCPINFORM ααΆααααααα ααα 67, ααΈ 0025224ad764 , b'x91xa5xe0xa3xa5xa9-x8fx8a' , ('172.30.114.25', 68) {'ClientMacAddress': '0025224'764 %"Jxd00d' , ' HType ': 'Ethernet', 'HostName': b'x7xa91xe5xa0xa3xa5-x9fx8a', 'ReqListDNS': True, 'ReqListDomainName': True, 'ReqListPerfowmRouterDiscovertic'Router'Qist'Router' True:', α αα·α 'ReqListSubnetM ask ': True, 'ReqListVendorSpecInfo': 8, 'RequestedIpAddress': '43', 'Vendor': b'MSFT 0.0.0.0', 'chaddr': '5.0ad'.0025224', '764ad'.172.30.128.13', , 'αααααΆαα· ': b'x00x00', 'giaddr': '172.30.114.25', 'gpoz': 308, 'hlen': 6, 'hops': 1, 'htype': 'MAC', 'magic_cookie': b'cx82Sc ', 'op': 'DHCPINFORM', 'option12': 12, 'option53': 53, 'option55': 55, 'option60': 60, 'option61': 61, 'option82': 82, 82 option_12_byte': b'x01x06x00x04x00x01x00x06x02x08x00x06' b'x00x1x9eXx2exb82xad', 'option_12010600040001000602080006001_hex': '589 , 'option_2_len': 82 18, 'option_82_str': "b'x12x01x06x00x04x00x01x00x06x02x08x00x06x00x1eXx9exb2xad'", 'result': 768se0.0.0.0, False: 'siaddr': '001', 'sw_mac': '589e2eb1ad', 'sw_port06': '89', 'xidbyte': b'
ααΌα ααααα αΎα ααΎαα’αΆα αα»αα’αααααΆαα½ααα αααα»α {} α αΎαααΆααΉαααααΌαααΆαααααΎαα αααα»ααααα½α SQL α
α’αα»ααααΆαα±ααααΎααααααααΆαααααααα·αααα’αα·αα·ααααΆαααα½αα’αΆααααααΆα IPα
ααΆαα αΆααααααΎααααΆαααΈααα
./pydhcpdb.py -d -c config.xml
- α αααααα·ααααααα»αααΌα DEBUG
- c <filename> α―αααΆαααααααα
ααΆαααααααα
ααΆαααααΆαααααα»α
α αΎαα₯α‘αΌααααααααααΆααααα’α·αααααααα’αααΈααΆαα’αα»αααααααΆαααΈααααα αααα»α Python α ααΆααΊααΆααΆαααΊα αΆααα Python ααααΌαααΆαααααα ααΎααααα ααα αααααααΆααΆα αααΎαααααΌαααΆαααααΎα‘αΎααα αααα»ααα ααΆααααααα "wow ααΌα ααααα αααα»αααΆαααααΎα±ααααΆααααΎαααΆα" α αα·αβααααΌαβααΆαβααααΎβα±ααβαααααΎαβααΆααβααβααα α αΎαβααΆαβα αΆαα ααβαααα»αβααααααβαααβααΆβα ααααβαααβααΆαβααβααΆαβαααα·αααααβαα·α αα½α βαααα»αβααΆαβα’αα·αααα Python α αααα»αααΉαααααα ααΎαα·αααααΆααα½αα±ααα αΆααα’αΆαααααααααα»αααααΆαα’αα»αααααααΆαααΈααααα αααα»α "ααΌα" α
α§ααααααααα―αααΆαααααααα ααΆαααααααα XML
αααΌαα»α Python αααααααΆα xml.dom ααααΌαααΆαααααΎα ααΆα αΆααααΌα ααΆααΆαααα ααα»αααααααα»αα’αα‘α»ααααα’αα»ααααααΆαααΆαααααααΆααα½αα±ααααααααααΆααααα―αααΆαα αααΆααααΆαα αα·αα§ααΆα ααααα ααΎαααααΆααααααααΎαααΌαα»ααααα
tree = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") αααααΆαα elem αααα»α mconfig: gconfig["mysql_host"]=elem.getElementsByTagName("host")[0].first gconfig["mysql_username"]=elem.getElementsByTagName("username")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("password")[0].firstChild.data"my"gconfig =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") αααααΆαα elem αααα»α dconfig: gconfig["broadcast"]=elem.getElementsByTagName("broadcast")[0] firstChild.data gconfig["dhcp_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["dhcp_LeaseTime"]=elem.getElementsByTagName("LeaseTime")[0].firstChild.data gconfig dhcp_ThreadLimit"]=int(elem.getElementsByTagName("ThreadLimit")[0].firstChild.data) gconfig["dhcp_Server"]=elem.getElementsByTagName("DHCPServer")[0].firstChild.data) gconfig["dhcp_Server"]=elem.getElementsByTagName("DHCPServer")[0].firstChild. =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfig["dhcp_default"DNS"]=emel defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("query") αααααΆαα elem αααα»α qconfig: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[1].firstChild.data αααααΆαα numerstChild.data range(int(gconfig["offer_count"])): gconfig["offer_"+str(num+1)]=elem.getElementsByTagName("offer_"+str(num+0))[0].firstChild.data gconfig ["history_sql"]=elem.getElementsByTagName("history_sql")[XNUMX].firstChild.data options=tree.getElementsByTagName("options") αααααΆαα elem αααα»ααααααΎαα node=elem.getElementsByTagName("αααααΎα") α optionsMod.append(options.firstChild.data)
αα α»αααα
ααΆααΆαα ααααααααααααααΆαα ααΆααααα αΌααα α»αααααα αααα»α Python ααααΌαααΆαα’αα»αααααααΆαα αααΆαα αα·αααΆααααα
def PacketWork(data,addr): ... # ααΆαα’αα»ααααααΆαααααααα ααααααααΆαα αΌα αα·αααααΎααααα ααΆ ... αααααα Trueα data, addr = udp_socket.recvfrom(1024) # αααα αΆααααααΆαα UDP packet thread = threading.Thread( target=PacketWork , args=(data,addr,)).start() # ααΌα αααααΆααΆααα - ααΎαααΎαααααΎαααΆααα»αααΆα PacketWork αααααΆααααααααΈαα»ααα αααα»αααααααΆααααααααΆαα½αααΉααααΆαααΆααααααααααααααα threading.active_count() >gconfig["dhcp_ThreadLimit"]: αααααααΆα sleep(1) # ααααα·αααΎα ααα½αααΆα threads ααααΎαααΆααα½α α αΎαααΆααα αααα»αααΆαααααα ααΎααααα αΆααα αΌααααααΆαα ααα½ααα·α ααΆααααα
ααα½α/ααααΎαααα ααααααααΆα DHCP
ααΎααααΈααααΆααα αΆαααααα ααααααααΆα UDP αααα αΌαααααΆααααααΆααααααΆα α’αααααααΌα "ααΎα" ααααα
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP) udp_socket.bind((gconfig["dhcp_host"],67))
αααααΆααααααααααααααΆαα·ααΊ:
- AF_INET - ααΆααααααΆααααααα’αΆααααααΆαααΉαααΆ IPα α αααα ααΆααα’αΆα ααΆα AF_UNIX - αααα’αΆααααααΆαααααΌαααΆααααααααααααααα―αααΆαα
- SOCK_DGRAM - ααΆαβαααβααΆβααΎαβαα·αβααα½αβαα "αααα ααβα―αααΆαβαα " ααα»ααααβααΆβαααα ααβαααβααΆαβααααβααΆααβαααααΆααβααααΎαβαα½α βα αΎα αα·αβααΆαα½αβαααα ααβααααααΆαβαααβααΆαβααΆααβααΆβαααααα ααΆαααααα ααΎαααα½αααΆααααααα αα UDP αααααααΆααααΆαααΆαα» "ααΌααααα" αααααα αααααα αα UDP α ααααα·αααΎα’αααααααΎααα SOCK_RAW αααα’αααααααΉαααααΌαααα "αα»α" ααααααααα
ααΆαααααΎαααα ααααααααΆαα’αΆα ααΌα ααΆααΆαααααΆαα
udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #ααααΌααααααα ααααααααΆα rz=udp_socket.sendto(packetack, (gconfig["broadcast"],68))
αα·ααα ααΆααα’αΆααααααΆα "ααααααααααααα ααααΆαααααΈ"α
udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # ααααΌααααααα ααααα’αααααααΆααα αααΎα rz=udp_socket.sendto(packetack, addr)
αααααΆααααααααα SOL_SOCKET ααΆααααααΆ "ααααα·ααα·ααΈααΆα" αααααΆααααΆαααααααααααΎα
αααααΎα SO_BROADCAST ααααααα αααα½ααα»ααααα·ααΆαααΊ "ααααΆα"
αααααΎα SO_REUSEADDR ααααΌααααααα αααα "α’αααααααΆααα αααΎα"α ααΆαααααΉααααΈ ααΆαα·αα αΆαααΆα ααααα»αααααΈααα ααα»αααααα ααΎαααΆαααΈααα FreeBSD αα½α ααααααα»αααΆαααΆααααα ααΌααα·αααααΎαααΆααααααααΆααααααΎααααααα
ααΆαααααααα ααααααααΆα DHCP
αααααΆααααααααααααα»ααα·αααΆα αΌαα α·ααα Python α ααΆααααααΆα ααααΈαααα’ααααΆα’αα»ααααΆαα±ααα’αααα’αΆα ααααααααΆαααΆαα½αααΉα bytecode α α’αα»ααααΆαα±ααααΆααααΌαααΆααααααααααΆαααΆααααα½ααα ααΆαααααααααΆα ααααα’αααα αα·αααααααααααΆααα½α - i.e. αααααΊααΆα’αααΈαααααΎααα·αααΆααααΌααααα’αααΈαα ααΆαααααααααααααα ααα ααΌα αααα ααΆα§ααΆα ααα α’αααα’αΆα ααα½αααΆααα½ααααααα»α HEX αα·αααααΆααααααα
res["xidhex"]=data[4:8].hex() res["xidbyte"]=data[4:8]
ααα αααααα ααΆαα ααΆααααααααα
res["flags"]=pack('BB',data[10],data[11])
ααα½αααΆα IP ααΈαα ααΆααααααααα
res["ciaddr"]=socket.inet_ntoa(pack('BBBB',data[12],data[13],data[14],data[15]));
α αΎααααα»ααααα·αα
res=res+socket.inet_pton(socket.AF_INET, gconfig["dhcp_Server"])
α’ααα αΎααααααα π
ααααα: www.habr.com