DHCP+Mysql tūmau i Python

DHCP+Mysql tūmau i Python

Ko te kaupapa o tenei kaupapa:

  • Te ako mo te DHCP i runga i te whatunga IPv4
  • Te ako i te Python (he iti noa atu i te wahanga 😉)
  • whakakapinga tūmau DB2DHCP (taku marau), taketake konei, kei te kaha ake te uaua ki te huihui mo te OS hou. A kaore au e pai ki te mea he mea ruarua kaore he huarahi ki te "huri inaianei"
  • te whiwhi i tetahi tūmau DHCP e mahi ana me te kaha ki te kowhiri i te wahitau IP o te kaiohauru ma te whakamahi i te mac a te kaitango, whakawhiti ranei i te huinga mac+port (Kōwhiringa 82)
  • te tuhi i tetahi atu paihikara (Aue! koinei taku mahi tino pai)
  • kei te whiwhi korero mo to ringaringa karapu i runga i a Habrahabr (he pai ake ranei, he tono tono) 😉

Hua: ka mahi 😉 I whakamatauria ki te FreeBSD me te Ubuntu OS. Ko te tikanga, ka taea te tono i te waehere kia mahi i raro i tetahi OS, na te mea Te ahua nei kaore he herenga motuhake i roto i te waehere.
Kia tupato! He maha atu ano kei te haere mai.

Hononga ki te putunga mo nga runaruna "pa kia ora".

Ko te tukanga o te whakauru, te whirihora me te whakamahi i te hua o te "ako i te taputapu" he iti rawa atu, katahi ka iti te ariā mo te kawa DHCP. Mo ahau ano. A mo te hitori 😉

He ariā iti

He aha te DHCP

He kawa whatunga tenei e taea ai e tetahi taputapu te kimi i tona wahitau IP (me etahi atu tawhā penei i te kuwaha, DNS, me etahi atu) mai i te tūmau DHCP. Ka whakawhitihia nga paatete ma te whakamahi i te kawa UDP. Ko te tikanga whanui mo te mahi o te taputapu ina tono tawhā whatunga ko enei e whai ake nei:

  1. Ka tukuna e te taputapu (kiritaki) he tono haapurorotanga UDP (DHCPDISCOVER) puta noa i te whatunga me te tono "pai, homai tetahi wahitau IP ki ahau." I tua atu, i te nuinga o te waa (engari kaore i nga wa katoa) ka puta te tono mai i te tauranga 68 (puna), ko te taunga ko te tauranga 67 (taunga). Ka tukuna ano e etahi taputapu nga putea mai i te tauranga 67. Ko te wahitau MAC o te taputapu kiritaki kei roto i te kete DHCPDISCOVER.
  2. Ko nga tūmau DHCP katoa kei runga i te whatunga (a he maha pea o raatau) ka hanga he tuku DHCPOFFER me nga tautuhinga whatunga mo te taputapu nana i tuku DHCPDISCOVER, ka whakapaoho ano hoki i runga i te whatunga. Ko te tautuhi mo wai tenei kete ka ahu mai i te wahitau MAC o te kiritaki i tukuna i mua i te tono DHCPDISCOVER.
  3. Ka whakaaehia e te kiritaki nga putea me nga tono mo nga tautuhinga whatunga, ka whiriwhiri i te mea tino ataahua (he rereke pea nga paearu, hei tauira, te wa o te tukunga o nga paatete, te maha o nga huarahi takawaenga), ka hanga he "tono mana" DHCPREQUEST me nga tautuhinga whatunga mai i te tūmau DHCP e pai ana. I tenei keehi, ka haere te paakete ki tetahi tūmau DHCP motuhake.
  4. Ko te tūmau i whiwhi i te DHCPREQUEST ka tukuna he mōkihi hōputu DHCPACK, ka whakarārangihia anō ngā tautuhinga whatunga mō tēnei kiritaki.

DHCP+Mysql tūmau i Python

I tua atu, kei reira nga putea DHCPINFORM e puta mai ana i te kiritaki, a ko te kaupapa ko te whakamohio ki te tūmau DHCP kei te ora te "kiritaki" me te whakamahi i nga tautuhinga whatunga kua tukuna. I roto i te whakatinanatanga o tenei tūmau, ka warewarehia enei putea.

Hōputu mōkihi

I te nuinga o te waa, he penei te ahua o te anga paati Ethernet:

DHCP+Mysql tūmau i Python

I a maatau, ka whakaarohia e maatau nga raraunga mai i nga ihirangi o te paatete UDP, kaore he pane kawa paparanga OSI, ara ko te hanganga DHCP:

DHCPDISCOVER

Na, ko te tukanga o te whiwhi wahitau IP mo tetahi taputapu ka timata ma te kaihoko DHCP e tuku tono haapurororaa mai i te tauranga 68 ki te 255.255.255.255:67. I roto i tenei kete, kei roto i te kaihoko tana wahitau MAC, me te mea e hiahia ana ia ki te whiwhi mai i te tūmau DHCP. Ko te hanganga o te kete e whakaahuatia ana i te ripanga i raro nei.

DHCPDISCOVER Ripanga Hanganga Pakete

Te tuunga i roto i te kete
ingoa uara
Hei tauira:
Whakataki
Byte
Whakamārama

1
Tono Whakaara
1
Hex
1
Momo karere. 1 - tono mai i te kiritaki ki te tūmau, 2 - te whakautu mai i te tūmau ki te kiritaki

2
Momo taputapu
1
Hex
1
Momo wāhitau pūmārō, i tēnei kawa 1 - MAC

3
Te roa o nga wahitau taputapu
6
Hex
1
Roa wāhitau MAC Pūrere

4
Hops
1
Hex
1
Te maha o nga huarahi takawaenga

5
ID Whakawhiti
23:cf:de:1d
Hex
4
Tautuhi tauwhitinga ahurei. I hangaia e te kiritaki i te timatanga o te mahi tono

7
Kua pahemo te tuarua
0
Hex
4
Te wa i roto i nga hēkona mai i te timatanga o te mahi mo te whiwhi wahitau

9
Ko nga haki whawhai
0
Hex
2
Ko etahi haki ka taea te tautuhi hei tohu i nga tawhā kawa

11
Wāhitau IP kiritaki
0.0.0.0
Raina
4
Wāhitau IP Kiritaki (mehemea kei)

15
Tō wāhitau IP kiritaki
0.0.0.0
Raina
4
Wāhitau IP e tukuna ana e te tūmau (mehemea kei te wātea)

19
Wāhitau IP tūmau panuku
0.0.0.0
Raina
4
Wāhitau IP Tūmau (mehemea e mōhiotia ana)

23
Wāhitau IP kaihoko Relay
172.16.114.41
Raina
4
Wāhitau IP o te kaihoko kawe (hei tauira, he whakakā)

27
Wāhitau MAC Kiritaki
14:d6:4d:a7:c9:55
Hex
6
Wāhitau MAC o te kaituku pākete (kiritaki)

31
Padding wāhitau taputapu kiritaki
 
Hex
10
Noho rahui. I te nuinga o te wa ka whakakiia ki te kore

41
Ingoa kaihautu tūmau
 
Raina
64
ingoa tūmau DHCP. I te nuinga o te waa kaore i tukuna

105
Whakaara ingoa kōnae
 
Raina
128
Ingoa kōnae i runga i te tūmau e whakamahia ana e nga teihana korekore i te wa e whakaara ana

235
pihikete makutu
63: 82: 53: 63
Hex
4
Ko te nama "Magic", e ai ki a ia, incl. ka taea e koe te whakatau no te kawa DHCP tenei kete

Kōwhiringa DHCP. Ka taea te haere ki tetahi ota

236
Tau kōwhiringa
53
Tīhema
1
Kōwhiringa 53, e tohu ana i te momo pākete DHCP

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

 
Te roa o te whiringa
1
Tīhema
1

 
Uara kōwhiringa
1
Tīhema
1

 
Tau kōwhiringa
50
Tīhema
1
He aha te wahitau IP e hiahia ana te kiritaki ki te whiwhi?

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
172.16.134.61
Raina
4

 
Tau kōwhiringa
55
 
1
Tawhā whatunga i tonohia e te kiritaki. Ka rereke pea te tito

01 — Whatunga kanohi kanohi
03 - Te kuwaha
06 - DNS
oc — Ingoa Kaihautū
0f - ingoa rohe whatunga
1c - wāhitau o te tono whakapāho (pāho)
42 - ingoa tūmau TFTP
79 - Te Ara Pateko Karekau

 
Te roa o te whiringa
8
 
1

 
Uara kōwhiringa
01:03:06:0c:0f:1c:42:79
 
8

 
Tau kōwhiringa
82
Tīhema
 
Kōwhiringa 82, e tuku ana i te wāhitau MAC o te taputapu tukurua me etahi atu uara.

Ko te nuinga o nga wa, koinei te tauranga o te whakawhiti e rere ana te mutunga o te kiritaki DHCP. Kei roto i tenei whiringa etahi taapiri taapiri.

I tenei take, i roto i te waahanga 82, ka kohanga nga waahanga-iti:
Agent Circuit ID = 00:04:00:01:00:04, ko nga paita whakamutunga e rua ko te tauranga kiritaki DHCP i puta mai ai te tono.

ID Mamao Agent = 00:06:c8:be:19:93:11:48 - wāhitau MAC o te taputapu tukurua DHCP

 
Te roa o te whiringa
18
Tīhema
 

 
Uara kōwhiringa
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
Hex
 

 
Mutunga o te kete
255
Tīhema
1
Ko te 255 te tohu i te mutunga o te kete

DHCPOFFER

I te wa ka whiwhi te tūmau i te pākete DHCPDISCOVER a ki te kite ia ka taea e ia te tuku ki te kiritaki tetahi mea mai i te mea i tonoa, ka puta he whakautu mo taua mea - DHCPDISCOVER. Ka tukuna te whakautu ki te tauranga "mai i te wahi i haere mai ai", ma te panui, na te mea I tenei wa, karekau he wahitau IP a te kaihoko, na reira ka taea noa e ia te whakaae ki te paatete mena ka tukuna ma te panui. E mohio ana te kaihoko he kete tenei mo tana wahitau MAC kei roto i te kete, me te nama tauwhitinga ka mahia e ia i te wa i hangaia ai te kete tuatahi.

DHCPOFFER Ripanga Hanganga Pakete

Te tuunga i roto i te kete
Ingoa o te uara (noa)
Hei tauira:
Whakataki
Byte
Whakamārama

1
Tono Whakaara
1
Hex
1
Momo karere. 1 - tono mai i te kiritaki ki te tūmau, 2 - te whakautu mai i te tūmau ki te kiritaki

2
Momo taputapu
1
Hex
1
Momo wāhitau pūmārō, i tēnei kawa 1 - MAC

3
Te roa o nga wahitau taputapu
6
Hex
1
Roa wāhitau MAC Pūrere

4
Hops
1
Hex
1
Te maha o nga huarahi takawaenga

5
ID Whakawhiti
23:cf:de:1d
Hex
4
Tautuhi tauwhitinga ahurei. I hangaia e te kiritaki i te timatanga o te mahi tono

7
Kua pahemo te tuarua
0
Hex
4
Te wa i roto i nga hēkona mai i te timatanga o te mahi mo te whiwhi wahitau

9
Ko nga haki whawhai
0
Hex
2
Ko etahi haki ka taea te tautuhi hei tohu i nga tawhā kawa. I tenei take, ko te 0 te tikanga o te momo tono Unicast

11
Wāhitau IP kiritaki
0.0.0.0
Raina
4
Wāhitau IP Kiritaki (mehemea kei)

15
Tō wāhitau IP kiritaki
172.16.134.61
Raina
4
Wāhitau IP e tukuna ana e te tūmau (mehemea kei te wātea)

19
Wāhitau IP tūmau panuku
0.0.0.0
Raina
4
Wāhitau IP Tūmau (mehemea e mōhiotia ana)

23
Wāhitau IP kaihoko Relay
172.16.114.41
Raina
4
Wāhitau IP o te kaihoko kawe (hei tauira, he whakakā)

27
Wāhitau MAC Kiritaki
14:d6:4d:a7:c9:55
Hex
6
Wāhitau MAC o te kaituku pākete (kiritaki)

31
Padding wāhitau taputapu kiritaki
 
Hex
10
Noho rahui. I te nuinga o te wa ka whakakiia ki te kore

41
Ingoa kaihautu tūmau
 
Raina
64
ingoa tūmau DHCP. I te nuinga o te waa kaore i tukuna

105
Whakaara ingoa kōnae
 
Raina
128
Ingoa kōnae i runga i te tūmau e whakamahia ana e nga teihana korekore i te wa e whakaara ana

235
pihikete makutu
63: 82: 53: 63
Hex
4
Ko te nama "Magic", e ai ki a ia, incl. ka taea e koe te whakatau no te kawa DHCP tenei kete

Kōwhiringa DHCP. Ka taea te haere ki tetahi ota

236
Tau kōwhiringa
53
Tīhema
1
Kōwhiringa 53, e tautuhi ana i te momo putea DHCP 2 - DHCPOFFER

 
Te roa o te whiringa
1
Tīhema
1

 
Uara kōwhiringa
2
Tīhema
1

 
Tau kōwhiringa
1
Tīhema
1
Kōwhiringa ki te tuku ki te kiritaki DHCP he kanohi whatunga

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
255.255.224.0
Raina
4

 
Tau kōwhiringa
3
Tīhema
1
Kōwhiringa ki te tuku ki te kiritaki DHCP he kuaha taunoa

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
172.16.12.1
Raina
4

 
Tau kōwhiringa
6
Tīhema
1
Kōwhiringa ki te tuku DHCP ki te kiritaki DNS

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
8.8.8.8
Raina
4

 
Tau kōwhiringa
51
Tīhema
1
Te roanga o nga tawhā whatunga kua tukuna i roto i nga hēkona, muri iho me tono ano te kaihoko DHCP

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
86400
Tīhema
4

 
Tau kōwhiringa
82
Tīhema
1
Kōwhiringa 82, ka whakahoki ano i nga mea i tae mai ki DHCPDISCOVER

 
Te roa o te whiringa
18
Tīhema
1

 
Uara kōwhiringa
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
Tīhema
18

 
Mutunga o te kete
255
Tīhema
1
Ko te 255 te tohu i te mutunga o te kete

DHCPREQUEST

I muri i te whiwhinga a te kiritaki i te DHCPOFFER, ka hanga e ia he paatete e tono ana i nga tawhā whatunga kaua ki nga tūmau DHCP katoa i runga i te whatunga, engari ki te kotahi anake, ko tana tuku DHCPOFFER i tino pai ki a ia. He rereke nga paearu "rite" me te whakawhirinaki ki te whakatinanatanga DHCP a te kiritaki. Ko te kaiwhiwhi o te tono ka tohua ma te whakamahi i te wahitau MAC o te tūmau DHCP. Ano, ka taea e te kaihoko te tuku i tetahi paakete DHCPREQUEST me te kore e whakaputa tuatahi i te DHCPDISCOVER, mena kua riro ke te wahitau IP o te tūmau i mua.

DHCPREQUEST Ripanga Hanganga Pakete

Te tuunga i roto i te kete
Ingoa o te uara (noa)
Hei tauira:
Whakataki
Byte
Whakamārama

1
Tono Whakaara
1
Hex
1
Momo karere. 1 - tono mai i te kiritaki ki te tūmau, 2 - te whakautu mai i te tūmau ki te kiritaki

2
Momo taputapu
1
Hex
1
Momo wāhitau pūmārō, i tēnei kawa 1 - MAC

3
Te roa o nga wahitau taputapu
6
Hex
1
Roa wāhitau MAC Pūrere

4
Hops
1
Hex
1
Te maha o nga huarahi takawaenga

5
ID Whakawhiti
23:cf:de:1d
Hex
4
Tautuhi tauwhitinga ahurei. I hangaia e te kiritaki i te timatanga o te mahi tono

7
Kua pahemo te tuarua
0
Hex
4
Te wa i roto i nga hēkona mai i te timatanga o te mahi mo te whiwhi wahitau

9
Ko nga haki whawhai
8000
Hex
2
Ko etahi haki ka taea te tautuhi hei tohu i nga tawhā kawa. I roto i tenei take, kua whakaritea te "pāhotanga".

11
Wāhitau IP kiritaki
0.0.0.0
Raina
4
Wāhitau IP Kiritaki (mehemea kei)

15
Tō wāhitau IP kiritaki
172.16.134.61
Raina
4
Wāhitau IP e tukuna ana e te tūmau (mehemea kei te wātea)

19
Wāhitau IP tūmau panuku
0.0.0.0
Raina
4
Wāhitau IP Tūmau (mehemea e mōhiotia ana)

23
Wāhitau IP kaihoko Relay
172.16.114.41
Raina
4
Wāhitau IP o te kaihoko kawe (hei tauira, he whakakā)

27
Wāhitau MAC Kiritaki
14:d6:4d:a7:c9:55
Hex
6
Wāhitau MAC o te kaituku pākete (kiritaki)

31
Padding wāhitau taputapu kiritaki
 
Hex
10
Noho rahui. I te nuinga o te wa ka whakakiia ki te kore

41
Ingoa kaihautu tūmau
 
Raina
64
ingoa tūmau DHCP. I te nuinga o te waa kaore i tukuna

105
Whakaara ingoa kōnae
 
Raina
128
Ingoa kōnae i runga i te tūmau e whakamahia ana e nga teihana korekore i te wa e whakaara ana

235
pihikete makutu
63: 82: 53: 63
Hex
4
Ko te nama "Magic", e ai ki a ia, incl. ka taea e koe te whakatau no te kawa DHCP tenei kete

Kōwhiringa DHCP. Ka taea te haere ki tetahi ota

236
Tau kōwhiringa
53
Tīhema
3
Kōwhiringa 53, e tautuhi ana i te momo pākete DHCP 3 - DHCPREQUEST

 
Te roa o te whiringa
1
Tīhema
1

 
Uara kōwhiringa
3
Tīhema
1

 
Tau kōwhiringa
61
Tīhema
1
ID Kiritaki: 01 (mo Ehernet) + te wahitau MAC kiritaki

 
Te roa o te whiringa
7
Tīhema
1

 
Uara kōwhiringa
01:2c:ab:25:ff:72:a6
Hex
7

 
Tau kōwhiringa
60
Tīhema
 
"Tautuutu karaehe kaihoko". I roto i taku keehi, ka ripoatahia te putanga kiritaki DHCP. Ko etahi atu taputapu ka whakahoki mai i tetahi mea rereke. Ko Windows hei tauira ka ripoata MSFT 5.0

 
Te roa o te whiringa
11
Tīhema
 

 
Uara kōwhiringa
udhcp 0.9.8
Raina
 

 
Tau kōwhiringa
55
 
1
Tawhā whatunga i tonohia e te kiritaki. Ka rereke pea te tito

01 — Whatunga kanohi kanohi
03 - Te kuwaha
06 - DNS
oc — Ingoa Kaihautū
0f - ingoa rohe whatunga
1c - wāhitau o te tono whakapāho (pāho)
42 - ingoa tūmau TFTP
79 - Te Ara Pateko Karekau

 
Te roa o te whiringa
8
 
1

 
Uara kōwhiringa
01:03:06:0c:0f:1c:42:79
 
8

 
Tau kōwhiringa
82
Tīhema
1
Kōwhiringa 82, ka whakahoki ano i nga mea i tae mai ki DHCPDISCOVER

 
Te roa o te whiringa
18
Tīhema
1

 
Uara kōwhiringa
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
Tīhema
18

 
Mutunga o te kete
255
Tīhema
1
Ko te 255 te tohu i te mutunga o te kete

DHCPACK

Hei whakapumautanga "ae, he tika, ko to wahitau IP tenei, a kaore au e tuku atu ki tetahi atu" mai i te DHCP server, he putea kei te whakatakotoranga DHCPACK mai i te tūmau ki te kaihoko. Ka tukuna kia rite ki etahi atu paanui. Ahakoa, i roto i te waehere i raro nei mo te tūmau DHCP i whakatinanahia i roto i te Python, i te mea noa, ka kapehia e ahau tetahi tono haapurororaa ma te tuku i tetahi putea ki tetahi IP kiritaki motuhake, mena kua mohiohia. I tua atu, kaore te tūmau DHCP e aro ki te mea kua tae atu te putea DHCPACK ki te kiritaki. Ki te kore te kiritaki e whiwhi i te DHCPACK, i muri i etahi wa ka whakahoki ano i te DHCPREQUEST

DHCPACK Ripanga Hanganga Pakete

Te tuunga i roto i te kete
Ingoa o te uara (noa)
Hei tauira:
Whakataki
Byte
Whakamārama

1
Tono Whakaara
2
Hex
1
Momo karere. 1 - tono mai i te kiritaki ki te tūmau, 2 - te whakautu mai i te tūmau ki te kiritaki

2
Momo taputapu
1
Hex
1
Momo wāhitau pūmārō, i tēnei kawa 1 - MAC

3
Te roa o nga wahitau taputapu
6
Hex
1
Roa wāhitau MAC Pūrere

4
Hops
1
Hex
1
Te maha o nga huarahi takawaenga

5
ID Whakawhiti
23:cf:de:1d
Hex
4
Tautuhi tauwhitinga ahurei. I hangaia e te kiritaki i te timatanga o te mahi tono

7
Kua pahemo te tuarua
0
Hex
4
Te wa i roto i nga hēkona mai i te timatanga o te mahi mo te whiwhi wahitau

9
Ko nga haki whawhai
8000
Hex
2
Ko etahi haki ka taea te tautuhi hei tohu i nga tawhā kawa. I roto i tenei take, kua whakaritea te "pāhotanga".

11
Wāhitau IP kiritaki
0.0.0.0
Raina
4
Wāhitau IP Kiritaki (mehemea kei)

15
Tō wāhitau IP kiritaki
172.16.134.61
Raina
4
Wāhitau IP e tukuna ana e te tūmau (mehemea kei te wātea)

19
Wāhitau IP tūmau panuku
0.0.0.0
Raina
4
Wāhitau IP Tūmau (mehemea e mōhiotia ana)

23
Wāhitau IP kaihoko Relay
172.16.114.41
Raina
4
Wāhitau IP o te kaihoko kawe (hei tauira, he whakakā)

27
Wāhitau MAC Kiritaki
14:d6:4d:a7:c9:55
Hex
6
Wāhitau MAC o te kaituku pākete (kiritaki)

31
Padding wāhitau taputapu kiritaki
 
Hex
10
Noho rahui. I te nuinga o te wa ka whakakiia ki te kore

41
Ingoa kaihautu tūmau
 
Raina
64
ingoa tūmau DHCP. I te nuinga o te waa kaore i tukuna

105
Whakaara ingoa kōnae
 
Raina
128
Ingoa kōnae i runga i te tūmau e whakamahia ana e nga teihana korekore i te wa e whakaara ana

235
pihikete makutu
63: 82: 53: 63
Hex
4
Ko te nama "Magic", e ai ki a ia, incl. ka taea e koe te whakatau no te kawa DHCP tenei kete

Kōwhiringa DHCP. Ka taea te haere ki tetahi ota

236
Tau kōwhiringa
53
Tīhema
3
Kōwhiringa 53, e tautuhi ana i te momo putea DHCP 5 - DHCPACK

 
Te roa o te whiringa
1
Tīhema
1

 
Uara kōwhiringa
5
Tīhema
1

 
Tau kōwhiringa
1
Tīhema
1
Kōwhiringa ki te tuku ki te kiritaki DHCP he kanohi whatunga

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
255.255.224.0
Raina
4

 
Tau kōwhiringa
3
Tīhema
1
Kōwhiringa ki te tuku ki te kiritaki DHCP he kuaha taunoa

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
172.16.12.1
Raina
4

 
Tau kōwhiringa
6
Tīhema
1
Kōwhiringa ki te tuku DHCP ki te kiritaki DNS

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
8.8.8.8
Raina
4

 
Tau kōwhiringa
51
Tīhema
1
Te roanga o nga tawhā whatunga kua tukuna i roto i nga hēkona, muri iho me tono ano te kaihoko DHCP

 
Te roa o te whiringa
4
Tīhema
1

 
Uara kōwhiringa
86400
Tīhema
4

 
Tau kōwhiringa
82
Tīhema
1
Kōwhiringa 82, ka whakahoki ano i nga mea i tae mai ki DHCPDISCOVER

 
Te roa o te whiringa
18
Tīhema
1

 
Uara kōwhiringa
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:ec
Tīhema
18

 
Mutunga o te kete
255
Tīhema
1
Ko te 255 te tohu i te mutunga o te kete

tāutanga

Ko te whakaurunga ko te whakauru i nga waahanga python e tika ana mo te mahi. E kiia ana kua whakauruhia, kua whirihoratia a MySQL.

FreeBSD

pkg tāuta python3 python3 -m ensurepip pip3 tāuta mysql-honohono

Ubuntu

sudo apt-tiki tāuta python3 sudo apt-tiki tāuta pip3 sudo pip3 tāuta mysql-honohono

Ka waihangahia e matou he papaa raraunga MySQL, ka tuku i te putunga pydhcp.sql ki roto, ka whirihora i te konae whirihoranga.

Hōutuutu

Ko nga tautuhinga tūmau katoa kei roto i te kōnae xml. Kōnae tohutoro:

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 whakamātautau whakamātautau pydhcp kōwhiringa_8.8.8.8_hex:sw_port82:1:20 option_22_hex:sw_port82:2:16 option_18_hex:sw_mac:82:26 40 tīpako ip, mask, pouara, dns mai i nga kaiwhakamahi kei runga(mac)=runga('{option_3_AgentRemoteId_hex}') me runga(tauranga)=runga('{option_1_AgentCircuitId_port_hex}') tīpako ip, mask, pouara, dns mai i nga kaiwhakamahi kei runga (mac)=runga('{sw_mac}') me runga(tauranga)=runga('{sw_port82}') tīpako ip, mask, pouara, dns mai i nga kaiwhakamahi kei hea runga(mac)=runga('{ClientMacAddress}') kōkuhu ki te hītori (id,dt,mac,ip,kōrero) uara (null,inaianei(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')

Inaianei nga korero mo nga tohu:

Ko te waahanga dhcpserver e whakaatu ana i nga tautuhinga taketake mo te tiimata i te tūmau, ara:

  • Kaihautū - he aha te wāhitau IP e whakarongo ana te tūmau i te tauranga 67
  • haapurororaa - ko tehea ip te haapurororaa mo DHCPOFFER me DHCPACK
  • DHCPServer - he aha te ip o te tūmau DHCP
  • Te wa riihi riihi o te wahitau IP kua tukuna
  • ThreadLimit - e hia nga miro e rere ana i te wa kotahi ki te tukatuka i nga paatete UDP taumai i runga i te tauranga 67. E tika ana hei awhina i nga kaupapa kawenga nui 😉
  • defaultMask,defaultRouter,defaultDNS - he aha te mea ka tukuna ki te kaiohauru ma te taunoa mena ka kitea he IP i roto i te paataka raraunga, engari karekau he taapiri taapiri mo tera.

waahanga mysql:

kaihautu, ingoa kaiwhakamahi, kupuhipa, ingoa turanga - ko nga mea katoa e korero ana mo ia ano. Ka whakairihia he anga raraunga tata ki runga GitHub

Wāhanga Uiui: Ko nga tono mo te whiwhi OFFER/ACK kua whakaahuatia i konei:

  • offer_count — te maha o nga raina me nga tono ka whakahoki mai he hua penei i te ip, mask, pouara, dns
  • tuku_n — aho uira. Mena kei te putua te whakahoki, ka mahia te tono tuku e whai ake nei
  • history_sql - he patai ka tuhi, hei tauira, ki te "hitori whakamana" mo te kaiohauru

Ka taea e nga tono te whakauru i nga taurangi mai i te waahanga whiringa, i nga whiringa ranei mai i te kawa DHCP.

Wāhanga kōwhiringa. Koinei te waahi ka pai ake. I konei ka taea e tatou te hanga taurangi ka taea e tatou te whakamahi i muri mai i te waahanga patai.

Hei tauira:

option_82_hex:sw_port1:20:22

, ka tangohia e tenei rarangi whakahau te rarangi katoa i puta mai i te whiringa tono DHCP 82, i roto i te whakatakotoranga hex, i roto i te awhe mai i te 20 ki te 22 paita whakauru me te whakauru ki roto i te taurangi hou sw_port1 (whakawhiti tauranga mai i te wahi i tae mai ai te tono)

option_82_hex:sw_mac:26:40

, tautuhia te taurangi sw_mac, tango i te hex mai i te awhe 26:40

Ka taea e koe te kite i nga whiringa ka taea te whakamahi i roto i nga patai ma te tiimata i te tūmau me te -d whakawhiti. Ka kite tatou i tetahi mea penei i tenei raarangi:

--i tae mai he kete DHCPINFORM ki te tauranga 67, mai i 0025224ad764 , b'x91xa5xe0xa3xa5xa9-x8fx8a' , ('172.30.114.25', 68) {'ClientMacAddress': '0025224'764"addresseMac00" 7d' , ' HType': 'Ethernet', 'HostName': b'x91xa5xe0xa3xa5xa9-x8fx8a', 'ReqListDNS': Pono, 'ReqListRomainName': Pono, 'ReqListPerfowmRouterDiscover': Pono, 'L TruistRouterReq:' 'ReqListSubnetM ui ': Pono, 'ReqListVendorSpecInfo': 43, 'RequestedIpAddress': '0.0.0.0', 'Kaihoko': b'MSFT 5.0', 'chaddr': '0025224ad764', '172.30.128.13ad00', '00' , 'flags': b'x172.30.114.25x308', 'giaddr': '6', 'gpoz': 1, 'hlen': 82, 'hops': 12, 'htype': 'MAC', 'magic_cookie': b'cx12Sc ', 'op': 'DHCPINFORM', 'option53': 53, 'option55': 55, 'option60': 60, 'option61': 61, 'option82': 82, 'option82': 12, ' option_01_byte': b'x06x00x04x00x01x00x06x02x08x00x06x00' b'x1x9x2eXx82exb12010600040001000602080006001xad', 'option_589_hex': '2e tion_82_len': 18 82, 'option_12_str': "b'x01x06x00x04x00x01x00x06x02x08x00x06x00x1x9eXx2exb768xad'", 'hua': Heke, 'secs,' 'siaddr': '0.0.0.0', 'sw_mac': '001e589eb2ad', 'sw_port1': '06', 'xidbyte': b'

Na reira, ka taea e tatou te takai i tetahi taurangi i roto i te {} ka whakamahia ki te uiui SQL.

Me tuhi tatou mo te hitori i whiwhi te kaihoko i te wahitau IP:

DHCP+Mysql tūmau i Python

DHCP+Mysql tūmau i Python

Tīmata tūmau

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

— d te aratau putanga papatohu DEBUG
- c <ingoakōnae> kōnae whirihoranga

Whakawhitinga

Na inaianei ka nui ake nga korero mo te whakatinana i te tūmau i Python. He mamae. I akohia te Python i runga i te rere. He maha nga wa i mahia i roto i te ahua o te "wow, he aha ahau i mahi ai." Kaore i tino arotauhia, ka waiho i tenei ahua na te iti o te wheako ki te whanaketanga Python. Ka noho ahau ki nga ahuatanga tino pai o te whakatinanatanga o te tūmau i roto i te "waehere".

Kaituhi kōnae whirihoranga XML

Ka whakamahia te tauira Python paerewa xml.dom. He ahua ngawari noa iho, engari i te wa e whakatinanahia ana ka kitea te kore o nga tuhinga maamaa me nga tauira i runga i te whatunga e whakamahi ana i tenei waahanga.

    rakau = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") mo te elem i roto i te mconfig: gconfig["mysql_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["mysql_username"]=elem.getElementsByTagName("ingoawhakamahi"[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("kupuhipa")[0].firstChild.data gconfig["mysql_basename"] =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") mo te elem i roto i te dconfig: gconfig["pāhotanga"]=elem.getElementsByTagName("pāhotanga")[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"_default =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("DeultRouter"[0].firstChild.data gconfig["dhcp_defaultDNS"]=elem.getNameElementsBy defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("Uiui") mo te elem i roto i te qconfig: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[0].firstChild.data mo te tau i roto awhe(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] : optionsMod.append(options.firstChild.data)

Panui-maha

He mea whakamiharo, he tino marama, he ngawari hoki te whakatinanatanga o te multithreading i Python.

def PacketWork(raraunga,addr): ... # te whakatinanatanga o te poroporo i te paatete taumai me te whakautu ki a ia ... i te Tika: raraunga, addr = udp_socket.recvfrom(1024) # tatari mo te miro putea UDP = threading.Thread( target=PacketWork, args=(raraunga,addr,)).timata() # i te wa i puta mai - ka whakarewahia e matou te mahi PacketWork kua tautuhia i mua i te papamuri me nga tawhā i te wa e threading.active_count() >gconfig["dhcp_ThreadLimit"]: wa. moe(1) # ki te mea he maha ake nga miro e rere ana i nga tautuhinga, ka tatari kia iti ake o raatau.

Whiwhi/tuku te putea DHCP

Hei haukoti i nga paatete UDP ka puta mai i te kaari whatunga, me "whakaara" te turanga:

udp_socket = turanga.tupapa(tupapa.AF_INET,tupapa.SOCK_DGRAM,tupapa.IPPROTO_UDP) udp_socket.bind((gconfig["dhcp_host"],67))

, kei hea nga haki:

  • AF_INET - te tikanga ko te whakatakotoranga wahitau ko IP: tauranga. He AF_UNIX ano pea - kei reira te wahitau e hoatu ana e te ingoa konae.
  • SOCK_DGRAM - ko te tikanga kaore matou e whakaae ki te "pakete mata", engari ko tetahi kua pahemo i te paahi ahi, me tetahi waahanga kua oti te whakapai. Ko era. ka whiwhi noa matou i tetahi putea UDP kaore he waahanga "tinana" o te takai putea UDP. Mena kei te whakamahi koe i te haki SOCK_RAW, katahi ka hiahia koe ki te poroporo i tenei "takai".

Ko te tuku putea ka rite ki te haapurororaa:

                    udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #hurihia te turanga ki te aratau panui rz=udp_socket.sendto(packetack, (gconfig["pāho"],68))

, me te wahitau "no hea te kete":

                        udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # whakawhiti te turanga ki te aratau whakarongo-maha rz=udp_socket.sendto(packetack, addr)

, ko te tikanga o te SOL_SOCKET ko te "taumata kawa" mo te whakarite i nga whiringa,

, SO_BROADCAST kōwhiringa ko te mōkihi potae he "pāho"

  , Ko te whiringa SO_REUSEADDR ka huri i te turanga ki te aratau "maha nga kaiwhakarongo". I roto i te ariā, kaore e tika ana i tenei keehi, engari i runga i tetahi o nga kaitoro FreeBSD i whakamatauhia e au, kaore te waehere i mahi me te kore tenei whiringa.

Te tarai i te kete DHCP

Koinei taku tino pai ki a Python. Ka puta mai i roto i te pouaka ka taea e koe te tino ngawari ki te bytecode. Whakaaetia kia tino ngawari te whakamaori ki nga uara ira, aho me te hex - i.e. koinei te mea e tika ana kia mohio tatou ki te hanganga o te kete. Na, hei tauira, ka taea e koe te tiki i te whānuitanga o nga paita i roto i te HEX me nga paita noa:

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

, pōkai ngā paita ki tētahi hanganga:

res["flags"]=pack('BB',raraunga[10],raraunga[11])

Tikina IP mai i te hanganga:

res["ciaddr"]=socket.inet_ntoa(pack('BBBB',raraunga[12],raraunga[13],raraunga[14],raraunga[15]));

A he rereke:

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

Heoi ano mo naianei 😉

Source: will.com

Tāpiri i te kōrero