53 lines
4 KiB
Text
53 lines
4 KiB
Text
Detail zadání
|
|
|
|
Předmět:
|
|
ISA - Síťové aplikace a správa sítí
|
|
Ak. rok:
|
|
2025/2026
|
|
Název:
|
|
Přenos souboru skrz skrytý kanál (Dr. Grégr)
|
|
Vedoucí:
|
|
Ing. Matěj Grégr, Ph.D.
|
|
Popis:
|
|
|
|
Vytvořte klient/server aplikaci, která umožní přenést soubor skrz skrytý kanál, kde data jsou přenášena uvnitř ICMP/ICMPv6 Echo-Request/Response zpráv. Soubor musí být před přenosem zašifrován, aby nebyl přenášen v textové podobě.
|
|
|
|
Spuštění aplikace:
|
|
secret -r <file> -s <ip|hostname> [-l]
|
|
|
|
-r <file> : specifikace souboru pro přenos, může být zadán i s cestou (např. secret -r ../test.file)
|
|
-s <ip|hostname> : ip adresa/hostname na kterou se má soubor zaslat
|
|
-l : pokud je program spuštěn s tímto parametrem, jedná se o server, který naslouchá příchozím ICMP zprávám a ukládá soubor do stejného adresáře, kde byl spuštěn.
|
|
|
|
Upřesnění zadání:
|
|
Program zpracuje vstupní argumenty, načte soubor, zašifruje ho a zašle skrz ICMP zprávy na zvolenou IP adresu, kde program, spuštěný v listen (-l) módu, tyto zprávy zachytí, dešifruje a soubor uloží na disk.
|
|
|
|
Program může používat pouze ICMP/ICMPv6 zprávy Echo-request/reply.
|
|
Pro správné chování bude třeba definovat protokol pro přenos dat. (např. je třeba zaslat jméno souboru, ověřit, že soubor byl přenesen celý, apod.) Tento protokol je na vašem uvážení a definujte ho v rámci dokumentace.
|
|
Jako šifru použijte AES, dostupnou např. pomocí knihovny openssl [1]. Jako klíč použijte svůj login.
|
|
Program se musí vypořádat se souborem větší, jak max. velikost paketu na standardní síti (1500B), tj. musí být schopen větší soubor rozdělit na více paketů.
|
|
Můžete uvažovat, že v rámci přenosu nedojde ke ztrátám paketů. Pokud implementujete formu spolehlivého přenosu, uveďte to v dokumentaci.
|
|
Při vytváření programu je povoleno použít hlavičkové soubory pro práci se sokety a další obvyklé funkce používané v síťovém prostředí (jako je netinet/*, sys/*, arpa/* apod.), knihovny pro práci s vlákny (pthread), pakety (pcap), signály, časem, stejně jako standardní knihovnu jazyka C (varianty ISO/ANSI i POSIX), C++ a STL a knihovnu SSL. Další knihovny nejsou povoleny.
|
|
|
|
|
|
|
|
Dokumentace:
|
|
|
|
Soubor Readme z obecného zadání nahraďte souborem secret.1 ve formátu a syntaxi manuálové stránky - viz https://liw.fi/manpages/
|
|
|
|
Dokumentaci ve formátu pdf vytvořte dle pokynu v obecném zadání.
|
|
|
|
Doplňující informace k zadání
|
|
|
|
Před odevzdáním projektu si důkladně pročtěte společné zadání pro všechny projekty.
|
|
Jakékoliv rozšíření nezapomeňte zdůraznit v manuálové stránce a v dokumentaci. Není však možné získat více bodů, než je stanovené maximum.
|
|
Program se musí vypořádat s chybnými vstupy.
|
|
Veškeré chybové výpisy vypisujte srozumitelně na standardní chybový výstup.
|
|
Pokud máte pocit, že v zadání není něco specifikováno, popište v dokumentaci vámi zvolené řešení a zdůvodněte, proč jste jej vybrali.
|
|
Při řešení projektu uplatněte znalosti získané v dřívějších kurzech týkající se jak zdrojového kódu (formátování, komentáře), pojmenování souborů, tak vstřícnosti programu k uživateli.
|
|
|
|
Referenční prostředí pro překlad a testování
|
|
|
|
Program by měl být přenositelný. Referenční prostředí pro překlad bude server merlin.fit.vutbr.cz (program zde musí být přeložitelný). Vlastní testování může probíhat na jiném počítači s nainstalovaným OS GNU/Linux, včetně jiných architektur než Intel/AMD, jiných distribucí, jiných verzí knihoven apod. Pokud vyžadujete minimální verzi knihovny, jasně tuto skutečnost označte v dokumentaci a v manuálové stránce.
|
|
|
|
[1] https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption
|