vyuka:cviceni:x36los:uloha2-zadani

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vyuka:cviceni:x36los:uloha2-zadani [2007/03/07 13:47] miskovyuka:cviceni:x36los:uloha2-zadani [2012/04/07 10:52] (current) kubr
Line 1: Line 1:
 ====== X36LOS: Úloha 2 ====== ====== 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 protokolu (RFC951) a dále nabídne jednu z následujících služeb nad UDP (RFC768) nebo ICMP (RFC792). Implementujte zjednodušenou verzi IP (RFC791, RFC1071) bez fragmentace a IP-options.+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.
  
- - DNS dotaz (RFC1035) (převod doménového jména na ip adresu, zjednodušený nslookup) +  - DNS dotaz (RFC1035) (převod doménového jména na ip adresu, zjednodušený nslookup) 
- - TFTP server (RFC1350) +  - TFTP server (RFC1350) 
- - TFTP klient (RFC1350) +  - TFTP klient (RFC1350) 
- - Zjistí směrovací tabulku pomocí RIP protokolu (RFC1058) +  - Zjistí směrovací tabulku pomocí RIP protokolu (RFC1058) 
- - Balíček serverů pro služby chargen/discard/echo/time +  - Balíček serverů pro služby chargen/discard/echo/time 
- - ICMP - ping klient a server (RFC792) +  - ICMP - ping klient a server (RFC792) 
- - SNMP klient, který vrací a nastavuje SysOID, Location a SysContact +  - SNMP klient, který vrací a nastavuje SysOID, Location a SysContact 
- - Další UDP protokoly ...+  - Další UDP protokoly ...
  
 Příklad programu pro linux posílající ARP dotaz {{vyuka:cviceni:x36los:arp.c|arp.c}} Příklad programu pro linux posílající ARP dotaz {{vyuka:cviceni:x36los:arp.c|arp.c}}
Line 21: Line 21:
 Tedy místo: Tedy místo:
 <code bash> <code bash>
-arp eth0 147.32.81.110 147.32.81.111+arp eth0 147.32.81.174 147.32.81.175
 </code> </code>
  
 spustíte: spustíte:
 <code bash> <code bash>
-capnet arp eth0 147.32.81.110 147.32.81.111 +capnet arp eth0 147.32.81.174 147.32.81.175 
 </code> </code>
 +
 +
 +Ukázka jak řešit například DNS dotaz:
 +
 +  - Pomocí nástrojů operačního systému zjistím svoji MAC adresu na ethernetovém adapteru (S_MAC).
 +  - Vyšlu broadcastem DHCP/BOOTP požadavek.
 +  - 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).
 +  - 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.
 +  - 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).
 +  - Vytvořím správný DNS dotaz jako textový řetězec odpovídající RFC.
 +  - Kolem DNS dotazu přidám UDP hlavičku (důležitý je hlavně cílový port).
 +  - 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).
 +  - 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).
 +  - Tento packet odešlu přes RAW socket.
  
 ===== Podmínky odevzdání ===== ===== Podmínky odevzdání =====
Line 37: Line 51:
  
 Odevzdávané úloze rozumí autor i spoluautor. Odevzdávané úloze rozumí autor i spoluautor.
 +
 +===== Materiály =====
 +  * [[http://security-freak.net/raw-sockets/raw-sockets.html]] - RAW socket HowTo
 +  * [[http://www.networksorcery.com/enp/topic/ipsuite.htm]] - podrobný popis jednotlivých protokolů
 +
 +
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • vyuka/cviceni/x36los/uloha2-zadani.1173275240.txt.gz
  • Last modified: 2007/03/07 13:47
  • by misko