Typy samostatných úloh PSI 2005/2006 Každá úloha má dvě části. Část analytickou, která slouží k zachycování komunikace na síti a k zobrazování zachycených dat pomocí grafického rozhraní. K zachycování paketů použijte BSD sockety pracující v promiskuitním režimu, PCAP nebo jPCAP. Druhá část je syntetická (je-li uvedeno), která slouží ke generování vlastních zpráv daného protokolu. K ověření funkčnosti použijte program vyvinutý pro sledování (analytická část). Při ladění analytické části doporučuji vybavit analyzátor výstupem do souboru. Takto navzorkovaná data je možné použít k ladění analyzátoru. 1. Telnet - Navrhněte program, který bude analyzovat aplikační data protokolu Telnet. Zobrazte průběh komunikace mezi klientem a serverem, zejména výměnu řídicí informace přenášené při dohadování parametrů. Dále zachycujte a zobrazujte statistické údaje, týkající se množství přenesených aplikačních oktetů, paketů i všech dat (včetně IP a TCP záhlaví). Dále vytvořte program, nahrazující Telnet, který by umožňoval cíleně zadávat do toku dat řídicí informace. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačnímem systém Linux v programovacím jazyce C (C++) nebo Java. 2. IP - Navrhněte program pro zachycování a analýzu paketů IP. Analyzujte zejména volitelné parametry. K ověření funkčnosti využijte vhodný program (např. ping s možností nastavení délky paketu) nebo vlastní program, datagramovou aplikaci s možností nastavovat IP parametry pomocí funkce setsockopt(). Dále realizujte program pro syntézu IP datagramů, dovolující testovat libovolné parametry IP záhlaví a nastavovat libovolnou délku paketů. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 3. DHCP - Navrhněte program pro zachycování a analýzu DHCP paketů. Analyzujte a vhodným způsobem zobrazte navzorkovaná data. V počítačové síti je zapojeno několik DHCP serverů, zpracovávejte zprávy od všech. Druhá část práce je syntetická. Navrhněte DHCP klienta s možností zadávat libovolnou fyzickou adresu. Klient bude splňovat požadavky DHCP protokolu. Dále navrhněte jednoduchého Relay agenta, který bude z lokálního segmentu posílat požadavky DHCP serverům a vracet odpovědi DHCP klientovi. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 4. ICMP – Navrhněte program pro zachycování ICMP paketů. Typy zachycovaných paketů zjistíte z RFC dokumentů. Bylo by vhodné zpracovávat úplný soubor těchto paketů. Analyzujte a vhodným způsobem zobrazte jejich obsah. V druhé části vytvořte vlastní program, který bude generovat ICMP pakety vybraných typů tak, aby bylo možné zkoušet reakci ostatních částí sítě
5.
6.
7.
8.
9.
na tyto zprávy (např. source quench, redirect, ... ). K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. TFTP – Navrhněte program pro zachycování a analýzu TFTP paketů. Popis TFTP protokolu naleznete v RFC dokumentech RFC1350, RFC2347, RFC2348 a RFC2349. Dále realizujte TFTP klienta a odzkoušejte přenos dat s nějakým dostupným TFTP serverem. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. SNMP – Navrhněte program pro zachycování a analýzu zpráv SNMP v1 i v2. Zachycená data zobrazte vhodným způsobem na obrazovce. Dále realizujte program pro vytvoření SNMP příkazů (v2), který bude umožňovat generování požadavků pro přístup k vybrané množině OID, tabulek, příp. skupin. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. BOOTP - Navrhněte program pro zachycování a analýzu BOOTP paketů. Analyzujte a vhodným způsobem zobrazte navzorkovaná data. V počítačové síti je zapojeno několik DHCP nebo BOOTP serverů, zpracovávejte zprávy od všech. Druhá část práce je syntetická. Navrhněte BOOTP klienta s možností zadávat libovolnou fyzickou adresu. Klient bude splňovat požadavky BOOTP protokolu. Dále navrhněte jednoduchého Relay agenta, který bude z lokálního segmentu posílat požadavky BOOTP serverům a vracet odpovědi BOOTP klientovi. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. RPC – Navrhněte program pro zachycování a analýzu protokolu SUN RPC. Vyberte si některé z provozovaných služeb nad RPC a znázorněte obsah jimi přenášených zpráv. Současně sledujte provoz Portmapperů na lokálním segmentu a zobrazujte které skupiny RPC jsou na kterém uzlu instalovány. Pro ověření funkčnosti analyzátoru realizujte jednoduchou dvojici server/klient, která si bude předávat data různých datových typů. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. FTP – realizujte program pro zachycování komunikace mezi FTP serverem a FTP klientem jak na řídicím, tak i na datovém kanálu. Komunikaci navíc zaznamenávejte tak, aby bylo možné od sebe odlišit několik souběžně probíhajících FTP relací. Realizujte jednoduchého klienta, který bude umožňovat ověřování zajímavých funkcí FTP serveru, jako je přenos dat po číslovaných blocích, aktivní a pasivní funkci serveru, a pod. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java.
10. DNS – realizujte program pro zachycování DNS rámců a zobrazování jejich obsahu v uživatelsky příjemné podobě. Doplňte tento program o část syntetickou, která dovolí podle přání generovat dotazy s navolenými parametry. Realizujte i podporu přesunu pomocí TCP. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 11. Monitor – realizujte program pro analýzu přenášených dat v segmentu lokální počítačové sítě na úrovni linkové, transportní a aplikační. Analyzátor bude vytvářet statistiky týkající se počtu přenesených slabik a délky datových jednotek (PDU) vzhledem k IP adresám, protokolům a portům. Kromě statistik podle protokolů bude zobrazovat i statistiky vzhledem k dvojicím adres a TOPN podle adres. Jednu skupinu budou také tvořit zprávy neznámého protokolu. Výběr podporovaných protokolů by měl odpovídat protokolům, se kterými se lze setkat na univerzitní síti. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 12. ARP, RARP – realizujte program pro zachycování a analýzu všech typů „ARP“ protokolů. Na základě zachycených dat vytvářejte ARP tabulku lokálního segmentu s kontrolou její správnosti. Vytvořte program, který bude protokol ARP využívat ke zjištění aktivních stanic na daném segmentu lokální počítačové sítě. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 13. TIME – realizujte programové vybavení, které bude pokrývat známé protokoly pro zjišťování nebo korekci času (viz RFC). Zachycujte komunikaci těchto protokolů, zobrazujte a vyhodnocujte časová data. Vytvořte program, který bude podle výše uvedených protokolů zjišťovat a vypisovat čas v počítači. Soustřeďte se zejména na NTP nebo SNTP protokol, u kterého zjišťujte čas z více nakonfigurovaných serverů, indikujte jejich dostupnost a vykreslete průběh nabízených časů a jejich odchylek. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 14. SMTP – Vytvořte programové vybavení pro zachycování a analýzu SMTP paketů. Soustřeďte se zejména na SMTP protokol a ve zprávách na zobrazování obsahu záhlaví. Zachovávejte diskrétnost. Dále realizujte klienta SNMP, který bude schopen vytvořit a korektně odeslat zprávu. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 15. POP – realizujte programové vybavení pro zachycování a zobrazování obsahu zpráv, přenášených protokolem POP. Soustřeďte se na protokol a na záhlaví zpráv. Zachovejte diskrétnost. Vytvořte POP klienta, použitelného pro přenos zpráv el. pošty mezi poštovním serverem a klientskou stanicí. Prostudujte doporučení RFC a realizujte programovou podporu odpovídajících příkazů.
16.
17.
18.
19.
20.
21.
K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. SSL – seznamte se s protokolovým zásobníkem SSL a realizujte program pro zachycování protokolové komunikace i analýzu dostupné nezašifrované komunikace. Vytvořte jednoduchou aplikaci, která bude používat SSL pro šifrovaný přenos dat. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. SSH - seznamte se s protokolovým zásobníkem SSH a realizujte program pro zachycování protokolové komunikace i analýzu dostupné nezašifrované komunikace. Vytvořte jednoduchou aplikaci, která bude používat SSH pro šifrovaný přenos dat. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. RTP,RTCP – vytvořte programové vybavení pro zachycování a analýzu protokolů RTP a RTCP. Zobrazujte jednak obsahy řídicích částí paketů, jednak vyhodnocujte komunikaci a zobrazujte statistická data související s kvalitou nebo parametry komunikace. Nalezněte nebo za použití RTP API vytvořte jednoduchou aplikaci a ověřte její funkčnost. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. LDAP – vytvořte programové vybavení pro analýzu protokolu LDAP. Dále vytvořte LDAP klienta, pomocí kterého bude možné zadávat dotazy s volitelnými parametry. Pokud nebude mít k dispozici vhodný LDAP server, pak se pokuste o instalaci vlastního serveru na nekterý z počítačů v laboratořích. K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. HTTP – vytvořte programové vybavení pro zachycování a analýzu protokolu HTTP. Pozornost věnujte zejména režimu, ve kterém přenosy probíhají (protokolový pohled) a obsahu přenášených záhlaví. Realizujte jednoduchý server, který bude podporovat základní příkazu protokolu HTTP (GET, POST, HEAD). Zachycujte též časové charakteristiky komunikace – dobu odezvy serveru (porovnání s cache a bez cache). K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. PIM, IGMP – vytvořte programové vybavení pro zachycování a analýzu obsahu protokolů IGMP a PIM. Ze zachycených dat vytvářejte tabulky členství ve skupinách. Realizujte jednoduchého multicast klienta (nebo použijte realizovaného), který bude schopen zajistit příjem dat (nikoli jejich zpracování) v lokální síti. K zobrazení výsledků využijte vhodného grafického rozhraní
(FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 22. TCP/IP – vytvořte programové vybavení pro sledování a zobrazování jevů při přenosu pomocí protokolu TCP. Součástí implementace bude dvojice server/klient, která dokáže některé jevy navodit. Jedná se o zobrazování paketů ve fázi navazování spojení (normální, křížem, odmítnutí spojení), přenosu dat (řízení toku dat (kredity), SWS, obrana proti zahlcení, Slow Start, fast recovery), přenosu upřednostněných dat (Urgent data), ukončování spojení (normální, křížem, zpožděné). K zobrazení výsledků využijte vhodného grafického rozhraní (FLTK). Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java. 23. Ping – realizujte program ping a traceroute, využívající ICMP zprávy. Výsledky zobrazujte v grafické podobě. Naprogramujte pod operačním systémem Linux v programovacím jazyce C (C++) nebo Java.