DHCP+Mysql server ee Python

DHCP+Mysql server ee Python

Ujeedada mashruucan ayaa ahayd:

  • Barashada DHCP ee shabakada IPV4
  • Barashada Python (wax yar in ka badan meel xoqan 😉)
  • beddelka serverka DB2DHCP (fargeeto), asalka ah halkan, kaas oo noqonaaya mid aad iyo aad u adag in la isugu keeno OS-ka cusub. Anigu ma jecli inay tahay binary in aysan jirin si loo "beddelo hadda"
  • Helitaanka server-ka DHCP ee shaqeeya oo awood u leh inuu doorto ciwaanka IP-ga macmiilaha iyadoo la adeegsanayo mac-macmiilka ama beddelka isku-darka dekedda ee Mac+ (Doorashada 82)
  • qorista baaskiil kale (Oh! tani waa hawsha aan jeclahay)
  • Helitaanka faallooyin ku saabsan gacan-karnimadaada Habrahabr (ama ka sii fiican, martiqaad) 😉

Natiijadu: waxay ku shaqeysaa 😉 Waxaa lagu tijaabiyay FreeBSD iyo Ubuntu OS. Aragti ahaan, koodhka ayaa la waydiisan karaa inuu ka hoos shaqeeyo OS kasta, sababtoo ah Waxaad mooddaa in aanay jirin wax xidhidh gaar ah oo ku jira koodka.
Si taxadar leh! Wax badan oo kale ayaa soo socda.

Ku xidhka kaydka hiwaayadda "Nool taabo".

Habka rakibidda, habaynta iyo isticmaalka natiijada "barashada qalabka" aad ayuu u hooseeyaa, ka dibna aragti yar oo ku saabsan borotokoolka DHCP. Naftayda. Taariikhdana 😉

Aragti yar

Waa maxay DHCP

Kani waa hab-maamuus shabakadeed kaas oo u oggolaanaya qalabku inuu ka ogaado ciwaanka IP-ga (iyo xuduudaha kale sida albaabka, DNS, iwm.) ee server-ka DHCP. Xirmooyinka waxaa lagu kala beddelaa iyadoo la isticmaalayo nidaamka UDP. Mabda'a guud ee hawlgalka aaladda marka la codsanayo xuduudaha shabakada waa sida soo socota:

  1. Qalabku (macmiil) wuxuu soo diraa codsiga baahinta UDP (DHCDISCOVER) ee shabakada oo dhan iyadoo codsiga "hagaag, qof i siiya ciwaanka IP." Waxaa intaa dheer, sida caadiga ah (laakiin had iyo jeer maaha) codsigu wuxuu ka yimaadaa dekedda 68 (source), halka loo socdona waa dekedda 67 (meesha). Qalabka qaar ayaa sidoo kale baakidhyo ka soo dira dekedda 67. Cinwaanka MAC ee aaladda macmiilku waxa uu ku jiraa xidhmada DHCPDISCOVER.
  2. Dhammaan server-yada DHCP ee ku yaal shabakada (oo laga yaabo inay jiraan dhowr iyaga ka mid ah) waxay sameeyaan bixinta DHCPOFFER oo leh jaangooyooyin shabakadeed oo loogu talagalay qalabka soo diray DHCPDISCOVER, oo sidoo kale ku sii daaya shabakada. Aqoonsiga cidda baakaddan loogu talagalay waxay ku salaysan tahay ciwaanka MAC ee macmiilka oo hore loogu bixiyay codsiga DHCPDISCOVER.
  3. Macmiilku waxa uu aqbalaa baakado ay ku jiraan soo jeedinta goobaha shabakada, waxa uu doortaa midka ugu soo jiidashada badan (shuruudaha way ka duwanaan karaan, tusaale ahaan, wakhtiga baakooyinka la keenayo, tirada dariiqyada dhexe), oo waxa uu sameeyaa "codsi rasmi ah" DHCPREQUEST oo leh goobaha shabakada Laga soo bilaabo server-ka DHCP ee ay jeceshahay. Xaaladdan oo kale, baakidhku waxa uu tagayaa server DHCP gaar ah.
  4. Server-ka helay DHCPREQUEST waxa uu soo diraa baakidh qaabka DHCPACK, kaas oo uu marlabaad ku taxay goobaha shabakada ee loogu talagalay macmiilkan

DHCP+Mysql server ee Python

Intaa waxaa dheer, waxaa jira baakado DHCPINFORM ah oo ka yimid macmiilka, iyo ujeedada taas oo ah in la ogeysiiyo server-ka DHCP in "macmiilku waa nool yahay" oo isticmaalaya goobaha shabakadaha la soo saaray. Hirgelinta serfarkan, xidhmooyinkan waa la iska indhatiray.

Qaab xirmo

Guud ahaan, xirmada xirmada Ethernet waxay u egtahay sidan:

DHCP+Mysql server ee Python

Xaaladeena, waxaanu si toos ah uga fiirsan doonaa xogta waxa ku jira xidhmada UDP, iyada oo aan lahayn madax-dhaqameedka lakabka OSI, kuwaas oo ah qaab dhismeedka DHCP:

DHCPDIScover

Haddaba, habka helitaanka ciwaanka IP-ga ee aaladda waxa ay ka bilaabataa macmiilka DHCP oo codsi baahinta ka soo diraya dekedda 68 ilaa 255.255.255.255:67. Xirmadan, macmiilku waxa ku jira ciwaanka MAC, iyo sidoo kale waxa dhabta ah ee uu rabo in laga helo server-ka DHCP. Qaab dhismeedka xirmada waxaa lagu qeexay shaxda hoose.

Shaxda Qaab dhismeedka Xidhmada DHCPDISCOVER

Booska xirmada
Magaca qiimaha
Tusaale:
Horudhac
Baay
Sharaxa

1
Codsiga Boot
1
hex
1
Nooca fariinta 1 - codsi ka yimid macmiilka oo u gudbiya server, 2 - ka jawaabista server ilaa macmiilka

2
Nooca Hardware
1
hex
1
Nooca cinwaanka qalabka, ee ku jira borotokoolkan 1 - MAC

3
dhererka ciwaannada qalabka
6
hex
1
Qalabka MAC dhererka ciwaanka

4
Hops
1
hex
1
Tirada dariiqyada dhexe

5
Aqoonsiga Macaamil ganacsi
23:cf:de:1d
hex
4
Aqoonsiga macaamil ganacsi ee gaarka ah. Waxa abuuray macmiilku bilowga hawlgalka codsiga

7
Labaad ayaa dhacay
0
hex
4
Waqti ilbiriqsiyo gudahood laga bilaabo bilawga habka helitaanka ciwaanka

9
Calamada kabaha
0
hex
2
Calamo gaar ah oo loo dejin karo si ay u muujiyaan cabbirrada borotokoolka

11
Ciwaanka IP-ga macmiilka
0.0.0.0
String
4
Ciwaanka IP-ga macmiilka (haddii uu jiro)

15
Ciwaanka IP-ga macmiilkaaga
0.0.0.0
String
4
Ciwaanka IP-ga ee uu bixiyo server-ku (haddii la heli karo)

19
Ciwaanka IP-ga ee serverka xiga
0.0.0.0
String
4
Ciwaanka IP-ga ee serverka (haddii la yaqaan)

23
Cinwaanka IP-ga wakiilka gudbinta
172.16.114.41
String
4
Cinwaanka IP ee wakiilka gudbinta (tusaale, beddelka)

27
Cinwaanka MAC macmiilka
14:d6:4d:a7:c9:55
hex
6
Cinwaanka MAC ee xirmada soo diraha (macmiilka)

31
suufka ciwaanka qalabka macmiilka
 
hex
10
Kursiga kaydsan. Caadi ahaan waxaa ka buuxsamay eber

41
Magaca server-ka
 
String
64
Magaca serverka DHCP Caadiyan lama kala qaado

105
Magaca faylka boot
 
String
128
Magaca faylka ee server-ka ay isticmaalaan saldhigyada diskooga marka la bootinaayo

235
Kukiyada sixirka
63: 82: 53: 63
hex
4
Lambarka "Sixirka", sida ku cad, oo ay ku jiraan. waxaad go'aamin kartaa in xirmadan ay iska leedahay nidaamka DHCP

Xulashada DHCP Waxaad u tagi kartaa si kasta

236
Lambarka doorashada
53
December
1
Doorashada 53, oo qeexaysa nooca xidhmada DHCP

1 - DHCPDISCOVER
3 - DHCPREQUEST
2 - DHCPOFFER
5 - DHCPACK
8 - DHCPINFORM

 
Dhererka doorashada
1
December
1

 
Qiimaha ikhtiyaarka
1
December
1

 
Lambarka doorashada
50
December
1
Ciwaanka IP-ga ee macmiilku rabo inuu helo?

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
172.16.134.61
String
4

 
Lambarka doorashada
55
 
1
Xuduudaha shabakadda ee uu codsaday macmiilku. Halabuurku wuu kala duwanaan karaa

01 - maaskaro shabakad
03 - Gateway
06 - DNS
oc - Magaca martida
0f - magaca shabakada shabakada
1c - ciwaanka codsiga baahinta (baahinta)
42 - Magaca server-ka TFTP
79 - Jidka Joogta ah ee aan fasalka lahayn

 
Dhererka doorashada
8
 
1

 
Qiimaha ikhtiyaarka
01:03:06:0c:0f:1c:42:79
 
8

 
Lambarka doorashada
82
December
 
Xulashada 82, kaas oo gudbiya ciwaanka MAC ee qalabka soo noqnoqda iyo qaar ka mid ah qiimaha dheeraadka ah.

Inta badan, tani waa dekedda furaha uu ku shaqeeyo dhamaadka macmiilka DHCP, doorashadani waxay ka kooban tahay qiyaaso dheeraad ah, byte ugu horreeya waa tirada "suboption", ka labaadna waa dhererka, ka dibna qiimaha.

Xaaladdan oo kale, ikhtiyaarka 82, xulasho-hoosaadyada ayaa buul ku yaal:
Agent Circuit ID = 00:04:00:01:00:04, halkaasoo labada bytes ee ugu dambeeya ay yihiin dekedda macmiilka ee DHCP oo codsigu ka yimid

Aqoonsiga fog ee wakiilka = 00:06:c8:be:19:93:11:48 - MAC ciwaanka qalabka ku celiska ah ee DHCP

 
Dhererka doorashada
18
December
 

 
Qiimaha ikhtiyaarka
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
hex
 

 
Dhamaadka xirmada
255
December
1
255 waxay astaan ​​u tahay dhamaadka xirmada

DHCPOFFER

Isla marka uu seerfarku helo xidhmada DHCPDISCOVER iyo haddii uu arko in uu macmiilka siin karo wax ka la codsaday, markaas waxa uu u soo saarayaa jawaab - DHCPDISCOVER. Jawaabta waxaa loo diraa dekedda "meeshii ay ka timid", iyada oo la sii daayo, sababtoo ah Waqtigan xaadirka ah, macmiilku weli ma haysto ciwaanka IP-ga, sidaas darteed wuxuu aqbali karaa oo keliya baakadda haddii loo diro baahinta. Macmiilku wuxuu aqoonsan yahay in tani ay u tahay xirmo isaga oo ciwaankiisa MAC ah oo ku dhex jira xirmada, iyo sidoo kale lambarka macaamilka ee uu soo saaro waqtiga xirmada ugu horreysa ee la abuurayo.

Shaxda Qaab dhismeedka Xidhmada DHCPOFFER

Booska xirmada
Magaca qiimaha (caado)
Tusaale:
Horudhac
Baay
Sharaxa

1
Codsiga Boot
1
hex
1
Nooca fariinta 1 - codsi ka yimid macmiilka oo u gudbiya server, 2 - ka jawaabista server ilaa macmiilka

2
Nooca Hardware
1
hex
1
Nooca cinwaanka qalabka, ee ku jira borotokoolkan 1 - MAC

3
dhererka ciwaannada qalabka
6
hex
1
Qalabka MAC dhererka ciwaanka

4
Hops
1
hex
1
Tirada dariiqyada dhexe

5
Aqoonsiga Macaamil ganacsi
23:cf:de:1d
hex
4
Aqoonsiga macaamil ganacsi ee gaarka ah. Waxa abuuray macmiilku bilowga hawlgalka codsiga

7
Labaad ayaa dhacay
0
hex
4
Waqti ilbiriqsiyo gudahood laga bilaabo bilawga habka helitaanka ciwaanka

9
Calamada kabaha
0
hex
2
Calamo gaar ah oo loo dejin karo si ay u muujiyaan cabbirrada borotokoolka. Xaaladdan, 0 macnaheedu waa nooca codsiga Unicast

11
Ciwaanka IP-ga macmiilka
0.0.0.0
String
4
Ciwaanka IP-ga macmiilka (haddii uu jiro)

15
Ciwaanka IP-ga macmiilkaaga
172.16.134.61
String
4
Ciwaanka IP-ga ee uu bixiyo server-ku (haddii la heli karo)

19
Ciwaanka IP-ga ee serverka xiga
0.0.0.0
String
4
Ciwaanka IP-ga ee serverka (haddii la yaqaan)

23
Cinwaanka IP-ga wakiilka gudbinta
172.16.114.41
String
4
Cinwaanka IP ee wakiilka gudbinta (tusaale, beddelka)

27
Cinwaanka MAC macmiilka
14:d6:4d:a7:c9:55
hex
6
Cinwaanka MAC ee xirmada soo diraha (macmiilka)

31
suufka ciwaanka qalabka macmiilka
 
hex
10
Kursiga kaydsan. Caadi ahaan waxaa ka buuxsamay eber

41
Magaca server-ka
 
String
64
Magaca serverka DHCP Caadiyan lama kala qaado

105
Magaca faylka boot
 
String
128
Magaca faylka ee server-ka ay isticmaalaan saldhigyada diskooga marka la bootinaayo

235
Kukiyada sixirka
63: 82: 53: 63
hex
4
Lambarka "Sixirka", sida ku cad, oo ay ku jiraan. waxaad go'aamin kartaa in xirmadan ay iska leedahay nidaamka DHCP

Xulashada DHCP Waxaad u tagi kartaa si kasta

236
Lambarka doorashada
53
December
1
Xulashada 53, oo qeexaysa nooca xirmada DHCP 2 - DHCPOFFER

 
Dhererka doorashada
1
December
1

 
Qiimaha ikhtiyaarka
2
December
1

 
Lambarka doorashada
1
December
1
Ikhtiyaarka lagu siinayo macmiilka DHCP maaskaro shabakadeed

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
255.255.224.0
String
4

 
Lambarka doorashada
3
December
1
Ikhtiyaarka lagu siinayo macmiilka DHCP albaabka hore

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
172.16.12.1
String
4

 
Lambarka doorashada
6
December
1
Ikhtiyaarka lagu siinayo DHCP macmiilka DNS

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
8.8.8.8
String
4

 
Lambarka doorashada
51
December
1
Cimrada inta lagu jiro xaddidaadaha shabakadda ee la soo saaray ilbiriqsiyo gudahood, ka dib macmiilka DHCP waa inuu mar kale codsadaa

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
86400
December
4

 
Lambarka doorashada
82
December
1
Doorashada 82, waxay ku celisaa wixii ku soo galay DHCPDISCOVER

 
Dhererka doorashada
18
December
1

 
Qiimaha ikhtiyaarka
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
December
18

 
Dhamaadka xirmada
255
December
1
255 waxay astaan ​​u tahay dhamaadka xirmada

DHCPREQUEST

Ka dib marka macmiilku helo DHCPOFFER, wuxuu sameeyaa baakidh uu ku codsanayo cabirrada shabakadaha maaha dhammaan server-yada DHCP ee shabakada, laakiin kaliya mid gaar ah, kaas oo uu DHCPOFFER soo bandhigo uu "jeclaa" ugu badnaa. Shuruudaha "sida" way kala duwanaan karaan waxayna ku xiran yihiin hirgelinta DHCP ee macmiilka. Qofka helaya codsiga waxa lagu cayimay iyadoo la isticmaalayo ciwaanka MAC ee serfarka DHCP. Sidoo kale, xidhmada DHCPREQUEST waxaa soo diri kara macmiilka iyada oo aan marka hore soo saarin DHCPDISCOVER, haddii ciwaanka IP-ga serfarka mar hore la helay.

Shaxda Qaab dhismeedka Xidhmada DHCPREQUEST

Booska xirmada
Magaca qiimaha (caado)
Tusaale:
Horudhac
Baay
Sharaxa

1
Codsiga Boot
1
hex
1
Nooca fariinta 1 - codsi ka yimid macmiilka oo u gudbiya server, 2 - ka jawaabista server ilaa macmiilka

2
Nooca Hardware
1
hex
1
Nooca cinwaanka qalabka, ee ku jira borotokoolkan 1 - MAC

3
dhererka ciwaannada qalabka
6
hex
1
Qalabka MAC dhererka ciwaanka

4
Hops
1
hex
1
Tirada dariiqyada dhexe

5
Aqoonsiga Macaamil ganacsi
23:cf:de:1d
hex
4
Aqoonsiga macaamil ganacsi ee gaarka ah. Waxa abuuray macmiilku bilowga hawlgalka codsiga

7
Labaad ayaa dhacay
0
hex
4
Waqti ilbiriqsiyo gudahood laga bilaabo bilawga habka helitaanka ciwaanka

9
Calamada kabaha
8000
hex
2
Calamo gaar ah oo loo dejin karo si ay u muujiyaan cabbirrada borotokoolka. Xaaladdan oo kale, "baahinta" waa la dhigay

11
Ciwaanka IP-ga macmiilka
0.0.0.0
String
4
Ciwaanka IP-ga macmiilka (haddii uu jiro)

15
Ciwaanka IP-ga macmiilkaaga
172.16.134.61
String
4
Ciwaanka IP-ga ee uu bixiyo server-ku (haddii la heli karo)

19
Ciwaanka IP-ga ee serverka xiga
0.0.0.0
String
4
Ciwaanka IP-ga ee serverka (haddii la yaqaan)

23
Cinwaanka IP-ga wakiilka gudbinta
172.16.114.41
String
4
Cinwaanka IP ee wakiilka gudbinta (tusaale, beddelka)

27
Cinwaanka MAC macmiilka
14:d6:4d:a7:c9:55
hex
6
Cinwaanka MAC ee xirmada soo diraha (macmiilka)

31
suufka ciwaanka qalabka macmiilka
 
hex
10
Kursiga kaydsan. Caadi ahaan waxaa ka buuxsamay eber

41
Magaca server-ka
 
String
64
Magaca serverka DHCP Caadiyan lama kala qaado

105
Magaca faylka boot
 
String
128
Magaca faylka ee server-ka ay isticmaalaan saldhigyada diskooga marka la bootinaayo

235
Kukiyada sixirka
63: 82: 53: 63
hex
4
Lambarka "Sixirka", sida ku cad, oo ay ku jiraan. waxaad go'aamin kartaa in xirmadan ay iska leedahay nidaamka DHCP

Xulashada DHCP Waxaad u tagi kartaa si kasta

236
Lambarka doorashada
53
December
3
Xulashada 53, oo qeexaysa xirmada DHCP nooca 3 - DHCPREQUEST

 
Dhererka doorashada
1
December
1

 
Qiimaha ikhtiyaarka
3
December
1

 
Lambarka doorashada
61
December
1
Aqoonsiga macmiilka: 01 (loogu talagalay Ehernet) + cinwaanka MAC macmiilka

 
Dhererka doorashada
7
December
1

 
Qiimaha ikhtiyaarka
01:2c:ab:25:ff:72:a6
hex
7

 
Lambarka doorashada
60
December
 
"Aqoonsiga fasalka iibiyaha". Xaaladeyda, waxay ka warbixisaa nooca macmiilka DHCP. Waxaa laga yaabaa in aaladaha kale ay soo celiyaan wax ka duwan. Windows tusaale ahaan waxay soo sheegaysaa MSFT 5.0

 
Dhererka doorashada
11
December
 

 
Qiimaha ikhtiyaarka
udhcp 0.9.8
String
 

 
Lambarka doorashada
55
 
1
Xuduudaha shabakadda ee uu codsaday macmiilku. Halabuurku wuu kala duwanaan karaa

01 - maaskaro shabakad
03 - Gateway
06 - DNS
oc - Magaca martida
0f - magaca shabakada shabakada
1c - ciwaanka codsiga baahinta (baahinta)
42 - Magaca server-ka TFTP
79 - Jidka Joogta ah ee aan fasalka lahayn

 
Dhererka doorashada
8
 
1

 
Qiimaha ikhtiyaarka
01:03:06:0c:0f:1c:42:79
 
8

 
Lambarka doorashada
82
December
1
Doorashada 82, waxay ku celisaa wixii ku soo galay DHCPDISCOVER

 
Dhererka doorashada
18
December
1

 
Qiimaha ikhtiyaarka
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
December
18

 
Dhamaadka xirmada
255
December
1
255 waxay astaan ​​u tahay dhamaadka xirmada

DHCPACK

Sida xaqiijinta in "haa, taasi waa sax, kani waa cinwaankaaga IP-ga, mana siin doono qof kale" server-ka DHCP, xirmo qaab DHCPACK ah oo ka socda server-ka oo u adeega macmiilka. Waxaa loo diraa baahinta sida baakadaha kale. In kasta oo, koodka hoose ee server-ka DHCP ee lagu hirgeliyay Python, haddii ay dhacdo, waxaan nuqul ka dhigayaa codsi kasta oo baahin aniga oo u diraya baakidh IP macmiil gaar ah, haddii hore loo yaqaan. Waxaa intaa dheer, server-ka DHCP ma daneeyo haba yaraatee in xirmada DHCPACK ay gaartay macmiilka. Haddii macmiilku aanu helin DHCPACK, ka dib muddo ka dib waxay si fudud ku soo celinaysaa DHCPREQUEST

Shaxda Qaab dhismeedka Xidhmada DHCPACK

Booska xirmada
Magaca qiimaha (caado)
Tusaale:
Horudhac
Baay
Sharaxa

1
Codsiga Boot
2
hex
1
Nooca fariinta 1 - codsi ka yimid macmiilka oo u gudbiya server, 2 - ka jawaabista server ilaa macmiilka

2
Nooca Hardware
1
hex
1
Nooca cinwaanka qalabka, ee ku jira borotokoolkan 1 - MAC

3
dhererka ciwaannada qalabka
6
hex
1
Qalabka MAC dhererka ciwaanka

4
Hops
1
hex
1
Tirada dariiqyada dhexe

5
Aqoonsiga Macaamil ganacsi
23:cf:de:1d
hex
4
Aqoonsiga macaamil ganacsi ee gaarka ah. Waxa abuuray macmiilku bilowga hawlgalka codsiga

7
Labaad ayaa dhacay
0
hex
4
Waqti ilbiriqsiyo gudahood laga bilaabo bilawga habka helitaanka ciwaanka

9
Calamada kabaha
8000
hex
2
Calamo gaar ah oo loo dejin karo si ay u muujiyaan cabbirrada borotokoolka. Xaaladdan oo kale, "baahinta" waa la dhigay

11
Ciwaanka IP-ga macmiilka
0.0.0.0
String
4
Ciwaanka IP-ga macmiilka (haddii uu jiro)

15
Ciwaanka IP-ga macmiilkaaga
172.16.134.61
String
4
Ciwaanka IP-ga ee uu bixiyo server-ku (haddii la heli karo)

19
Ciwaanka IP-ga ee serverka xiga
0.0.0.0
String
4
Ciwaanka IP-ga ee serverka (haddii la yaqaan)

23
Cinwaanka IP-ga wakiilka gudbinta
172.16.114.41
String
4
Cinwaanka IP ee wakiilka gudbinta (tusaale, beddelka)

27
Cinwaanka MAC macmiilka
14:d6:4d:a7:c9:55
hex
6
Cinwaanka MAC ee xirmada soo diraha (macmiilka)

31
suufka ciwaanka qalabka macmiilka
 
hex
10
Kursiga kaydsan. Caadi ahaan waxaa ka buuxsamay eber

41
Magaca server-ka
 
String
64
Magaca serverka DHCP Caadiyan lama kala qaado

105
Magaca faylka boot
 
String
128
Magaca faylka ee server-ka ay isticmaalaan saldhigyada diskooga marka la bootinaayo

235
Kukiyada sixirka
63: 82: 53: 63
hex
4
Lambarka "Sixirka", sida ku cad, oo ay ku jiraan. waxaad go'aamin kartaa in xirmadan ay iska leedahay nidaamka DHCP

Xulashada DHCP Waxaad u tagi kartaa si kasta

236
Lambarka doorashada
53
December
3
Xulashada 53, oo qeexaysa xirmada DHCP nooca 5 - DHCPACK

 
Dhererka doorashada
1
December
1

 
Qiimaha ikhtiyaarka
5
December
1

 
Lambarka doorashada
1
December
1
Ikhtiyaarka lagu siinayo macmiilka DHCP maaskaro shabakadeed

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
255.255.224.0
String
4

 
Lambarka doorashada
3
December
1
Ikhtiyaarka lagu siinayo macmiilka DHCP albaabka hore

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
172.16.12.1
String
4

 
Lambarka doorashada
6
December
1
Ikhtiyaarka lagu siinayo DHCP macmiilka DNS

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
8.8.8.8
String
4

 
Lambarka doorashada
51
December
1
Cimrada inta lagu jiro xaddidaadaha shabakadda ee la soo saaray ilbiriqsiyo gudahood, ka dib macmiilka DHCP waa inuu mar kale codsadaa

 
Dhererka doorashada
4
December
1

 
Qiimaha ikhtiyaarka
86400
December
4

 
Lambarka doorashada
82
December
1
Doorashada 82, waxay ku celisaa wixii ku soo galay DHCPDISCOVER

 
Dhererka doorashada
18
December
1

 
Qiimaha ikhtiyaarka
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
December
18

 
Dhamaadka xirmada
255
December
1
255 waxay astaan ​​u tahay dhamaadka xirmada

Ku rakibida

Rakibadu waxay dhab ahaantii ka kooban tahay rakibidda qaybaha Python ee lagama maarmaanka u ah shaqada. Waxaa loo maleynayaa in MySQL mar hore la rakibay oo la habeeyey.

FreeBSD

pkg ku rakib python3 python3 -m ensurepip pip3 rakib mysql-connector

Ubuntu

sudo apt-get install python3 sudo apt-get install pip3 sudo pip3 rakib mysql-connector

Waxaan abuurnaa xog ururin MySQL ah, ku shubo pydhcp.sql daadinta, oo waxaan dejineynaa faylka qaabeynta.

Qaabeynta

Dhammaan dejinta server waxay ku jiraan faylka xml Faylka tixraaca:

1.0 0.0.0.0 255.255.255.255 192.168.0.71 8600 1 255.255.255.0 192.168.0.1 localhost imtixaan imtixaan pydhcp ikhtiyaar_8.8.8.8_hex:sw_port82:1:20 ikhtiyaar_22_hex:sw_port82:2:16 ikhtiyaar_18_hex:sw_mac:82:26 40 ka dooro ip,mask,router,dns isticmaalayaasha halka sare(mac)=sare('{option_3_AgentRemoteId_hex}') iyo top(port)=sare('{option_1_AgentCircuitId_port_hex}') ka dooro ip,mask,router,dns isticmaalayaasha halka sare(mac)=sare('{sw_mac}'))iyo sare(port)=sare('{sw_port82}') ka dooro ip,mask,router,dns isticmaalayaasha halka sare(mac)=sare('{ClientMacAddress}') geli taariikhda (id,dt,mac,ip,comment) qiyamka (null, now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

Hadda si aad u faahfaahsan oo ku saabsan tags:

Qaybta dhcpserver waxay qeexaysaa habaynta aasaasiga ah ee lagu bilaabayo serverka, kuwaas oo ah:

  • martigeliyaha - waa maxay cinwaanka IP-ga ee server-ku ka dhegeysto dekedda 67
  • baahinta - kee ip ah baahinta DHCPOFFER iyo DHCPACK
  • DHCPServer - waa maxay ip server-ka DHCP
  • LeaseTime wakhtiga kirada ee ciwaanka IP-ga ee la soo saaray
  • Xadka xad-dhaafka ah - immisa xadhig ayaa isku mar wada socda si ay uga baaraandegaan baakadaha UDP ee soo galaya ee dekedda 67. Waxa loo malaynayaa inay ka caawiso mashaariicda raran 😉
  • DefaultMask,defaultRouter,defaultDNS - waxa la siiyo macaamiisha si toos ah haddii IP laga helo database-ka, laakiin xaddidaadyo dheeraad ah looma cayimin

mysql qaybta:

martigeliyaha, username, password, basename - wax walba laftiisa u hadla. Qaab dhismeed xog-ururin ah ayaa la dhejiyay GitHub

Qaybta weydiinta: codsiyada helitaanka OFFER/ACK ayaa lagu sifeeyay halkan:

  • offer_count - tirada khadadka leh codsiyada soo celiya natiijada sida ip,mask, router,dns
  • offer_n - xadhig weydiin. Haddii soo celinta ay madhan tahay, ka dib waxay fulisaa codsiga soo-jeedinta soo socota
  • history_sql - weydiin u qorta, tusaale ahaan, "taariikhda ogolaanshaha" ee macaamiisha

Codsiyada waxaa ku jiri kara wax kasta oo doorsoomayaal ah oo ka socda qaybta ikhtiyaarka ama xulashooyinka borotokoolka DHCP.

Qaybta ikhtiyaariga ah. Tani waa halka ay ka sii xiiso badan tahay. Halkan waxaan ku abuuri karnaa doorsoomayaal aan ku isticmaali karno hadhow qaybta weydiinta.

Tusaale ahaan:

option_82_hex:sw_port1:20:22

, xariiqan talisku waxa uu qaadanayaa dhamaan xariiqda ku soo gashay codsiga DHCP ee 82, qaab hex ah, oo u dhexeeya 20 ilaa 22 bytes oo loo dhan yahay oo waxa uu dhigayaa doorsoomaha cusub sw_port1

option_82_hex:sw_mac:26:40

, qeex doorsoomaha sw_mac, adiga oo hex ka soo qaadaya inta u dhaxaysa 26:40

Waxaad arki kartaa dhammaan xulashooyinka suurtagalka ah ee loo isticmaali karo weydiimaha adoo ku bilaabaya server-ka beddelka -d. Waxaan arki doonaa wax u eg qoraalkan:

-- baakidh DHCPINFORM ah ayaa ku yimid dekedda 67, laga bilaabo 0025224ad764, b'x91xa5xe0xa3xa5xa9-x8fx8a', ('172.30.114.25', 68) {'ClientMacAddress':'0025224 764%"Jxd00d' , 'HType': 'Ethernet', 'HostName': b'x7xa91xe5xa0xa3xa5-x9fx8a', 'ReqListDNS': Run, 'ReqListDomainName': Run, 'ReqListPerfowmRouterDiscover': Run, 'ReqListRout': Run, 'ReqLister 'ReqListSubnetM weydii': Run, 'ReqListVendorSpecInfo': 8, 'RequestedIpAddress': '43', 'Vendor': b'MSFT 0.0.0.0', 'chaddr': '5.0ad0025224', 'ciaddr'.764': '172.30.128.13. , 'calanka': b'x00x00', 'giadr': '172.30.114.25', 'gpoz': 308, 'hlen': 6, 'hops': 1, 'htype': 'MAC', 'sixir_cookie': b'cx82Sc', 'op': 'DHCPINFORM', 'Option12': 12, 'opption53': 53, 'opption55': 55, 'opption60': 60, 'opption61': 61, 'opption82': 82, ' option_82_byte': b'x12x01x06x00x04x00x01x00x06x02x08x00'b'x06x00x1eXx9exb2xad','opption_82_hex':'12010600040001000602080006001e 589_len': 2 82, 'opption_18_str': "b'x82x12x01x06x00x04x00x01x00x06x02x08x00x06x00eXx1exb9xad",'natiijooyinka': Been, 'seqi': 2, 'siadr': '768', 'sw_mac': '0.0.0.0e001eb589ad', 'sw_port2': '1', 'xidbyte': b'

Sidaa darteed, waxaan ku duubi karnaa doorsoome kasta {} waxaana loo isticmaali doonaa weydiinta SQL.

Aan u diiwaan geliyo taariikhda in macmiilku helay cinwaanka IP:

DHCP+Mysql server ee Python

DHCP+Mysql server ee Python

Adeegaha bilawga

./pydhcpdb.py -d -c config.xml

- d qaabka wax soo saarka console DEBUG
- c <filename> faylka qaabeynta

Qaadashada

Oo hadda faahfaahin dheeraad ah oo ku saabsan hirgelinta server-ka Python. Waa xanuun. Python waxaa lagu bartay duullimaad. Daqiiqado badan ayaa lagu sameeyaa qaabka "wow, bartey aan ka dhigay inay shaqeyso." Sinaba looma hagaajin, waxaana looga tagay foomkan badi ahaan waayo-aragnimada yar ee horumarinta Python awgeed. Waxaan dul istaagi doonaa dhinacyada ugu xiisaha badan ee hirgelinta server-ka "code".

Faylka qaabeynta XML

Qaabka caadiga ah ee Python xml.dom ayaa la isticmaalaa. Waxay u muuqataa mid fudud, laakiin inta lagu guda jiro hirgelinta waxaa jiray la'aan la arki karo oo ah dukumeenti cad iyo tusaalooyin ku saabsan shabakadda iyadoo la adeegsanayo cutubkan.

    geed = minidom.parse (gconfig ["config_file") mconfig = geed.getElementsByTagName ("mysql") ee elem ee mconfig: gconfig ["mysql_host"] = elem.getElementsByTagName (" martigeliyaha") [0].firstChild.data gconfig. =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") ee elem in dconfig: gconfig ["baahinta"]=elem.getElementsByTagName("baahinta")[0]. firstChild.data gconfig ["dhcp_host"]=elem.getElementsByTagName("martigeliyaha")[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_de =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfig["dhcp_defaultDNS"]=elem. defaultDNS") [0].firstChild.data qconfig=geed.getElementsByTagName("question") ee elem in qconfig: gconfig ["offer_count"]=elem.getElementsByTagName ("offer_count") [0] First Child.data ee nambarka gudaha kala duwan (int(gconfig ["offer_count")): gconfig["offer_"+str (nambar+0)]=elem.getElementsByTagName ["history_sql"]=elem.getElementsByTagName("history_sql")[0].firstChild.data optional=tree.getElementsByTagName("options") ee kala doorashada: node=elem.getElementsByTagName("ikhtiyaarka") ee ikhtiyaarada ku jira node : optionMod.append (options.firstChild.data)

Multithreading

Si cajiib ah oo ku filan, multithreading ee Python si cad oo fudud ayaa loo hirgeliyay.

def PacketWork(data,addr): ... # hirgalinta falanqaynta xirmada soo socota iyo ka jawaabista target=PacketWork , args=(xogta,addr,)))bilow() # sida ay ku timid - waxaanu bilawnay shaqada PacketWork ee hore loo qeexay ee gadaasha iyadoo la adeegsanayo threading.active_count()>gconfig["dhcp_ThreadLimit"]: wakhtiga. hurdo(1024) # haday nambarku jiraan Xadhigyo badan oo horeba u socday marka loo eego goobaha, waxaanu sugayna ilaa ay ka yaraadaan

Hel/dir xirmo DHCP

Si aad u dhexgasho baakadaha UDP ee kaadhka shabakadda, waxaad u baahan tahay inaad "kor u qaaddo" godka:

udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP) udp_socket.bind((gconfig ["dhcp_host")]

, halka calanku ku yaalo:

  • AF_INET - macnaheedu waa in qaabka ciwaanka uu noqon doono IP: port. Waxa kale oo jiri kara AF_UNIX - halkaas oo cinwaanka lagu bixiyo magaca faylka.
  • SOCK_DGRAM - macneheedu waxa weeye in aynaan aqbalin "baakidh ceeriin", laakiin mid mar hore soo dhex maray dabka, iyo baakidh qayb la jarjaray. Kuwaas. Waxaan helnaa baakidh UDP ah oo keliya oo aan lahayn qaybta "jirka" ee xirmada UDP. Haddii aad isticmaashid calanka SOCK_RAW, markaa waxaad sidoo kale u baahan doontaa inaad kala saarto "duubabka".

Diritaanka baakidhku waxa uu noqon karaa sida baahinta:

                    udp_socket.setsockot(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #udp_socket.sendto(packetack, (gconfig["warbaahinta"],68))

, iyo ciwaanka "halka baakadu ka timi":

                        udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # u beddel godka qaabka dhegeystaha badan rz=udp_socket.sendto(packetack, addr)

, halka SOL_SOCKET macneheedu yahay "heerka borotokoolka" ee dejinta fursadaha,

, SO_BROADCAST ikhtiyaarka ah in xirmada koofiyadda ay tahay "baahinta"

  ,SO_REUSEADDR ikhtiyaarka u beddela godka "dhagaysteyaal badan" qaab. Fikrad ahaan, looma baahna kiiskan, laakiin mid ka mid ah adeegayaasha FreeBSD ee aan ku tijaabiyay, koodka ma shaqeynin ikhtiyaarkan la'aanteed.

Baarista xirmada DHCP

Tani waa meesha aan runtii ka helay Python. Waxaa soo baxday in sanduuqa ka baxsan ay kuu ogolaanayso inaad si fiican ugu beddesho bytecode. Oggolaanshaha in si fudud loogu tarjumo qiyamka tobanlaha, xargaha iyo hex - i.e. Tani waa waxa aan dhab ahaantii u baahanahay si aan u fahamno qaabka xirmada. Marka, tusaale ahaan, waxaad heli kartaa noocyo kala duwan oo bytes gudaha HEX iyo kaliya bytes:

    res["xidhex"]=data[4:8].hex() res["xidbyte"]=data[4:8]

, ku xidh baytyada qaab dhismeed:

res["calanka"]=xirmo('BB',data[10],data[11])

Ka hel IP qaab dhismeedka:

res["ciadr"]=socket.inet_ntoa(xirmo('BBBB',data[12],data[13],data[14],data[15]));

Iyo dhanka kale:

res=res+socket.inet_pton(socket.AF_INET, gconfig["dhcp_Server")

Waa intaas hadda 😉

Source: www.habr.com

Add a comment