ืฉืจืช DHCP+Mysql ื‘-Python

ืฉืจืช DHCP+Mysql ื‘-Python

ืžื˜ืจืช ืคืจื•ื™ืงื˜ ื–ื” ื”ื™ื™ืชื”:

  • ืœืžื™ื“ื” ืขืœ DHCP ื‘ืจืฉืช IPv4
  • ืœื™ืžื•ื“ ืคื™ื™ืชื•ืŸ (ืงืฆืช ื™ื•ืชืจ ืžืืฉืจ ืžืืคืก ๐Ÿ˜‰)
  • ื”ื—ืœืคืช ืฉืจืช DB2DHCP (ื”ืžื–ืœื’ ืฉืœื™), ืžืงื•ืจื™ ื›ืืŸ, ืฉื”ื•ืคื›ืช ืงืฉื” ื™ื•ืชืจ ื•ื™ื•ืชืจ ืœื”ืจื›ื‘ื” ืขื‘ื•ืจ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื”ื—ื“ืฉื”. ื•ืื ื™ ืœื ืื•ื”ื‘ ืฉื–ื” ื‘ื™ื ืืจื™ ืฉืื™ืŸ ื“ืจืš "ืœืฉื ื•ืช ืขื›ืฉื™ื•"
  • ื”ืฉื’ืช ืฉืจืช DHCP ืขื•ื‘ื“ ืขื ื”ื™ื›ื•ืœืช ืœื‘ื—ื•ืจ ื›ืชื•ื‘ืช IP ืฉืœ ืžื ื•ื™ ื‘ืืžืฆืขื•ืช ืฉื™ืœื•ื‘ ื”-mac ืฉืœ ื”ืžื ื•ื™ ืื• ื”ื—ืœืคืช mac+port (ืืคืฉืจื•ืช 82)
  • ื›ืชื™ื‘ืช ืื•ืคื ื™ื™ื ื ื•ืกืคื™ื (ื”ื•! ื–ื• ื”ืคืขื™ืœื•ืช ื”ืื”ื•ื‘ื” ืขืœื™ื™)
  • ืงื‘ืœืช ื”ืขืจื•ืช ืขืœ ื™ื“ืš ื‘ืžื•ืขื“ื•ืŸ ื‘-Habrahabr (ืื• ื™ื•ืชืจ ื˜ื•ื‘, ื”ื–ืžื ื”) ๐Ÿ˜‰

ืชื•ืฆืื”: ื–ื” ืขื•ื‘ื“ ๐Ÿ˜‰ ื ื‘ื“ืง ืขืœ FreeBSD ื•-Ubuntu OS. ืชื™ืื•ืจื˜ื™ืช, ื ื™ืชืŸ ืœื‘ืงืฉ ืžื”ืงื•ื“ ืœืขื‘ื•ื“ ืชื—ืช ื›ืœ ืžืขืจื›ืช ื”ืคืขืœื”, ืžื›ื™ื•ื•ืŸ ื ืจืื” ืฉืื™ืŸ ื›ืจื™ื›ื•ืช ืกืคืฆื™ืคื™ื•ืช ื‘ืงื•ื“.
ื‘ืงืคื™ื“ื”! ื™ืฉ ืขื•ื“ ื”ืจื‘ื” ืœื‘ื•ื.

ืงื™ืฉื•ืจ ืœืžืื’ืจ ืœื—ื•ื‘ื‘ื ื™ื "ืœื’ืขืช ื‘ื—ื™ื™ื".

ืชื”ืœื™ืš ื”ื”ืชืงื ื”, ื”ื”ื’ื“ืจื” ื•ื”ืฉื™ืžื•ืฉ ื‘ืชื•ืฆืื” ืฉืœ "ืœื™ืžื•ื“ ื”ื—ื•ืžืจื”" ื”ื•ื ื”ืจื‘ื” ื™ื•ืชืจ ื ืžื•ืš, ื•ืœืื—ืจ ืžื›ืŸ ืงืฆืช ืชื™ืื•ืจื™ื” ืขืœ ืคืจื•ื˜ื•ืงื•ืœ DHCP. ื‘ืฉื‘ื™ืœื™. ื•ืœื”ื™ืกื˜ื•ืจื™ื” ๐Ÿ˜‰

ืงืฆืช ืชื™ืื•ืจื™ื”

ืžื” ื–ื” DHCP

ื–ื”ื• ืคืจื•ื˜ื•ืงื•ืœ ืจืฉืช ื”ืžืืคืฉืจ ืœืžื›ืฉื™ืจ ืœื’ืœื•ืช ืืช ื›ืชื•ื‘ืช ื”-IP ืฉืœื• (ื•ืคืจืžื˜ืจื™ื ื ื•ืกืคื™ื ื›ืžื• ืฉืขืจ, DNS ื•ื›ื•') ืžืฉืจืช DHCP. ืžื ื•ืช ืžื•ื—ืœืคื•ืช ื‘ืืžืฆืขื•ืช ืคืจื•ื˜ื•ืงื•ืœ UDP. ื”ืขื™ืงืจื•ืŸ ื”ื›ืœืœื™ ืฉืœ ื”ืคืขื•ืœื” ืฉืœ ื”ืžื›ืฉื™ืจ ื‘ืขืช ื‘ืงืฉืช ืคืจืžื˜ืจื™ ืจืฉืช ื”ื•ื ื›ื“ืœืงืžืŸ:

  1. ื”ืžื›ืฉื™ืจ (ืœืงื•ื—) ืฉื•ืœื— ื‘ืงืฉืช ืฉื™ื“ื•ืจ UDP (DHCPDISCOVER) ื‘ืจื—ื‘ื™ ื”ืจืฉืช ืขื ื”ื‘ืงืฉื” "ื˜ื•ื‘, ืžื™ืฉื”ื• ื™ื™ืชืŸ ืœื™ ื›ืชื•ื‘ืช IP." ื™ืชืจื” ืžื›ืš, ื‘ื“ืจืš ื›ืœืœ (ืืš ืœื ืชืžื™ื“) ื”ื‘ืงืฉื” ืžืชืจื—ืฉืช ืžื ืžืœ 68 (ืžืงื•ืจ), ื•ื”ื™ืขื“ ื”ื•ื ื™ืฆื™ืื” 67 (ื™ืขื“). ื—ืœืง ืžื”ืžื›ืฉื™ืจื™ื ืฉื•ืœื—ื™ื ื’ื ืžื ื•ืช ืžื™ืฆื™ืื” 67. ื›ืชื•ื‘ืช ื”-MAC ืฉืœ ื”ืชืงืŸ ื”ืœืงื•ื— ื›ืœื•ืœื” ื‘ืชื•ืš ื—ื‘ื™ืœืช DHCPDISCOVER.
  2. ื›ืœ ืฉืจืชื™ ื”-DHCP ื”ืžืžื•ืงืžื™ื ื‘ืจืฉืช (ื•ื™ื™ืชื›ื ื• ื›ืžื” ื›ืืœื”) ื™ื•ืฆืจื™ื ื”ืฆืขืช DHCPOFFER ืขื ื”ื’ื“ืจื•ืช ืจืฉืช ืขื‘ื•ืจ ื”ืžื›ืฉื™ืจ ืฉืฉืœื— ืืช DHCPDISCOVER, ื•ื’ื ืžืฉื“ืจื™ื ืื•ืชื• ื‘ืจืฉืช. ื–ื™ื”ื•ื™ ืœืžื™ ืžื™ื•ืขื“ืช ื”ื—ื‘ื™ืœื” ื”ื–ื• ืžื‘ื•ืกืก ืขืœ ื›ืชื•ื‘ืช ื”-MAC ืฉืœ ื”ืœืงื•ื— ืฉืกื•ืคืงื” ืงื•ื“ื ืœื›ืŸ ื‘ื‘ืงืฉืช DHCPDISCOVER.
  3. ื”ืœืงื•ื— ืžืงื‘ืœ ืžื ื•ืช ืขื ื”ืฆืขื•ืช ืœื”ื’ื“ืจื•ืช ืจืฉืช, ื‘ื•ื—ืจ ืืช ื”ืื˜ืจืงื˜ื™ื‘ื™ืช ื‘ื™ื•ืชืจ (ื”ืงืจื™ื˜ืจื™ื•ื ื™ื ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ืฉื•ื ื™ื, ืœืžืฉืœ, ื–ืžืŸ ืžืกื™ืจืช ื”ืžื ื•ืช, ืžืกืคืจ ืžืกืœื•ืœื™ ื”ื‘ื™ื ื™ื™ื), ื•ืžื‘ืฆืข "ื‘ืงืฉื” ืจืฉืžื™ืช" DHCPREQUEST ืขื ื”ื’ื“ืจื•ืช ื”ืจืฉืช ืžืฉืจืช ื”-DHCP ืฉื”ื•ื ืื•ื”ื‘. ื‘ืžืงืจื” ื–ื”, ื”ื—ื‘ื™ืœื” ืขื•ื‘ืจืช ืœืฉืจืช DHCP ืกืคืฆื™ืคื™.
  4. ื”ืฉืจืช ืฉืงื™ื‘ืœ ืืช ื”-DHCPREQUEST ืฉื•ืœื— ื—ื‘ื™ืœืช ืคื•ืจืžื˜ DHCPACK, ืฉื‘ื” ื”ื•ื ืžืคืจื˜ ืฉื•ื‘ โ€‹โ€‹ืืช ื”ื’ื“ืจื•ืช ื”ืจืฉืช ื”ืžื™ื•ืขื“ื•ืช ืœืœืงื•ื— ื–ื”

ืฉืจืช DHCP+Mysql ื‘-Python

ื‘ื ื•ืกืฃ, ื™ืฉื ืŸ ืžื ื•ืช DHCPINFORM ื”ืžื’ื™ืขื•ืช ืžื”ืœืงื•ื—, ื•ืžื˜ืจืชืŸ ืœื™ื™ื“ืข ืืช ืฉืจืช ื”-DHCP ื›ื™ "ื”ืœืงื•ื— ื—ื™" ื•ืžืฉืชืžืฉ ื‘ื”ื’ื“ืจื•ืช ื”ืจืฉืช ืฉื”ื•ื ืคืงื•. ื‘ื™ื™ืฉื•ื ืฉืœ ืฉืจืช ื–ื”, ืžืชืขืœืžื™ื ืžื—ื‘ื™ืœื•ืช ืืœื•.

ืคื•ืจืžื˜ ื—ื‘ื™ืœื”

ื‘ืื•ืคืŸ ื›ืœืœื™, ืžืกื’ืจืช ืžื ื•ืช Ethernet ื ืจืื™ืช ื‘ืขืจืš ื›ืš:

ืฉืจืช DHCP+Mysql ื‘-Python

ื‘ืžืงืจื” ืฉืœื ื•, ื ืฉืงื•ืœ ืจืง ืืช ื”ื ืชื•ื ื™ื ื™ืฉื™ืจื•ืช ืžื”ืชื•ื›ืŸ ืฉืœ ื—ื‘ื™ืœืช 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:

ืžืืจื—, ืฉื ืžืฉืชืžืฉ, ืกื™ืกืžื”, ืฉื ื‘ืกื™ืก - ื”ื›ืœ ืžื“ื‘ืจ ื‘ืขื“ ืขืฆืžื•. ืžื‘ื ื” ืžืกื“ ื ืชื•ื ื™ื ืžืฉื•ืขืจ ืคื•ืจืกื ื‘ GitHub

ืงื˜ืข ืฉืื™ืœืชื”: ื‘ืงืฉื•ืช ืœืงื‘ืœืช 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:

ืฉืจืช DHCP+Mysql ื‘-Python

ืฉืจืช DHCP+Mysql ื‘-Python

ื”ืคืขืœืช ื”ืฉืจืช

./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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”