A'oa'oina le Python (sili atu teisi nai lo le sasa 😉)
suitulaga server DB2DHCP (la'u tui), uluai iinei, lea ua atili ai ona faigata ona faʻapipiʻi mo le OS fou. Ma ou te le fiafia i lena mea o se binary e leai se auala e "suia ai nei"
mauaina o se server DHCP galue ma le tomai e filifili ai le tuatusi IP a le tagata fai saofaga e faʻaaoga ai le mac a le tagata fai saofaga poʻo le sui mac + port tuʻufaʻatasia (Filifiliga 82)
tusi se isi uila (Oi! o le mea lea e sili ona ou fiafia i ai)
mauaina o faʻamatalaga e uiga i lau kalapu-lima i luga o Habrahabr (pe sili atu, o se valaaulia) 😉
I'uga: e aoga 😉 Fa'ata'ita'i ile FreeBSD ma le Ubuntu OS. I le talitonuga, e mafai ona talosagaina le code e galue i lalo o soʻo se OS, aua E foliga mai e leai ni faʻamaufaʻailoga faʻapitoa i le code.
Fa'aeteete! E tele isi mea o le a o'o mai.
So'oga ile fale teu oloa mo amateurs "pa'i ola".
O le faagasologa o le faʻapipiʻiina, faʻatulagaina ma le faʻaaogaina o le taunuuga o le "suʻesuʻeina o meafaigaluega" e sili atu ona maualalo, ona fai ai lea o sina manatu itiiti e uiga i le DHCP protocol. Mo a'u lava. Ma mo talafaasolopito 😉
O sina manatu itiiti
O le a le DHCP
Ole fesoʻotaʻiga fesoʻotaʻiga lea e mafai ai e se masini ona suʻe lona tuatusi IP (ma isi faʻamaufaʻailoga e pei ole faitotoa, DNS, ma isi) mai le DHCP server. E fa'afesuia'i afifi e fa'aaoga ai le UDP protocol. O le taʻiala lautele o le faʻaogaina o le masini pe a talosagaina faʻasologa o fesoʻotaʻiga e faʻapea:
O le masini (client) e tuʻuina atu se talosaga faʻasalalauga UDP (DHCPDISCOVER) i luga o le fesoʻotaʻiga ma le talosaga "lelei, sei tuʻuina mai ia te aʻu se tuatusi IP." E le gata i lea, e masani lava (ae le o taimi uma) o le talosaga e tupu mai le taulaga 68 (punaoa), ma o le taunuuga o le taulaga 67 (taulaga). O nisi masini e auina atu foi afifi mai le taulaga 67. O le tuatusi MAC o le masini kalani o loʻo aofia i totonu o le DHCPDISCOVER package.
O 'au'aunaga uma a le DHCP o lo'o i luga o le 'upega tafa'ilagi (ma atonu o lo'o i ai le tele o latou) faia se DHCPOFFER ofo fa'atasi ai ma feso'otaiga feso'ota'iga mo le masini na tu'uina atu le DHCPDISCOVER, ma fa'asalalauina fo'i i luga ole feso'otaiga. O le fa'ailoaina po'o ai e fa'atatau i ai lenei afifi e fa'atatau i le tuatusi MAC a le kalani na tu'uina atu muamua ile talosaga DHCPDISCOVER.
E talia e le kalani ia pepa o loʻo i ai talosaga mo fesoʻotaʻiga fesoʻotaʻiga, filifili le mea e sili ona manaia (atonu e ese le taʻiala, mo se faʻataʻitaʻiga, le taimi o le tuʻuina atu o pepa, le numera o auala vavalalata), ma faia se "talosaga aloaʻia" DHCPREQUEST faʻatasi ai ma tulaga fesoʻotaʻiga. mai le DHCP server e fiafia i ai. I lenei tulaga, o le afifi e alu i se DHCP server patino.
O le 'au'aunaga na mauaina le DHCPREQUEST na te lafoina se pepa fa'atulagaina o le DHCPACK, lea e toe lisi ai le feso'ota'iga fa'atatau mo lenei tagata fa'atau.
E le gata i lea, o loʻo i ai pepa DHCPINFORM e sau mai le kalani, ma o le faʻamoemoe o le logoina lea o le DHCP server o le "tagata faʻatau o loʻo ola" ma o loʻo faʻaogaina le tuʻuina atu o fesoʻotaiga. I le fa'atinoga a lenei 'au'aunaga, e le amana'ia nei pepa.
Fa'asologa o afifi
I se tulaga lautele, o se atigi pusa Ethernet e pei o lenei:
I la matou tulaga, o le a matou iloiloina naʻo faʻamatalaga saʻo mai mea o loʻo i totonu o le UDP packet, e aunoa ma le OSI layer protocol headers, e taʻua o le DHCP structure:
DHCPDISCOVER
O lea la, o le faagasologa o le mauaina o se tuatusi IP mo se masini e amata i le DHCP client e auina atu se talosaga faasalalau mai le taulaga 68 i le 255.255.255.255:67. I totonu o lenei afifi, o le kalani e aofia ai lona tuatusi MAC, faʻapea foʻi ma le mea tonu e manaʻo e maua mai le DHCP server. O lo'o fa'amatalaina le fa'atulagaga o afifi i le laulau o lo'o i lalo.
DHCPDISCOVER Peke Fa'atulagaina Laulau
Tulaga i totonu o le afifi
igoa taua
Faataitaiga:
Faatomuaga
Fa-byte
Faamalamalamaga
1
Talosaga Fa'avae
1
Hex
1
Ituaiga savali. 1 - talosaga mai le kalani i le 'au'aunaga, 2 - tali mai le 'au'aunaga i le tagata fa'atau
2
Ituaiga meafaigaluega
1
Hex
1
Ituaiga o tuatusi meafaigaluega, i lenei protocol 1 - MAC
3
Uiga o tuatusi o meafaigaluega
6
Hex
1
Ole umi ole tuatusi MAC ole masini
4
Hops
1
Hex
1
Numera o auala feololo
5
Faʻamatalaga ID
23:cf:de:1d
Hex
4
Fa'ailoga tau fefa'ataua'iga tulaga ese. Fausia e le kalani ile amataga ole fa'agaioiga ole talosaga
7
Ua mavae lona lua
0
Hex
4
Taimi i sekone mai le amataga o le faagasologa o le mauaina o se tuatusi
9
Fu'a seevae
0
Hex
2
O nisi fu'a e mafai ona fa'atulaga e fa'ailoa ai fa'amaufa'ailoga
11
tuatusi IP tagata fa'atau
0.0.0.0
Laina
4
tuatusi IP tagata fa'atau (pe a iai)
15
Lau tuatusi IP tagata fa'atau
0.0.0.0
Laina
4
tuatusi IP na ofoina mai e le server (pe a maua)
19
Le isi tuatusi IP server
0.0.0.0
Laina
4
tuatusi IP server (pe a iloa)
23
tuatusi IP sui sooupu
172.16.114.41
Laina
4
tuatusi IP o le sui sooupu (mo se faataitaiga, se ki)
27
tuatusi MAC tagata fa'atau
14:d6:4d:a7:c9:55
Hex
6
tuatusi MAC ole tagata e auina atu pepa (tagata fa'atau)
31
Fa'alava ole tuatusi o mea faigaluega
Hex
10
Nofo fa'apolopolo. E masani ona fa'atumu i zeros
41
Igoa talimalo o le server
Laina
64
DHCP server igoa. E masani ona le fa'asalalauina
105
Igoa faila faila
Laina
128
Igoa faila i luga o le server o loʻo faʻaogaina e nofoaga e leai ni disk pe a faʻapipiʻi
235
Kuki fa'ataulāitu
63: 82: 53: 63
Hex
4
"Magic" numera, e tusa ai ma lea, e aofia ai. e mafai ona e fa'amautu o lenei afifi o le DHCP protocol
DHCP filifiliga. E mafai ona alu i soo se faasologa
236
Numera filifiliga
53
Tesema
1
Filifiliga 53, o loʻo faʻamaonia ai le ituaiga o pusa DHCP
Numera filifiliga
50
Tesema
1
O le a le tuatusi IP e mana'o le kalani e maua?
Filifiliga umi
4
Tesema
1
Tau filifiliga
172.16.134.61
Laina
4
Numera filifiliga
55
1
Fa'asologa o feso'otaiga e mana'omia e le kalani. E mafai ona eseese le tuufaatasiga
01 - Ufiufi Network
03 - Faitotoa
06 - DNS
oc — Hostname
0f - igoa ole upegatafa'ilagi
1c - tuatusi o fa'asalalauga talosaga (fa'asalalauga)
42 - TFTP igoa server
79 - Auala Tuto'atasi leai se Vasega
Filifiliga umi
8
1
Tau filifiliga
01:03:06:0c:0f:1c:42:79
8
Numera filifiliga
82
Tesema
Filifiliga 82, lea e tuʻuina atu le tuatusi MAC o le masini toe fai ma nisi faʻaopoopoga o mea taua.
O le tele o taimi, o le taulaga lea o le ki lea e fa'asolo ai le fa'ai'uga o le DHCP client. O lenei filifiliga o lo'o i ai fa'aopoopoga fa'aopoopo, O le byte muamua o le numera o le "suboption", o le lona lua o lona umi, ona taua lea.
I lenei tulaga, i le filifiliga 82, o vaega laiti o loʻo faʻapipiʻiina:
Agent Circuit ID = 00:04:00:01:00:04, lea o le lua bytes mulimuli o le DHCP client port na sau ai le talosaga.
Agent Remote ID = 00:06:c8:be:19:93:11:48 - tuatusi MAC o le masini toe fai DHCP
Filifiliga umi
18
Tesema
Tau filifiliga
01:06
00:04:00:01:00:04
02:08
00:06:c8:be:19:93:11:48
Hex
Fa'ai'uga o le afifi
255
Tesema
1
255 o loʻo faʻatusalia le pito o le afifi
DHCPOFFER
O le taimi lava e maua ai e le 'auʻaunaga le DHCPDISCOVER packet ma afai e vaʻaia e mafai ona ofoina atu i le kalani se mea mai le mea na talosagaina, ona faʻatupuina lea o se tali mo ia - DHCPDISCOVER. O le tali e auina atu i le taulaga "mai le mea na sau ai", e ala i faasalalauga, aua i le taimi nei, e leʻi maua e le kalani se tuatusi IP, o le mea lea e naʻo le taliaina o le pepa pe a lafoina e ala i faʻasalalauga. E iloa e le tagata o tausia o se afifi lea mo ia e ala i lona tuatusi MAC i totonu o le afifi, faʻapea foʻi ma le numera o fefaʻatauaiga na te faia i le taimi na faia ai le afifi muamua.
DHCPOFFER Peke Fa'atulagaina laulau
Tulaga i totonu o le afifi
Igoa o le tau (masani)
Faataitaiga:
Faatomuaga
Fa-byte
Faamalamalamaga
1
Talosaga Fa'avae
1
Hex
1
Ituaiga savali. 1 - talosaga mai le kalani i le 'au'aunaga, 2 - tali mai le 'au'aunaga i le tagata fa'atau
2
Ituaiga meafaigaluega
1
Hex
1
Ituaiga o tuatusi meafaigaluega, i lenei protocol 1 - MAC
3
Uiga o tuatusi o meafaigaluega
6
Hex
1
Ole umi ole tuatusi MAC ole masini
4
Hops
1
Hex
1
Numera o auala feololo
5
Faʻamatalaga ID
23:cf:de:1d
Hex
4
Fa'ailoga tau fefa'ataua'iga tulaga ese. Fausia e le kalani ile amataga ole fa'agaioiga ole talosaga
7
Ua mavae lona lua
0
Hex
4
Taimi i sekone mai le amataga o le faagasologa o le mauaina o se tuatusi
9
Fu'a seevae
0
Hex
2
O nisi fu'a e mafai ona fa'atulaga e fa'ailoa ai fa'amaufa'ailoga. I lenei tulaga, 0 o lona uiga o le ituaiga talosaga Unicast
11
tuatusi IP tagata fa'atau
0.0.0.0
Laina
4
tuatusi IP tagata fa'atau (pe a iai)
15
Lau tuatusi IP tagata fa'atau
172.16.134.61
Laina
4
tuatusi IP na ofoina mai e le server (pe a maua)
19
Le isi tuatusi IP server
0.0.0.0
Laina
4
tuatusi IP server (pe a iloa)
23
tuatusi IP sui sooupu
172.16.114.41
Laina
4
tuatusi IP o le sui sooupu (mo se faataitaiga, se ki)
27
tuatusi MAC tagata fa'atau
14:d6:4d:a7:c9:55
Hex
6
tuatusi MAC ole tagata e auina atu pepa (tagata fa'atau)
31
Fa'alava ole tuatusi o mea faigaluega
Hex
10
Nofo fa'apolopolo. E masani ona fa'atumu i zeros
41
Igoa talimalo o le server
Laina
64
DHCP server igoa. E masani ona le fa'asalalauina
105
Igoa faila faila
Laina
128
Igoa faila i luga o le server o loʻo faʻaogaina e nofoaga e leai ni disk pe a faʻapipiʻi
235
Kuki fa'ataulāitu
63: 82: 53: 63
Hex
4
"Magic" numera, e tusa ai ma lea, e aofia ai. e mafai ona e fa'amautu o lenei afifi o le DHCP protocol
DHCP filifiliga. E mafai ona alu i soo se faasologa
236
Numera filifiliga
53
Tesema
1
Filifiliga 53, o loʻo faʻamatalaina le ituaiga DHCP 2 packet - DHCPOFFER
Filifiliga umi
1
Tesema
1
Tau filifiliga
2
Tesema
1
Numera filifiliga
1
Tesema
1
Filifiliga e ofo atu i le tagata o tausia le DHCP se masini fesoʻotaʻiga
Filifiliga umi
4
Tesema
1
Tau filifiliga
255.255.224.0
Laina
4
Numera filifiliga
3
Tesema
1
Filifiliga e ofo atu i le kalani DHCP se faitotoa e le mafai
Filifiliga umi
4
Tesema
1
Tau filifiliga
172.16.12.1
Laina
4
Numera filifiliga
6
Tesema
1
Filifiliga e ofo atu le DHCP ile DNS client
Filifiliga umi
4
Tesema
1
Tau filifiliga
8.8.8.8
Laina
4
Numera filifiliga
51
Tesema
1
O le olaga atoa o laina fesoʻotaʻiga tuʻuina atu i sekone, a maeʻa e tatau ona toe talosagaina e le DHCP client
Filifiliga umi
4
Tesema
1
Tau filifiliga
86400
Tesema
4
Numera filifiliga
82
Tesema
1
Filifiliga 82, toe fai le mea na sau ile DHCPDISCOVER
Filifiliga umi
18
Tesema
1
Tau filifiliga
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:e
Tesema
18
Fa'ai'uga o le afifi
255
Tesema
1
255 o loʻo faʻatusalia le pito o le afifi
DHCPREQUEST
A mae'a ona maua e le kalani le DHCPOFFER, na te faia se pepa e talosagaina ai laina feso'otaiga e le o DHCP uma i luga o le upega tafailagi, ae na'o le tasi le mea patino, o lana DHCPOFFER ofo atu na te "fiafia i ai". Ole "pei" e mafai ona 'ese'ese ma fa'alagolago ile fa'atinoga ole DHCP ale kalani. O le tagata e mauaina le talosaga e faʻamaonia e faʻaaoga ai le tuatusi MAC o le DHCP server. E le gata i lea, o le DHCPREQUEST packet e mafai ona lafo e le kalani e aunoa ma le faia muamua o le DHCPDISCOVER, pe afai o le tuatusi IP a le server ua uma ona maua muamua.
DHCPREQUEST Peke Fa'atulagaina Laulau
Tulaga i totonu o le afifi
Igoa o le tau (masani)
Faataitaiga:
Faatomuaga
Fa-byte
Faamalamalamaga
1
Talosaga Fa'avae
1
Hex
1
Ituaiga savali. 1 - talosaga mai le kalani i le 'au'aunaga, 2 - tali mai le 'au'aunaga i le tagata fa'atau
2
Ituaiga meafaigaluega
1
Hex
1
Ituaiga o tuatusi meafaigaluega, i lenei protocol 1 - MAC
3
Uiga o tuatusi o meafaigaluega
6
Hex
1
Ole umi ole tuatusi MAC ole masini
4
Hops
1
Hex
1
Numera o auala feololo
5
Faʻamatalaga ID
23:cf:de:1d
Hex
4
Fa'ailoga tau fefa'ataua'iga tulaga ese. Fausia e le kalani ile amataga ole fa'agaioiga ole talosaga
7
Ua mavae lona lua
0
Hex
4
Taimi i sekone mai le amataga o le faagasologa o le mauaina o se tuatusi
9
Fu'a seevae
8000
Hex
2
O nisi fu'a e mafai ona fa'atulaga e fa'ailoa ai fa'amaufa'ailoga. I lenei tulaga, ua setiina le "faasalalauga".
11
tuatusi IP tagata fa'atau
0.0.0.0
Laina
4
tuatusi IP tagata fa'atau (pe a iai)
15
Lau tuatusi IP tagata fa'atau
172.16.134.61
Laina
4
tuatusi IP na ofoina mai e le server (pe a maua)
19
Le isi tuatusi IP server
0.0.0.0
Laina
4
tuatusi IP server (pe a iloa)
23
tuatusi IP sui sooupu
172.16.114.41
Laina
4
tuatusi IP o le sui sooupu (mo se faataitaiga, se ki)
27
tuatusi MAC tagata fa'atau
14:d6:4d:a7:c9:55
Hex
6
tuatusi MAC ole tagata e auina atu pepa (tagata fa'atau)
31
Fa'alava ole tuatusi o mea faigaluega
Hex
10
Nofo fa'apolopolo. E masani ona fa'atumu i zeros
41
Igoa talimalo o le server
Laina
64
DHCP server igoa. E masani ona le fa'asalalauina
105
Igoa faila faila
Laina
128
Igoa faila i luga o le server o loʻo faʻaogaina e nofoaga e leai ni disk pe a faʻapipiʻi
235
Kuki fa'ataulāitu
63: 82: 53: 63
Hex
4
"Magic" numera, e tusa ai ma lea, e aofia ai. e mafai ona e fa'amautu o lenei afifi o le DHCP protocol
DHCP filifiliga. E mafai ona alu i soo se faasologa
236
Numera filifiliga
53
Tesema
3
Filifiliga 53, lea e faʻamatalaina ai le ituaiga DHCP packet type 3 - DHCPREQUEST
Filifiliga umi
1
Tesema
1
Tau filifiliga
3
Tesema
1
Numera filifiliga
61
Tesema
1
ID Client: 01 (mo Ehernet) + tuatusi MAC tagata o tausia
Filifiliga umi
7
Tesema
1
Tau filifiliga
01:2c:ab:25:ff:72:a6
Hex
7
Numera filifiliga
60
Tesema
"Fa'ailoa vasega fa'atau". I loʻu tulaga, e lipotia le DHCP client version. Masalo o isi masini e toe faafoi mai se mea ese. Windows mo se faʻataʻitaʻiga lipoti MSFT 5.0
Filifiliga umi
11
Tesema
Tau filifiliga
udhcp 0.9.8
Laina
Numera filifiliga
55
1
Fa'asologa o feso'otaiga e mana'omia e le kalani. E mafai ona eseese le tuufaatasiga
01 - Ufiufi Network
03 - Faitotoa
06 - DNS
oc — Hostname
0f - igoa ole upegatafa'ilagi
1c - tuatusi o fa'asalalauga talosaga (fa'asalalauga)
42 - TFTP igoa server
79 - Auala Tuto'atasi leai se Vasega
Filifiliga umi
8
1
Tau filifiliga
01:03:06:0c:0f:1c:42:79
8
Numera filifiliga
82
Tesema
1
Filifiliga 82, toe fai le mea na sau ile DHCPDISCOVER
Filifiliga umi
18
Tesema
1
Tau filifiliga
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:e
Tesema
18
Fa'ai'uga o le afifi
255
Tesema
1
255 o loʻo faʻatusalia le pito o le afifi
DHCPACK
E fai ma faʻamaoniga "ioe, e saʻo, o lau tuatusi IP lea, ma o le a ou le tuʻuina atu i se isi" mai le DHCP server, o se pusa i le DHCPACK format mai le server i le tagata o tausia. E auina atu faʻasalalauga e pei lava o isi afifi. E ui lava, i le faʻailoga o loʻo i lalo mo se DHCP server na faʻatinoina i le Python, i le tulaga lava, ou te faʻaluaina soʻo se talosaga faʻasalalauga e ala i le tuʻuina atu o se pepa i se tagata faʻatau IP, pe afai ua uma ona iloa. E le gata i lea, o le DHCP server e le popole lava pe o le DHCPACK packet ua oʻo atu i le kalani. Afai e le maua e le kalani le DHCPACK, a maeʻa sina taimi e toe fai DHCPREQUEST
DHCPACK Fa'asologa o Fa'asologa o Mea
Tulaga i totonu o le afifi
Igoa o le tau (masani)
Faataitaiga:
Faatomuaga
Fa-byte
Faamalamalamaga
1
Talosaga Fa'avae
2
Hex
1
Ituaiga savali. 1 - talosaga mai le kalani i le 'au'aunaga, 2 - tali mai le 'au'aunaga i le tagata fa'atau
2
Ituaiga meafaigaluega
1
Hex
1
Ituaiga o tuatusi meafaigaluega, i lenei protocol 1 - MAC
3
Uiga o tuatusi o meafaigaluega
6
Hex
1
Ole umi ole tuatusi MAC ole masini
4
Hops
1
Hex
1
Numera o auala feololo
5
Faʻamatalaga ID
23:cf:de:1d
Hex
4
Fa'ailoga tau fefa'ataua'iga tulaga ese. Fausia e le kalani ile amataga ole fa'agaioiga ole talosaga
7
Ua mavae lona lua
0
Hex
4
Taimi i sekone mai le amataga o le faagasologa o le mauaina o se tuatusi
9
Fu'a seevae
8000
Hex
2
O nisi fu'a e mafai ona fa'atulaga e fa'ailoa ai fa'amaufa'ailoga. I lenei tulaga, ua setiina le "faasalalauga".
11
tuatusi IP tagata fa'atau
0.0.0.0
Laina
4
tuatusi IP tagata fa'atau (pe a iai)
15
Lau tuatusi IP tagata fa'atau
172.16.134.61
Laina
4
tuatusi IP na ofoina mai e le server (pe a maua)
19
Le isi tuatusi IP server
0.0.0.0
Laina
4
tuatusi IP server (pe a iloa)
23
tuatusi IP sui sooupu
172.16.114.41
Laina
4
tuatusi IP o le sui sooupu (mo se faataitaiga, se ki)
27
tuatusi MAC tagata fa'atau
14:d6:4d:a7:c9:55
Hex
6
tuatusi MAC ole tagata e auina atu pepa (tagata fa'atau)
31
Fa'alava ole tuatusi o mea faigaluega
Hex
10
Nofo fa'apolopolo. E masani ona fa'atumu i zeros
41
Igoa talimalo o le server
Laina
64
DHCP server igoa. E masani ona le fa'asalalauina
105
Igoa faila faila
Laina
128
Igoa faila i luga o le server o loʻo faʻaogaina e nofoaga e leai ni disk pe a faʻapipiʻi
235
Kuki fa'ataulāitu
63: 82: 53: 63
Hex
4
"Magic" numera, e tusa ai ma lea, e aofia ai. e mafai ona e fa'amautu o lenei afifi o le DHCP protocol
DHCP filifiliga. E mafai ona alu i soo se faasologa
236
Numera filifiliga
53
Tesema
3
Filifiliga 53, o loʻo faʻamatalaina le ituaiga DHCP packet 5 - DHCPACK
Filifiliga umi
1
Tesema
1
Tau filifiliga
5
Tesema
1
Numera filifiliga
1
Tesema
1
Filifiliga e ofo atu i le tagata o tausia le DHCP se masini fesoʻotaʻiga
Filifiliga umi
4
Tesema
1
Tau filifiliga
255.255.224.0
Laina
4
Numera filifiliga
3
Tesema
1
Filifiliga e ofo atu i le kalani DHCP se faitotoa e le mafai
Filifiliga umi
4
Tesema
1
Tau filifiliga
172.16.12.1
Laina
4
Numera filifiliga
6
Tesema
1
Filifiliga e ofo atu le DHCP ile DNS client
Filifiliga umi
4
Tesema
1
Tau filifiliga
8.8.8.8
Laina
4
Numera filifiliga
51
Tesema
1
O le olaga atoa o laina fesoʻotaʻiga tuʻuina atu i sekone, a maeʻa e tatau ona toe talosagaina e le DHCP client
Filifiliga umi
4
Tesema
1
Tau filifiliga
86400
Tesema
4
Numera filifiliga
82
Tesema
1
Filifiliga 82, toe fai le mea na sau ile DHCPDISCOVER
Filifiliga umi
18
Tesema
1
Tau filifiliga
01:08:00:06:00
01:01:00:00:01
02:06:00:03:0f
26:4d:e
Tesema
18
Fa'ai'uga o le afifi
255
Tesema
1
255 o loʻo faʻatusalia le pito o le afifi
faatulagaga
O le faʻapipiʻi e aofia ai le faʻapipiʻiina o modules python e manaʻomia mo galuega. E manatu ua uma ona faʻapipiʻi ma faʻatulagaina MySQL.
Matou te fatuina se database MySQL, faʻapipiʻi le pydhcp.sql tuʻuina i totonu, ma faʻapipiʻi le faila faila.
Fetuunaiga
O fa'atonuga uma o lo'o i totonu o se faila xml. Fa'asinoga faila:
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 suega suega 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 filifili ip, mask, router, dns mai tagata faʻaoga i luga (mac) = luga ('{option_3_AgentRemoteId_hex}') ma luga (taulaga) = luga ('{option_1_AgentCircuitId_port_hex}') filifili ip, mask, router, dns mai tagata faʻaoga i luga (mac) = luga ('{sw_mac}') ma luga (taulaga) = luga ('{sw_port82}') filifili ip, mask, router, dns mai tagata faʻaoga i luga (mac) = luga ('{ClientMacAddress}') fa'aofi i totonu o tala fa'asolopito (id,dt,mac,ip,comment) tau (null,now(),'{ClientMacAddress}','{RequestedIpAddress}','DHCPACK/INFORM')
Ole taimi nei ile fa'amatalaga atili ile pine:
O le dhcpserver vaega o loʻo faʻamatalaina tulaga faʻavae mo le amataina o le server, e pei o:
talimalo - o le a le tuatusi IP e faʻalogo i ai le 'auʻaunaga ile taulaga 67
faʻasalalauga - lea ip o le faʻasalalauga mo DHCPOFFER ma DHCPACK
DHCPServer - o le a le ip o le DHCP server
LeaseTime taimi lisi o le tuatusi IP na tu'uina atu
ThreadLimit - e fia filo o loʻo taʻavale i le taimi e tasi e faʻatautaia ai pusa UDP o loʻo oʻo mai i luga o le taulaga 67. E tatau ona fesoasoani i luga o galuega tetele 😉
defaultMask,defaultRouter,defaultDNS - o le a le mea e ofoina atu i le tagata fai saofaga e ala i le faaletonu pe a maua se IP i totonu o faʻamaumauga, ae e le o faʻamaonia mai ni faʻaopoopoga faaopoopo mo ia.
mysql vaega:
talimalo, username, password, basename - o mea uma e tautala mo ia lava. O lo'o fa'apipi'i i luga le fa'atulagaina o fa'amaumauga tu'ufa'atasi GitHub
Vaega o fesili: talosaga mo le mauaina o le OFFER/ACK o loʻo faʻamatalaina iinei:
ofo_count - o le numera o laina ma talosaga e toe faʻafoʻi mai ai se iʻuga e pei o le ip,mask,router,dns
ofo_n — manoa fesili. Afai e gaogao le toe faafoi, ona faatino lea ole talosaga ole ofo
history_sql - o se fesili e tusi, mo se faʻataʻitaʻiga, i le "faʻatagaina talafaasolopito" mo se tagata fai saofaga
O talosaga e mafai ona aofia ai soʻo se fesuiaiga mai le vaega o filifiliga poʻo filifiliga mai le DHCP protocol.
Vaega o filifiliga. O le mea lea e sili atu ona manaia. O iinei e mafai ai ona tatou fatuina ni fesuiaiga e mafai ona tatou faʻaogaina mulimuli ane i le vaega o fesili.
Mo se faʻataʻitaʻiga:
option_82_hex:sw_port1:20:22
, o lenei laina faʻatonu e ave le laina atoa na sau i le DHCP talosaga filifiliga 82, i le hex format, i le vaʻaiga mai le 20 i le 22 bytes e aofia ai ma tuʻu i le suiga fou sw_port1 (sui le taulaga mai le mea na sau ai le talosaga)
option_82_hex:sw_mac:26:40
, fa'amatala le fesuiaiga sw_mac, ave le hex mai le laina 26:40
E mafai ona e vaʻai i filifiliga uma e mafai ona faʻaogaina i fesili e ala i le amataina o le server i le -d switch. O le a tatou vaʻai i se mea e pei o lenei ogalaau:
O lea la, e mafai ona tatou afifiina so'o se fesuiaiga i {} ma o le a fa'aaogaina i le SQL query.
Sei o tatou faamaumauina mo talafaasolopito na maua e le kalani le tuatusi IP:
Amataina le server
./pydhcpdb.py -d -c config.xml
— d fa'amafanafanaga faiga fa'atino DEBUG
- c <filename> faila fa'atulagaina
Fa'atalanoaga
Ma o lea ua sili atu faʻamatalaga i le faʻatinoina o le server i Python. O se tiga. Na a'oa'oina le Python i le lele. O le tele o taimi e faia i le sitaili o le "wow, i se auala na ou faia ai le aoga." E le'i fa'atumauina, ma tu'u i lenei fomu e mafua ona o le itiiti o le poto masani i le atina'eina o le Python. O le a ou nofo i luga o vaega sili ona manaia o le faʻatinoina o le server i le "code".
XML fetuutuunaiga faila faila
O le masani Python module xml.dom o loʻo faʻaaogaina. E foliga mai e faigofie, ae i le taimi o le faʻatinoga sa i ai le leai o ni faʻamatalaga manino ma faʻataʻitaʻiga i luga o le upega tafailagi e faʻaaoga ai lenei module.
laau = minidom.parse(gconfig["config_file"]) mconfig=tree.getElementsByTagName("mysql") mo elem i mconfig: gconfig["mysql_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["mysql_username"]=elem.getElementsByTagName("username")[0].firstChild.data gconfig["mysql_password"]=elem.getElementsByTagName("password")[0].firstChild.data gconfig["mysql_basename"] =elem.getElementsByTagName("basename")[0].firstChild.data dconfig=tree.getElementsByTagName("dhcpserver") mo elem i le dconfig: gconfig["broadcast"]=elem.getElementsByTagName("broadcast")[0]. firstChild.data gconfig["dhcp_host"]=elem.getElementsByTagName("host")[0].firstChild.data gconfig["dhcp_LeaseTime"]=elem.getElementsByTagName("LeaseTime")[0].firstChild.data gconfig[" dhcp_ThreadLimit"]=int(elem.getElementsByTagName("ThreadLimit")[0].firstChild.data) gconfig["dhcp_Server"]=elem.getElementsByTagName("DHCPServer")[0].firstChild.data gconfig["dhcp"_default =elem.getElementsByTagName("defaultMask")[0].firstChild.data gconfig["dhcp_defaultRouter"]=elem.getElementsByTagName("defaultRouter")[0].firstChild.data gconfig["dhcp_defaultDNS"]=elem.getNaElementsBy defaultDNS")[0].firstChild.data qconfig=tree.getElementsByTagName("query") mo elem i qconfig: gconfig["offer_count"]=elem.getElementsByTagName("offer_count")[0].firstChild.data mo num in laina(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") mo elem i filifiliga: node=elem.getElementsByTagName("filifiliga") mo filifiliga i le node : optionsMod.append(options.firstChild.data)
Multithreading
O le mea e ese ai, o le multithreading i le Python o loʻo faʻatinoina manino ma faigofie.
def PacketWork(fa'amatalaga, fa'aopoopo): ... # fa'atinoga o le fa'avasegaina o le pepa o lo'o sau ma tali atu i ai ... a'o Moni: fa'amaumauga, addr = udp_socket.recvfrom(1024) # fa'atali mo le UDP packet thread = threading.Thread( sini = PacketWork , args = (faʻamatalaga, addr,)). amata () # e pei ona oʻo mai - matou te faʻalauiloaina le galuega PacketWork na faʻamatalaina muamua i tua ma faʻamaufaʻailoga ao threading.active_count() >gconfig ["dhcp_ThreadLimit"]: taimi. moe(1) # pe afai o le numera E tele atu filo o loʻo taʻavale nai lo tulaga, matou te faʻatali seʻi itiiti ifo i latou.
Maua / lafo le DHCP pepa
Ina ia mafai ona faʻalavelave faʻapipiʻi UDP e sau mai le kata fesoʻotaʻiga, e tatau ona e "sii aʻe" le socket:
AF_INET - o lona uiga o le faʻasologa o le tuatusi o le IP: port. Atonu e iai fo'i le AF_UNIX - lea e tu'u mai ai le tuatusi ile igoa faila.
SOCK_DGRAM - o lona uiga tatou te le taliaina se "pa'u mata", ae o se tasi ua uma ona pasia i totonu o le pa puipui, ma faʻatasi ai ma se vaega faʻapipiʻiina. O na. matou te mauaina na o se pusa UDP e aunoa ma le vaega "faaletino" o le afifi UDP afifi. Afai e te faʻaogaina le fuʻa SOCK_RAW, e manaʻomia foʻi ona e faʻapipiʻi lenei "afifi".
O le lafoina o se afifi e mafai ona pei o se faʻasalalauga:
udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) #switch the socket to broadcast mode rz=udp_socket.sendto(packetack, (gconfig["broadcast"],68))
, ma le tuatusi "o fea na sau ai le afifi":
udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # sui le socket i le multi-listener mode rz=udp_socket.sendto(packetack, addr)
, o lona uiga o le SOL_SOCKET o le "tulaga fa'akomepiuta" mo le fa'atulagaina o filifiliga,
, SO_BROADCAST filifiliga o le afifi pulou e "faasalalau"
, SO_REUSEADDR filifiliga sui le socket i le "tele faalogologo" mode. I le teori, e le manaʻomia i lenei tulaga, ae i luga o se tasi o le FreeBSD servers lea na ou faʻataʻitaʻia ai, e leʻi galue le code e aunoa ma lenei filifiliga.
Fa'asalalau se pepa DHCP
O iinei na ou fiafia tele ai i le Python. E foliga mai o fafo atu o le atigipusa e mafai ai ona e faʻafetaui lelei i le bytecode. Fa'ataga ina ia fa'aliliu faigofie tele i tau fa'ailoga, manoa ma le hex - i.e. o le mea lea tatou te manaʻomia moni e malamalama ai i le fausaga o le afifi. O lea, mo se faʻataʻitaʻiga, e mafai ona e mauaina le tele o bytes i le HEX ma naʻo bytes: