Dns server parsing – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dns server parsing – C / C++ – Fórum – Programujte.comDns server parsing – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
matusso0
Duch
2. 10. 2013   #1
-
0
-

ahojte, 

riesil uz niekto parsovanie dns packetu? Chcem to spravit v cecku, ale neviem prist na to, ako rozparsovat query a ako vlozit veci do odpovede. vie mi niekto poradit? 

dakujem

Nahlásit jako SPAM
IP: 109.74.154.–
TheOndrap+2
Super člen
2. 10. 2013   #2
-
0
-

Ahoj, 

budeš to dělat na WIN nebo Linux? Doporučil bych Linux. Umíš v C zacházet se socketama? Budeš muset otevřít UDP a TCP na portu 53 (nevím jestli budeš koukat na i na hlavičku toho packetu, pokud ano, musíš ho otevřít jako RAW, ten socket) no a potom se musíš kouknout na strukturu DNS protokolu. Pro začátek klidně použij program Wireshark ať vidíš ty DNS dotazy, velmi silnej nástroj na to co budeš dělat je pcap, ten je napsanej v C(mimo jiné) a můžeš ho používat jako knihovnu k zachytávání packetů - http://www.tcpdump.org/sniffex.c 

Předpokládám že budeš chtít fungovat jako DNS server (proxy) a budeš ty dotazy někam přeposílat a odpovědi vracet zpátky uživatelům?? 

Nahlásit jako SPAM
IP: 147.228.209.–
ZČU v Plzni je mnohem víc, než jenom právnická fakulta !!
Fakulta aplikovaných věd www.fav.zcu.cz
"Když nedokážete říci věci jednoduše, pak jim dostatečně nerozumíte"
matusso0
Duch
2. 10. 2013   #3
-
0
-

#2 TheOndrap
budem to robit na Linuxe, sockety by nemali byt problem, viem, ze na porte 53. Bude to fungovat iba ako DNS server, teda v mysql budu ulozene data, ktore vyselectuje a vrati mu odpoved. Pokial nema dany zaznam, nech nevracia nic. Klasicky mam nabindovany socket na UDP porte 53, kde do "msg" by sa mali ulozit data danej DNS query. Mojim problemom je rozparsovat ich odtial, a zase poskladat packet, kde vlozim ANSWER (napr. IP adresu pre A zaznam), CLASS, TTL a pod. pozadovane veci.

recvfrom(sd, msg, MSG_SIZE, flags,(struct sockaddr *) &addr, &len);
Nahlásit jako SPAM
IP: 109.74.154.–
KIIV
~ Moderátor
+43
God of flame
2. 10. 2013   #4
-
0
-

najdes popis protokolu a vyuzijes spousty kopirovani po bajtech a podobne.. nejdulezitejsi je asi zjistit, v jakem formatu jsou tam ulozeny cisla (ale obvykle big endian - takze zneuzit ruzny ntoh/ntohl alias "network to host" pripadne s long) a tak dale... neni to nic slozityho...

poskladat odpoved je prakticky to samy jen opacne..

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Řešení
matusso0
Duch
4. 10. 2013   #5
-
0
-
Vyřešeno Nejlepší odpověď

vyriesil som to nakoniec cez struktury (rfc 1035)

Nahlásit jako SPAM
IP: 109.74.154.–
KIIV
~ Moderátor
+43
God of flame
4. 10. 2013   #6
-
0
-

#5 matusso
jen bacha na zarovnavani ... kazdej kompilator se musi dukladne overit, jestli jsou ty polozky na spravnejch offsetech... pripadne pouzit nejaky pragma pack a podobne... je to vcelku nebezpecne - kazdej kompilator, kazda verze, kazda architektura to muze mit defaultne uplne jinak...

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 71 hostů

Podobná vlákna

Parsing Stringu v C++ — založil Martin

[C#] Server — založil Mutagen

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý