{"id":13340981,"url":"https://github.com/Aenariss/isa-2021","last_synced_at":"2025-03-11T19:31:05.201Z","repository":{"id":160615325,"uuid":"414611425","full_name":"Aenariss/isa-2021","owner":"Aenariss","description":"ISA Projekt","archived":false,"fork":false,"pushed_at":"2021-12-02T15:53:15.000Z","size":7074,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-24T06:30:53.386Z","etag":null,"topics":["fit","isa","vut"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aenariss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-07T13:25:07.000Z","updated_at":"2022-01-10T06:09:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"ce5e1dd3-f644-4a57-a226-253a42118ee8","html_url":"https://github.com/Aenariss/isa-2021","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aenariss%2Fisa-2021","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aenariss%2Fisa-2021/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aenariss%2Fisa-2021/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aenariss%2Fisa-2021/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aenariss","download_url":"https://codeload.github.com/Aenariss/isa-2021/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243098713,"owners_count":20236077,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fit","isa","vut"],"created_at":"2024-07-29T19:25:07.336Z","updated_at":"2025-03-11T19:31:05.195Z","avatar_url":"https://github.com/Aenariss.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ISA Projekt 2021\n### Autor: Vojtech Fiala (xfiala61)\n\n### Popis:\nVytvořte komunikující aplikaci podle konkrétní vybrané specifikace pomocí síťové knihovny BSD sockets (pokud není ve variantě zadání uvedeno jinak). Projekt bude vypracován v jazyce C/C++. Pokud individuální zadání nespecifikuje vlastní referenční systém, musí být projekt přeložitelný a spustitelný na serveru merlin.fit.vutbr.cz pod operačním systémem GNU/Linux. Program by měl být přenositelný. Hodnocení projektů může probíhat na jiném počítači s nainstalovaným OS GNU/Linux, včetně jiných architektur než Intel/AMD, distribucí či verzí knihoven. Pokud vyžadujete minimální verzi knihovny (dostupnou na serveru merlin), jasně tuto skutečnost označte v dokumentaci a README.\n\n### Odevzdání\nVypracovaný projekt uložený v archívu .tar a se jménem xlogin00.tar odevzdejte elektronicky přes IS. Soubor nekomprimujte.\nTermín odevzdání je 15.11.2021 (hard deadline). Odevzdání e-mailem po uplynutí termínu, dodatečné opravy či doplnění kódu není možné.\nOdevzdaný projekt musí obsahovat:  \n- Soubor se zdrojovým kódem (dodržujte jména souborů uvedená v konkrétním zadání)  \n- Funkční Makefile pro překlad zdrojového souboru  \n- Dokumentaci (soubor manual.pdf), která bude obsahovat uvedení do problematiky, návrhu aplikace, popis implementace, základní informace o programu, návod na použití.  \n- V dokumentaci se očekává následující: titulní strana, obsah, logické strukturování textu, přehled nastudovaných informací z literatury, popis zajímavějších pasáží implementace, použití vytvořených programů a literatura.  \n- Soubor README obsahující krátký textový popis programu s případnými rozšířeními/omezeními, příklad spuštění a seznam odevzdaných souborů,\ndalší požadované soubory podle konkrétního typu zadání.   \n- Pokud v projektu nestihnete implementovat všechny požadované vlastnosti, je nutné veškerá omezení jasně uvést v dokumentaci a v souboru README.  \n- Co není v zadání jednoznačně uvedeno, můžete implementovat podle svého vlastního výběru. Zvolené řešení popište v dokumentaci.  \n- Při řešení projektu respektujte zvyklosti zavedené v OS unixového typu (jako je například formát textového souboru).  \n- Vytvořené programy by měly být použitelné a smysluplné, řádně komentované a formátované a členěné do funkcí a modulů. Program by měl obsahovat nápovědu informující uživatele o činnosti programu a jeho parametrech. Případné chyby budou intuitivně popisovány uživateli.  \n- Aplikace nesmí v žádném případě skončit s chybou SEGMENTATION FAULT ani jiným násilným systémovým ukončením (např. dělení nulou).  \n- Pokud přejímáte krátké pasáže zdrojových kódů z různých tutoriálů či příkladů z Internetu (ne mezi sebou), tak je nutné vyznačit tyto sekce a jejich autory dle licenčních podmínek, kterými se distribuce daných zdrojových kódů řídí. V případě nedodržení bude na projekt nahlíženo jako na plagiát.  \n- Konzultace k projektu podává vyučující, který zadání vypsal.  \n- Sledujte fórum k projektu, kde se může objevit dovysvětlení či upřesnění zadání.  \n- Před odevzdáním zkontrolujte, zda projekt obsahuje všechny potřebné soubory a také jste dodrželi jména odevzdávaných souborů pro konkrétní zadání. Zkontrolujte, zda je projekt přeložitelný.  \n\n### Hodnocení\nHodnocení projektu:\n- Maximální počet bodů za projekt je 20 bodů.\n- Maximálně 15 bodů za plně funkční aplikaci.\n- Maximálně 5 bodů za dokumentaci. Dokumentace se hodnotí pouze v případě funkčního kódu. Pokud kód není odevzdán nebo nefunguje podle zadání, dokumentace se nehodnotí.  \n\nPříklad kriterií pro hodnocení projektů:  \n- nepřehledný, nekomentovaný zdrojový text: až -7 bodů\n- nefunkční či chybějící Makefile: až -4 body\n- nekvalitní či chybějící dokumentace: až -5 bodů\n- nedodržení formátu vstupu/výstupu či konfigurace: -10 body\n- odevzdaný soubor nelze přeložit, spustit a odzkoušet: 0 bodů\n- odevzdáno po termínu: 0 bodů\n- nedodržení zadání: 0 bodů\n- nefunkční kód: 0 bodů\n- opsáno: 0 bodů (pro všechny, kdo mají stejný kód), návrh na zahájení disciplinárního řízení.\n\n\n### Zadanie:\n\nVašou úlohou je:\n\n- Zachytiť komunikáciu medzi poskytnutým serverom a klientom  \n- Implementovať vlastný Wireshark dissector pre daný protokol  \n- Implementovať kompatibilného klienta pre daný protokol  \n\n#### Upresnenie zadania:\n\n###### 1. Zachytenie protokolovej komunikácie   \n   \nK zadaniu projektu bude dodaný virtuálny stroj s referenčným klientom a serverom. Vhodným použitím klienta vygenerujte komunikáciu medzi klientom a serverom ktorú zachytíte pomocou nástroja Wireshark do PCAPu. Táto komunikácia bude slúžiť ako základ pre Vašu implementáciu. Formát protokolu popíšte do dokumentácie.   \n\n###### 2. Implementovanie Wireshark dissectoru\n\nPodporu nástroja Wireshark pre sieťové protokoly je možné rozšíriť pomocou vlastných dissectorov implementovaných v jazyku C alebo Lua. Dissectory umožňujú prezentovať protokolové dáta v užívateľsky prívetivejšej forme.   \n\nNaštudujte si tvorbu dissectorov, napr. z Wireshark wiki ([1-3]). Implementuje dissector pre zachytený protokol. Detaily formátu dissectoru zvoľte podľa vlastného uváženia, cieľom je aby výsledná forma bola jasne pochopiteľná pre užívateľa. Návrh dissectoru dôkladne popíšte v dokumentácii.   \n\n###### 3. Implementovanie kompatibilného klienta\n\nNa základe nadobudnutých znalostí o protokole naimplementuje kompatibilného klienta. Klient by mal byť schopný slúžiť ako \"drop-in\" náhrada referenčného klienta, ako vo formáte spustenia tak aj výstupu. Pri nejasnostiach sa riaďte chovaním referenčného klienta. Váš klient môže obsahovať pridanú funkcionalitu, mal by však byť striktne kompatibilný s referenčnou implementáciou. Dokumentácia bude obsahovať popis akýchkoľvek rozšírení, popisovať funkcionalitu referenčnej implementácie nie je nutné.   \n\nKlient bude implementovaný v jazykoch C/C++ a súčasťou riešenia bude Makefile ktorý po spustení vytvorí spustiteľného klienta s názvom client. Riešenie by malo byť preložiteľné a spustiteľné na dodanom virtuálnom stroji.   \n\n###### 4. Dokumentácia\n\nDokumentáciu je možné písať v jazykoch čeština, slovenčina alebo angličtina a vytvoriť v ľubovolnom nástroji (LaTeX, Microsoft Word, LibreOffice Writer, org-mode, Pandoc, ...), výsledkom však bude PDF súbor.    \nObsahom dokumentácie bude analýza zachytenej komunikácie, popis protokolu, návrhu dissectoru a prípadných rozšírení klienta. Dokumentácia bude hodnotená nielen po technickej (obsahovej), ale aj po formálnej (jazykovej a prezentačnej) stránke. Všetky použité zdroje budú korektne citované v súlade s [4].   \n\n##### Odovzdanie projektu:\n\nProjekt bude odovzdaný ako archív formátu tar bez komprimácie s názvom xlogin99.tar.  \nArchív bude obsahovať:  \n- dokumentáciu (manual.pdf)\n- zachytenú komunikáciu (isa.pcap)\n- dissector (isa.lua)\n- Makefile\n- zdrojové kódy klienta\n\n##### Literatúra:\n\n- [1] (https://gitlab.com/wireshark/w\nreshark/-/wikis/Lua)\n- [2] (https://gitlab.com/wireshark/wireshark/-/wikis/Lua/Dissectors)\n- [3] (https://gitlab.com/wireshark/wireshark/-/wikis/Lua/Examples)\n- [4] (https://www.fit.vut.cz/study/theses/citations/.cs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAenariss%2Fisa-2021","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAenariss%2Fisa-2021","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAenariss%2Fisa-2021/lists"}