vyuka:cviceni:x36los:uloha2-zadani

X36LOS: Úloha 2

Navrhněte a implementujte program pracující nad rozhraním ovladačů síťové karty (Win), RAW socket (Linux), který si zjistí ip-adresu počítače pomocí BOOTP/DHCP protokolu (RFC951/RFC2131) a dále nabídne jednu z následujících služeb (většina nad UDP (RFC768) nebo ICMP (RFC792)). Implementujte zjednodušenou verzi IP (RFC791, RFC1071) bez fragmentace a IP-options.

  1. DNS dotaz (RFC1035) (převod doménového jména na ip adresu, zjednodušený nslookup)
  2. TFTP server (RFC1350)
  3. TFTP klient (RFC1350)
  4. Zjistí směrovací tabulku pomocí RIP protokolu (RFC1058)
  5. Balíček serverů pro služby chargen/discard/echo/time
  6. ICMP - ping klient a server (RFC792)
  7. SNMP klient, který vrací a nastavuje SysOID, Location a SysContact
  8. Další UDP protokoly …

Příklad programu pro linux posílající ARP dotaz arp.c

Příklady programů pro získání MAC adresy v OS Windows pomocí služeb Netbios adr_netbios.zip a SNMP adr_snmp.zip.

Jelikož je přístup k RAW socketům omezen pouze na superuživatele, je potřeba v prostředí učebny K308 použít program zpřístupňující RAW sockety normálnímu uživateli. Aby bylo možné program používat, je nutné použít upravené jádro (volba Linux-cap při zavádění Linuxu). Program který chcete spustit s příslušnými právy uveďte jako parametr programu netcap.

Tedy místo:

arp eth0 147.32.81.174 147.32.81.175

spustíte:

capnet arp eth0 147.32.81.174 147.32.81.175 

Ukázka jak řešit například DNS dotaz:

  1. Pomocí nástrojů operačního systému zjistím svoji MAC adresu na ethernetovém adapteru (S_MAC).
  2. Vyšlu broadcastem DHCP/BOOTP požadavek.
  3. Vrátí se mi nabídka IP adresy mé stanice, DNS serveru a výchozí brány (příjmu nabídku a zapamatuji si všechny údaje (S_IP, DNS_IP, GW_IP).
  4. Zjistím, zda adresa DNS je ve stejném IP rozsahu jako moje IP, pokud ano pošlu ARP dotaz na DNS_IP, pokud ne pošlu dotaz na GW_IP.
  5. ARP dotazem jsem zjistil MAC adresu, na kterou chci posilat dat (D_MAC, buď je to MAC výchozí brány nebo přímo DNS serveru).
  6. Vytvořím správný DNS dotaz jako textový řetězec odpovídající RFC.
  7. Kolem DNS dotazu přidám UDP hlavičku (důležitý je hlavně cílový port).
  8. Kolem výsledného UDP paketu přidám IP hlavičku (zdrojová IP je ta moje S_IP, cílová IP je vždy zjištěná DNS_IP).
  9. Kolem vytvořeného IP packetu přidám ethernetovou hlavičku, kde vyplňuji hlavně zdrojovou MAC adresu (S_MAC) z kroku 1 a cílovou MAC adresu (D_MAC zjištěná v kroku 5).
  10. Tento packet odešlu přes RAW socket.

Ve zdrojovém souboru budou uvedené použité zdroje, pokud vycházíte ze starší úlohy tak musí být poznat co bylo hotové a co je vaše práce.

Odevzdání na service.felk.cvut.cz do vašeho projektového adresáře (bude vytvořen později).

Uložit ve formě zkomprimovaného zip souboru, název bude ulohaX_<prijmeni>_<prijmeni spoluautora>, tzn. ulohy dělané ve dvojici budou na service uloženy dvakrát.

Odevzdávané úloze rozumí autor i spoluautor.

~~DISCUSSION~~

  • vyuka/cviceni/x36los/uloha2-zadani.txt
  • Last modified: 2012/04/07 10:52
  • by kubr