Bachelor's Thesis

Multi-platform application for bulk management of MikroTik RouterOS devices

Final Thesis 2.76 MB Appendix 6.61 MB

Author of thesis: Jiří Kozárek

Acad. year: 2025/2026

Supervisor: Ing. Ondřej Krajsa, Ph.D.

Reviewer: Ing. Tomáš Lieskovan, Ph.D.

Abstract:

The goal of this bachelor’s thesis is creation of cross-platform application written in Python programming language that will be capable of mess configuration of active network devices running MikroTik RouterOS operating system. The configuration will be done via graphical user interface using system API interface on port 8729, specifically its encrypted version secured by TLS. The entire app is available in a repository on GitHub platform.

Keywords:

Python, MikroTik, RouterOS, mess configuration

Date of defence

16.06.2026

Result of the defence

Defended (thesis was successfully defended)

znamkaAznamka

Grading

A

Process of defence

Student prezentoval výsledky své práce a komise byla seznámena s posudky. Student obhájil bakalářskou práci a odpověděl na otázky členů komise a oponenta. Otázky: 1) V kódu je vypnuto ověřování TLS certifikátu (ssl.CERT_NONE). Jaká rizika z toho plynou a jak by bylo možné ověřování certifikátů při správě MikroTik zařízení v praxi zavést? 2) Heslo zařízení je před šifrováním zkráceno na 32 bajtů pomocí ljust(32)[:32]. Co se stane, pokud správce nastaví heslo delší než 32 znaků, a jak byste tento nedostatek řešil? 3) Záloha a obnova konfigurace byla součástí zadání, ale v implementaci chybí. Jakým způsobem RouterOS API zálohu konfigurace umožňuje a jak byste ji do aplikace doplnil?

Language of thesis

Czech

Faculty

Department

Study programme

Telecommunication and Information Systems (BPC-TLI)

Composition of Committee

prof. Ing. Jaroslav Koton, Ph.D. (předseda)
prof. Mgr. Pavel Rajmic, Ph.D. (místopředseda)
Ing. Petr Dejdar, Ph.D. (člen)
Ing. Jan Karásek, Ph.D. (člen)
Ing. Ondřej Krajsa, Ph.D. (člen)
Ing. Ondřej Pavelka (člen)
Ing. Alžbeta Kostelanská (člen)

Supervisor’s report
Ing. Ondřej Krajsa, Ph.D.

Student Jiří Kozárek v rámci své bakalářské práce úspěšně navrhl a implementoval aplikaci v Pythonu pro hromadnou správu zařízení MikroTik RouterOS přes zabezpečené API rozhraní. Autor pracoval po celý semestr velmi aktivně, pravidelně konzultoval a samostatně reagoval na podněty z praktického testování. Výsledkem je funkční multiplatformní aplikace s grafickým rozhraním, která spolehlivě zvládá správu databází zařízení, hromadné provádění příkazů a bezpečné ukládání přihlašovacích údajů.

Technickou úroveň práce hodnotím vysoko. Student prokázal schopnost pracovat s API RouterOS, komunikací přes TLS a lokální databází SQLite. Oceňuji zejména přehledné rozdělení aplikace (uživatelská, konfigurační a administrátorská část) a implementaci tzv. pohledů pro kontextové omezování příkazů podle oprávnění. Architektura programu by však mohla být robustnější, a to z hlediska detailnějšího ošetření chyb, sjednocení databázových operací a důslednějšího oddělení aplikační logiky od GUI.

Formální úprava splňuje stanovené požadavky. Text je logicky strukturován a přiměřeně dokumentuje vývoj i návrh aplikace. Slabším místem práce je vyšší výskyt překlepů, stylistických nepřesností a slabší úroveň anglického abstraktu. Teoretická část a popis implementace mohly jít v některých pasážích více do hloubky. I přes uvedené formální nedostatky však student odevzdal kvalitní softwarové dílo, které splňuje cíle zadání. Points proposed by supervisor: 92

Grade proposed by supervisor: A

Reviewer’s report
Ing. Tomáš Lieskovan, Ph.D.

Bakalářská práce se zabývá návrhem a implementací multiplatformní Python aplikace pro hromadnou správu zařízení MikroTik RouterOS přes zabezpečené API (TLS, port 8729). Výsledkem je funkční aplikace s GUI (DearPyGui) rozdělená na úvodní, konfigurační a administrátorskou část s podporou pohledů a šifrovaného ukládání přihlašovacích údajů (AES-256-CBC).

Zadání bylo splněno pouze částečně. Záloha a obnova konfigurace, explicitně požadovaná zadáním, implementována není a její absence není v práci zdůvodněna. Správa logů byla nahrazena odkazem na nástroje třetích stran (Zabbix, LibreNMS), což je přijatelné, nicméně tato skutečnost je zmíněna až v závěru. Stejně tak zadání požaduje šablony pro hromadnou konfiguraci, které chybí – jejich nahrazení vlastními konfiguračními okny není v práci dostatečně zdůvodněno a je rovněž zmíněno až v závěru. V odevzdaném archivu chybí soubor requirements.txt nebo jiný výčet závislostí, přestože zadání vyžaduje instalační příručku.

V odevzdaném archivu chybí uživatelská i instalační příručka vyžadovaná zadáním. Přiložená dokumentace (docs/) je automaticky generovaná Doxygen dokumentace zdrojového kódu, nikoli příručka pro uživatele. Odkaz na GitHub repozitář, kde příručka případně může být, je v PDF přítomen jako vizuálně neodlišený hypertextový odkaz v poslední větě závěru, takže jeho nalezení je spíše náhodné.

Z technického hlediska jsou patrné dva hlavní nedostatky:
1, TLS spojení je navázáno s vypnutým ověřením certifikátu (ssl.CERT_NONE, check_hostname=False), což není v práci nijak odůvodněno ani reflektováno v bezpečnostní analýze.
2, Hesla zařízení jsou před šifrováním tiše zkrácena na 32 bajtů (ljust(32)[:32]); hesla delší než 32 znaků jsou tak bez upozornění uživatele zkrácena.

Anglický abstrakt nebyl zjevně před odevzdáním zkontrolován – obsahuje překlep „mess configuration" namísto „mass configuration", který celkový dojem z práce zbytečně snižuje.

Práce nicméně prokazuje praktické zvládnutí dané problematiky a výsledná aplikace je funkční a otestovaná na více platformách. Celkovou úroveň snižuje neúplné splnění zadání, výše popsané technické nedostatky a nedostatečná reflexe bezpečnostních kompromisů v textu.

Práci doporučuji k obhajobě s hodnocením 70/C. Topics for thesis defence:
  1. V kódu je vypnuto ověřování TLS certifikátu (ssl.CERT_NONE). Jaká rizika z toho plynou a jak by bylo možné ověřování certifikátů při správě MikroTik zařízení v praxi zavést?
  2. Heslo zařízení je před šifrováním zkráceno na 32 bajtů pomocí ljust(32)[:32]. Co se stane, pokud správce nastaví heslo delší než 32 znaků, a jak byste tento nedostatek řešil?
  3. Záloha a obnova konfigurace byla součástí zadání, ale v implementaci chybí. Jakým způsobem RouterOS API zálohu konfigurace umožňuje a jak byste ji do aplikace doplnil?
Points proposed by reviewer: 70

Grade proposed by reviewer: C

Responsibility: Mgr. et Mgr. Hana Odstrčilová