Systém pre zachytenie a vyriešenie sieťových incidentov implementovaný v jazyku C++17. Tento projekt je súčasťou semestrálneho zadania predmetu Dátové Štruktúry a Algoritmy.
SENTINEL je konzolová aplikácia (CLI - Command Line Interface), ktorá umožňuje:
- Správu zariadení v počítačovej sieti
- Zaznamenávanie bezpečnostných incidentov
- Spracovanie incidentov pomocou fronty
- Perzistenciu dát do textových súborov
Každé zariadenie obsahuje:
- IP adresa - unikátny identifikátor zariadenia
- Názov - ľubovoľný názov zariadenia
- Počet incidentov - automaticky aktualizovaný pri pridaní/vyriešení incidentov
Zariadenia sú ukladané do vlastnej implementácie hash mapy s IP adresou ako kľúčom.
Každý incident obsahuje:
- IP adresa - zariadenie, na ktorom incident nastal
- Časová pečiatka - Unix timestamp vytvorenia incidentu
- Typ incidentu - kategória bezpečnostného incidentu
Incidenty sú spracovávané pomocou vlastnej implementácie fronty (FIFO).
ddos- Distributed Denial of Servicesql_injection- SQL Injectionxss- Cross-Site Scriptingbrute_force- Brute Force Attackbroken_auth- Broken Authenticationunknown- Neznámy typ (predvolený)
g++ -std=c++17 -o bin/sentinel -Wall -Wextra src/main.cpp./sentinel
./sentinel --helpPridanie nového zariadenia:
./sentinel new --ip <IP_ADRESA> --name <NÁZOV>Príklad:
./sentinel new --ip 192.168.1.10 --name iPhone
./sentinel new --ip 10.10.25.30 --name ServerVýpis všetkých zariadení:
./sentinel listPridanie nového incidentu:
./sentinel add --ip <IP_ADRESA> [--type <TYP_INCIDENTU>]Príklady:
./sentinel add --ip 192.168.1.10 --type ddos
./sentinel add --ip 10.10.25.30Vyriešenie nasledujúceho incidentu:
./sentinel fixProgram zobrazí detaily incidentu a zariadenia, následne požiada o potvrdenie vyriešenia (y/n).
Počet incidentov vo fronte:
./sentinel countProgram automaticky pracuje s dvoma textovými súbormi:
- zariadenia.txt - ukladá informácie o zariadeniach
- incidenty.txt - ukladá frontu incidentov
Oba súbory sú načítané pri spustení programu a aktualizované pri každej zmene.
- Vlastná implementácia hash tabuľky
- Kolízie riešené reťazením (chaining)
- Predvolená kapacita: 13 bucketov
- Hash funkcia:
std::hash<std::string>()modulo kapacita
- Vlastná implementácia založená na
std::list - FIFO princíp (First In, First Out)
- Operácie: push, pop, peek, size
- Jazyk: C++17
- Kompilátor: G++ (štandard C++17)
- Závislosti: Iba štandardná knižnica C++
.
├── bin/ # Skompilované spustiteľné súbory
├── src/
│ └── main.cpp # Hlavný zdrojový súbor
├── test/ # Automatizované testy
├── zariadenia.txt # Dáta zariadení (vytvorené automaticky)
└── incidenty.txt # Dáta incidentov (vytvorené automaticky)
Tento projekt je súčasťou zadania predmetu Dátové Štruktúry a Algoritmy na PEVŠ.
ISC License - súbor LICENSE
Akademický projekt - PEVŠ DSA 2026