ืืืจืช ืคืจืืืงื ืื ืืืืชื:
- ืืืืื ืขื DHCP ืืจืฉืช IPv4
- ืืืืื ืคืืืชืื (ืงืฆืช ืืืชืจ ืืืฉืจ ืืืคืก ๐)
- ืืืืคืช ืฉืจืช
DB2DHCP (ืืืืื ืฉืื), ืืงืืจืืืื , ืฉืืืคืืช ืงืฉื ืืืชืจ ืืืืชืจ ืืืจืืื ืขืืืจ ืืขืจืืช ืืืคืขืื ืืืืฉื. ืืื ื ืื ืืืื ืฉืื ืืื ืืจื ืฉืืื ืืจื "ืืฉื ืืช ืขืืฉืื" - ืืฉืืช ืฉืจืช DHCP ืขืืื ืขื ืืืืืืช ืืืืืจ ืืชืืืช IP ืฉื ืื ืื ืืืืฆืขืืช ืฉืืืื ื-mac ืฉื ืืื ืื ืื ืืืืคืช mac+port (ืืคืฉืจืืช 82)
- ืืชืืืช ืืืคื ืืื ื ืืกืคืื (ืื! ืื ืืคืขืืืืช ืืืืืื ืขืืื)
- ืงืืืช ืืขืจืืช ืขื ืืื ืืืืขืืื ื-Habrahabr (ืื ืืืชืจ ืืื, ืืืื ื) ๐
ืชืืฆืื: ืื ืขืืื ๐ ื ืืืง ืขื FreeBSD ื-Ubuntu OS. ืชืืืืจืืืช, ื ืืชื ืืืงืฉ ืืืงืื ืืขืืื ืชืืช ืื ืืขืจืืช ืืคืขืื, ืืืืืื ื ืจืื ืฉืืื ืืจืืืืช ืกืคืฆืืคืืืช ืืงืื.
ืืงืคืืื! ืืฉ ืขืื ืืจืื ืืืื.
ืงืืฉืืจ ืืืืืจ ืืืืืื ืื
ืชืืืื ืืืชืงื ื, ืืืืืจื ืืืฉืืืืฉ ืืชืืฆืื ืฉื "ืืืืื ืืืืืจื" ืืื ืืจืื ืืืชืจ ื ืืื, ืืืืืจ ืืื ืงืฆืช ืชืืืืจืื ืขื ืคืจืืืืงืื DHCP. ืืฉืืืื. ืืืืืกืืืจืื ๐
ืงืฆืช ืชืืืืจืื
ืื ืื DHCP
ืืื ืคืจืืืืงืื ืจืฉืช ืืืืคืฉืจ ืืืืฉืืจ ืืืืืช ืืช ืืชืืืช ื-IP ืฉืื (ืืคืจืืืจืื ื ืืกืคืื ืืื ืฉืขืจ, 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
ืกืื ืืืืจื
1
ืืงืก
1
ืกืื ืืชืืืช ืืืืืจื, ืืคืจืืืืงืื ืื 1 - MAC
3
ืืืจื ืืชืืืืช ืืืืืจื
6
ืืงืก
1
ืืืจื ืืชืืืช MAC ืฉื ืืืืฉืืจ
4
ืืฉืืช
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 - ืืกืืช ืจืฉืช
03 - ืฉืขืจ
06 - DNS
oc โ ืฉื ืืืจื
0f - ืฉื ืืืืืื ืจืฉืช
1c - ืืชืืืช ืืงืฉืช ืืฉืืืืจ (ืฉืืืืจ)
42 - ืฉื ืฉืจืช TFTP
79 - ืืกืืื ืกืืื ืืื ืืืชืืช
ืืืจื ืืืคืฆืื
8
1
ืขืจื ืืืคืฆืื
01:03:06:0c:0f:1c:42:79
8
ืืกืคืจ ืืืคืฆืื
82
ืืฆืืืจ
ืืคืฉืจืืช 82, ืืืฉืืจืช ืืช ืืชืืืช ื-MAC ืฉื ืืชืงื ืืืืจ ืืืื ืขืจืืื ื ืืกืคืื.
ืืจืื, ืื ืืืฆืืื ืฉื ืืืชื ืฉืขืืื ืคืืขื ืืงืื ื-DHCP ืืงืฆื. ืืคืฉืจืืช ืื ืืืืื ืคืจืืืจืื ื ืืกืคืื. ืืืื ืืจืืฉืื ืืื ืืืกืคืจ ืฉื "ืชืช-ืืืคืฆืืืช", ืืฉื ื ืืื ืืืืจื ืฉืื, ืืื ืืขืจื ืฉืื.
ืืืงืจื ืื, ืืืคืฉืจืืช 82, ืืคืฉืจืืืืช ืืืฉื ื ืืงืื ื ืืช:
ID 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
ืกืื ืืืืจื
1
ืืงืก
1
ืกืื ืืชืืืช ืืืืืจื, ืืคืจืืืืงืื ืื 1 - MAC
3
ืืืจื ืืชืืืืช ืืืืืจื
6
ืืงืก
1
ืืืจื ืืชืืืช MAC ืฉื ืืืืฉืืจ
4
ืืฉืืช
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 ืืกืื ืืช ืกืืฃ ืืืืืื
ืืงืฉืช DHC
ืืืืจ ืฉืืืงืื ืืงืื DHCPOFFER, ืืื ืืืฆืจ ืืืืื ืืืืงืฉืช ืคืจืืืจื ืจืฉืช ืื ืืื ืฉืจืชื ื-DHCP ืืจืฉืช, ืืื ืจืง ืืืื ืกืคืฆืืคื, ืฉืืช ืืฆืขืช ื-DHCPOFFER ืฉืื ืืื "ืืื" ืืืชืจ ืืื. ืืงืจืืืจืืื ืื "ืืืืชื" ืืืืืื ืืืืืช ืฉืื ืื ืืชืืืืื ืืืืฉืื ื-DHCP ืฉื ืืืงืื. ื ืืขื ืืืงืฉื ืืฆืืื ืืืืฆืขืืช ืืชืืืช ื-MAC ืฉื ืฉืจืช ื-DHCP. ืืื ืื, ืืืืืช DHCPREQUEST ืืืืื ืืืืฉืื ืขื ืืื ืืืงืื ืืืื ืืืฆืืจ ืชืืืื DHCPDISCOVER, ืื ืืชืืืช ื-IP ืฉื ืืฉืจืช ืืืจ ืืืฉืื ืืขืืจ.
ืืืืช ืืื ื ืื ืืช ืฉื DHCPREQUEST
ืืืงืื ืืืืืื
ืฉื ืืขืจื (ื ืคืืฅ)
ืืืืื
ืืืื
ืืชืื
ืืืืจื
1
ืืงืฉืช ืืชืืื
1
ืืงืก
1
ืกืื ืืืืขื. 1 - ืืงืฉื ืืืงืื ืืฉืจืช, 2 - ืชืืืื ืืฉืจืช ืืืงืื
2
ืกืื ืืืืจื
1
ืืงืก
1
ืกืื ืืชืืืช ืืืืืจื, ืืคืจืืืืงืื ืื 1 - MAC
3
ืืืจื ืืชืืืืช ืืืืืจื
6
ืืงืก
1
ืืืจื ืืชืืืช MAC ืฉื ืืืืฉืืจ
4
ืืฉืืช
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 0.9.8
ืืืจืืืช
ืืกืคืจ ืืืคืฆืื
55
1
ืคืจืืืจื ืจืฉืช ืืืืืงืฉ ืขื ืืื ืืืงืื. ืืจืื ืขืฉืื ืืืฉืชื ืืช
01 - ืืกืืช ืจืฉืช
03 - ืฉืขืจ
06 - DNS
oc โ ืฉื ืืืจื
0f - ืฉื ืืืืืื ืจืฉืช
1c - ืืชืืืช ืืงืฉืช ืืฉืืืืจ (ืฉืืืืจ)
42 - ืฉื ืฉืจืช TFTP
79 - ืืกืืื ืกืืื ืืื ืืืชืืช
ืืืจื ืืืคืฆืื
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
ืกืื ืืืืจื
1
ืืงืก
1
ืกืื ืืชืืืช ืืืืืจื, ืืคืจืืืืงืื ืื 1 - MAC
3
ืืืจื ืืชืืืืช ืืืืืจื
6
ืืงืก
1
ืืืจื ืืชืืืช MAC ืฉื ืืืืฉืืจ
4
ืืฉืืช
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 ืืกืื ืืช ืกืืฃ ืืืืืื
ืืชืงื ื
ืืืชืงื ื ืืืขืฉื ืืืจืืืช ืืืชืงื ืช ืืืืืื ืืคืืชืื ืืืจืืฉืื ืืขืืืื. ืืื ืื ืืื ืฉ-MySQL ืืืจ ืืืชืงื ืืืืืืจ.
FreeBSD
pkg ืืืชืงืื python3 python3 -m surepip pip3 ืืืชืงืื ืืช mysql-connector
ืืืืื ืื
sudo apt-get ืืชืงื ืช python3 sudo apt-get ืืชืงื ืช pip3 sudo pip3 ืืชืงื ืช mysql-connector
ืื ื ืืืฆืจืื ืืกื ื ืชืื ืื ืฉื MySQL, ืืขืืื ืืชืืื ืืช ื-dump pydhcp.sql ืืืืืืจืื ืืช ืงืืืฅ ืืชืฆืืจื.
ืชึฐืฆืึผืจึธื
ืื ืืืืจืืช ืืฉืจืช ื ืืฆืืืช ืืงืืืฅ xml. ืงืืืฅ ืขืืจ:
1.0 0.0.0.0 255.255.255.255 192.168.0.71 8600 1 255.255.255.0 192.168.0.1 ืืืจื ืืงืืื ืึดืึฐืึธื ืึดืึฐืึธื pydhcp option_8.8.8.8_hex:sw_port82:1:20 option_22_hex:sw_port82:2:16 option_18_hex:sw_mac:82:26 40 ืืืจ ip,mask,router,dns ืืืฉืชืืฉืื ืฉืืื upper(mac)=upper('{option_3_AgentRemoteId_hex}') ื-upper(port)=upper('{option_1_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
- broadcast - ืืืื 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
, ืฉืืจืช ืคืงืืื ืื ืืืงืืช ืืช ืื ืืฉืืจื ืฉืืืืขื ืืืืคืฆืื 82 ืฉื ืืงืฉืช DHCP, ืืคืืจืื hex, ืืืืื ืฉืืื 20 ื-22 ืืชืื ืืืื ืืืื ืืกื ืืืชื ืืืฉืชื ื ืืืืฉ sw_port1 (ืืฆืืื ืืืืงืื ืืื ื ืืืืขื ืืืงืฉื)
option_82_hex:sw_mac:26:40
, ืืืืจ ืืช ืืืฉืชื ื sw_mac, ืืืงื ืืช ื-hex ืืืืืื 26:40
ืืชื ืืืื ืืจืืืช ืืช ืื ืืืคืฉืจืืืืช ืืืคืฉืจืืืช ืฉื ืืชื ืืืฉืชืืฉ ืืื ืืฉืืืืชืืช ืขื ืืื ืืคืขืืช ืืฉืจืช ืขื ืืืชื -d. ื ืจืื ืืฉืื ืืื ืืืืื ืืื:
--ืืืืื ืฉื DHCPINFORM ืืืืขื ืืืฆืืื 67, ื-0025224ad764 , b'x91xa5xe0xa3xa5xa9-x8fx8a' , ('172.30.114.25', 68) {'ClientMacAddress': '0025224teMac': '764tMac': '00': '7' 91 5%"Jxd0d' , 'Htype': 'ethernet', 'ืฉื ืืืจื': b'x3xa5xe9xa8xa8xa43-x0.0.0.0fx5.0a ',' reqlistdns ': true, reqlistdomainnam 'ReqListSubnetM ask ': True, 'ReqListVendorSpecInfo': 0025224, 'RequestedIpAddress': '764', 'Vendor': b'MSFT 172.30.128.13', 'chaddr': '00ad00', 'ciaddr'.172.30.114.25'.308'. , 'flags ': b'x6x1', 'giaddr': '82', 'gpoz': 12, 'hlen': 12, 'hops': 53, 'htype': 'MAC', 'magic_cookie': b'cx53Sc ', 'op': 'DHCPINFORM', 'option55': 55, 'option60': 60, 'option61': 61, 'option82': 82, 'option82': 12, 'option01': 06, ' option_00_byte': b'x04x00x01x00x06x02x08x00x06x00x1x9' b'x2x82x12010600040001000602080006001eXx589exb2xad', 'option_82_hex': '18e _82_len': 12 01, 'option_06_str': "b'x00x04x00x01x00x06x02x08x00x06x00x1x9x2x768eXx0.0.0.0exb001xad'", 'result': False, 'secs': 589 'siaddr': '2', 'sw_mac': '1e06eb89ad', 'sw_port8': '3', 'xidbyte': b'
ืืืชืื ืืื, ื ืืื ืืขืืืฃ ืื ืืฉืชื ื ื-{} ืืืื ืืฉืืฉ ืืฉืืืืชืช SQL.
ืชื ืื ื ืืจืฉืื ืืืืกืืืจืื ืฉืืืงืื ืงืืื ืืช ืืชืืืช ื-IP:
ืืคืขืืช ืืฉืจืช
./pydhcpdb.py -d -c config.xml
โ d ืืฆื ืคืื ืงืื ืกืืืช DEBUG
- c <ืฉื ืงืืืฅ> ืงืืืฅ ืชืฆืืจื
ืชึทืืงึดืืจ
ืืขืืฉืื ืคืจืืื ื ืืกืคืื ืขื ืืืืขืช ืืฉืจืช ื-Python. ืื ืืื. ืคืืืชืื ื ืืื ืชืื ืืื ืชื ืืขื. ืืจืื ืจืืขืื ื ืืฆืจืื ืืกืื ืื ืฉื "ืืืื, ืืืืฉืื ืืจืืชื ืืื ืืขืืื." ืื ืขืืจ ืืืคืืืืืืฆืื ืืืื, ืื ืฉืืจ ืืฆืืจื ืื ืืขืืงืจ ืืืื ื ืืกืืื ืืืขื ืืคืืชืื Python. ืืชืขืื ืขื ืืืืืืื ืืืขื ืืื ืื ืืืืชืจ ืฉื ืืืฉืื ืืฉืจืช ื"ืงืื".
ืื ืชื ืงืืฆื ืชืฆืืจื ืฉื XML
ื ืขืฉื ืฉืืืืฉ ืืืืืื Python ืืกืื ืืจืื xml.dom. ืื ื ืจืื ืคืฉืื, ืืื ืืืืื ืืืืฉืื ืืื ืืืกืจ ืืืื ืฉื ืชืืขืื ืืจืืจ ืืืืืืืืช ืืจืฉืช ืืืืฆืขืืช ืืืืื ืื.
tree = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") ืขืืืจ elem ื-mconfig: gconfig["mysql_host"]=elem.getElementsByTagName("host")[0].firstChild. gconfig["mysql_username"]=elem.getElementsByTagName("username")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("ืกืืกืื")[0].firstChild.data gconfig["mysql_names" =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"]default =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfig["dhcp_defaultDgetName"]=elem.getElementsByTagName defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("query") ืขืืืจ elem ื-qconfig: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[0].firstChild.data ืขืืืจ num in range(int(gconfig["offer_count"])): gconfig["offer_"+str(num+1)]=elem.getElementsByTagName("offer_"+str(num+1))[0].firstChild.data gconfig ["history_sql"]=elem.getElementsByTagName("history_sql")[0].firstChild.data options=tree.getElementsByTagName("options") ืขืืืจ elem ืืืคืฉืจืืืืช: node=elem.getElementsByTagName("option") ืขืืืจ ืืคืฉืจืืืืช ืืฆืืืช : optionsMod.append(options.firstChild.data)
ืจืืืื ืืฉืจืฉืืจืื
ืืืืคื ืืืืจ, ืจืืืื ืืฉืจืฉืืจืื ื-Python ืืืืฉื ืืฆืืจื ืืืื ืืจืืจื ืืคืฉืืื.
def PacketWork(data,addr): ... # ืืืฉืื ืฉื ื ืืชืื ืืืืืื ืื ืื ืกืช ืืืืขื ืืช ืื ... ืืขืื True: data, addr = udp_socket.recvfrom(1024) # ืืืื ื-UDP ืคืชืื ืืื ื = threading.Thread( target=PacketWork , args=(data,addr,)).start() # ืืคื ืฉืืืืข - ืื ื ืืฉืืงืื ืืช ืคืื ืงืฆืืืช PacketWork ืฉืืืืืจื ืงืืื ืืื ืืจืงืข ืขื ืคืจืืืจืื ืชืื ืืื threading.active_count() >gconfig["dhcp_ThreadLimit"]: ืืื. sleep(1) # if the number ืืฉ ืืืจ ืฉืจืฉืืจืื ืจืืื ืืืชืจ ืืืฉืจ ืืืืืจืืช, ืื ืื ื ืืืืื ืขื ืฉืืืื ืคืืืช ืืื
ืงืืื/ืฉืื ืืืืืช 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: port. ืืืชืื ืฉืืฉ ืื AF_UNIX - ืืืฉืจ ืืืชืืืช ื ืืชื ืช ืขื ืืื ืฉื ืืงืืืฅ.
- SOCK_DGRAM - ืคืืจืืฉื ืฉืื ืื ื ืื ืืงืืืื "ืืืืื ืืืืืืช", ืืื ืืื ืฉืืืจ ืขืืจื ืืจื ืืืืช ืืืฉ, ืืขื ืืืืื ืืชืืื ืืืงืืช. ืึธืึตื. ืื ื ืืงืืืื ืจืง ืืืืืช UDP ืืื ืืจืืื ื"ืคืืื" ืฉื ืขืืืคืช ืื ืืช UDP. ืื ืืชื ืืฉืชืืฉ ืืืื SOCK_RAW, ืชืฆืืจื ืื ืื ืชื ืืช ื"ืขืืืคื" ืืื.
ืฉืืืืช ืืืืื ืืืืื ืืืืืช ืืื ืฉืืืืจ:
udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #switch ืืช ืืฉืงืข ืืืฆื ืฉืืืืจ 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. ืืืคืฉืจ ืืชืจืื ืืงืืืช ืจืื ืืขืจืืื ืขืฉืจืื ืืื, ืืืจืืืืช ืืืงืก - ืืืืืจ. ืื ืื ืฉืื ืื ื ืฆืจืืืื ืืขืฆื ืืื ืืืืื ืืช ืืื ื ืืืืืื. ืื, ืืืฉื, ืืชื ืืืื ืืงืื ืืืื ืฉื ืืชืื ื-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