📌 О программе
Система анализирует сетевой трафик в режиме реального времени с помощью нейронной сети MLP, обученной на датасете CICIDS2017. Каждые 5 секунд собираются признаки активных сетевых потоков и передаются в модель, результат отображается на экране.
▶ Как начать работу
- Нажмите кнопку «СТАРТ» система начнёт захватывать пакеты и анализировать трафик.
- Через 5–10 секунд в главном блоке появится первый результат классификации.
- Нажмите «СТОП», чтобы приостановить анализ (захват пакетов продолжится).
- Нажмите «СБРОС», чтобы очистить все данные и вернуться в начальное состояние.
- Кнопка «🛡 SANITY: ВКЛ/ВЫКЛ» переключает режим фильтрации ложных срабатываний.
- Кнопка «📥 ОТЧЁТ» формирует HTML-файл с историей сессии для скачивания.
🎨 Расшифровка статусов
| Статус | Значение | Действие |
| ✅ НОРМА | Обычный трафик, угроз не обнаружено | Всё в порядке |
| 💥 DDoS АТАКА | Распределённая атака отказа в обслуживании | Срочно изолировать сегмент сети |
| 🔥 DoS АТАКА | Атака отказа в обслуживании | Проверить источник и заблокировать IP |
| 🔍 СКАНИРОВАНИЕ ПОРТОВ | Разведка сети, возможная подготовка к атаке | Проверить журналы, возможна подготовка атаки |
| 🔑 БРУТФОРС | Перебор паролей / учётных данных | Ввести ограничение попыток входа |
| 🤖 БОТНЕТ | Активность ботов | Найти заражённый узел и изолировать |
| 🕵️ ИНФИЛЬТРАЦИЯ | Признаки несанкционированного проникновения | Немедленный аудит безопасности |
📊 Уверенность модели
Показывает, насколько модель уверена в своём предсказании. Значения ниже 60% означают неоднозначную ситуацию не следует принимать однозначных решений без дополнительной проверки. Полоса «Вероятности классов» показывает топ-5 вариантов с реальными вероятностями от нейросети (с температурным сглаживанием T=1.5).
⚠️ Вероятности в блоке «Вероятности классов» отражают уверенность модели во всех классах независимо от итогового предсказания. Если модель колеблется между Benign и DoS это видно именно здесь.
🔬 Как работает захват пакетов
Сниффер запущен в фоновом потоке на сервере и перехватывает все IP-пакеты сетевого интерфейса с помощью библиотеки Scapy (использует libpcap в режиме «неразборчивого» захвата). Каждый пакет обрабатывается в реальном времени:
- Извлекаются поля IP-заголовка: IP источника/назначения, протокол (TCP/UDP/ICMP).
- Для TCP считываются порты, флаги (SYN/ACK/FIN/RST/PSH/URG/CWE/ECE), размер окна и смещение данных.
- Рассчитывается размер заголовка (IP + транспортный уровень) и размер полезной нагрузки.
- Служебный трафик отбрасывается: loopback (127.0.0.1, ::1) и порт 5000 (Flask-сервер).
- Данные пакета передаются в движок потоков и записываются в кольцевой буфер (последние 200 пакетов).
🔄 Конвейер анализа (pipeline)
Полный путь от пакета до предсказания 5 шагов (отображаются в панели «Конвейер» в реальном времени):
- 1. Захват пакетов. Scapy перехватывает IP-пакеты через BPF-фильтр на уровне ядра ОС.
- 2. Группировка в потоки. Пакеты объединяются в двунаправленные потоки по пятёрке (IP src, IP dst, порт src, порт dst, протокол).
- 3. Извлечение 70 признаков (каждые 5 сек). Счётчики пакетов/байт, статистики размеров, IAT, TCP-флаги, скорости, активность/простой.
- 4. Нормализация StandardScaler. Вектор приводится к нулевому среднему и единичному отклонению тот же скейлер, что при обучении.
- 5. MLP-классификация + калибровка. Нейросеть возвращает вероятности, применяется температурное сглаживание T=1.5 через logit-пространство.
- 6. Sanity Check (если включён). Проверка интенсивности трафика: если она ниже порога для заявленного класса атаки метка заменяется на «НОРМА».
📦 Таблица пакетов
Отображает последние захваченные IP-пакеты в реальном времени. Обновляется раз в секунду. Строки выделены цветом по протоколу: ■ TCP, ■ UDP, ■ ICMP. Захват работает всегда даже когда анализ остановлен.
📋 Лог событий
Фиксирует только аномалии (не-Benign предсказания) с временными метками и уровнем уверенности. Нормальный трафик в лог не попадает, чтобы не замусоривать историю. Лог сохраняется до нажатия «СБРОС» или выгружается в HTML-отчёт.
📥 Скачать отчёт
Кнопка «📥 ОТЧЁТ» формирует HTML-файл с полной историей текущей сессии: захваченные пакеты, лог событий, параметры нейросети и все предсказания с вероятностями. Файл открывается в любом браузере без установки дополнительного ПО.
🛡 Sanity Check фильтр ложных срабатываний
Нейронная сеть обучена на датасете CICIDS2017, где атаки генерировали сотни и тысячи пакетов в секунду. На реальном домашнем или офисном трафике модель может ошибочно распознать обычную работу браузера или облачных сервисов как DoS-атаку из-за схожего паттерна множества одновременных TCP-соединений.
Sanity Check решает эту проблему: перед выдачей результата система проверяет, достаточно ли интенсивен трафик для заявленного типа атаки. Если нет метка принудительно заменяется на «НОРМА», а уверенность отображается как уверенность исходного предсказания модели.
| Тип атаки | Минимум пак/с | Минимум пакетов за окно |
| DDoS | ≥ 500 | ≥ 200 |
| DoS | ≥ 200 | ≥ 100 |
| PortScan | ≥ 10 | ≥ 30 |
| Bruteforce | ≥ 5 | ≥ 20 |
| Botnet | ≥ 1 | ≥ 10 |
| Infiltration | ≥ 50 | ≥ 30 |
Кнопка «🛡 SANITY: ВКЛ» (синяя) включает фильтр. При нажатии переключается в «⚠️ SANITY: ВЫКЛ» (красная) модель показывает сырые предсказания без фильтрации. Это полезно для демонстрации работы нейросети или анализа трафика с заведомо высокой интенсивностью.
⚙️ Технические параметры
- Модель: MLP (многослойный перцептрон), 3 скрытых слоя 128 → 64 → 32, активация ReLU
- Признаки: 70 сетевых признаков из CICFlowMeter (стандарт датасета CICIDS2017)
- Датасет: CICIDS2017 7 классов трафика, обучение с взвешиванием классов (MAX_RATIO = 15)
- Окно анализа: 5 секунд, сброс счётчиков после каждого окна
- Температурное сглаживание вероятностей: T = 1.5
- Sanity Check: переключается кнопкой в шапке, пороги описаны в разделе выше
- Потоки без активности более 120 секунд автоматически удаляются из памяти
- Связь браузер ↔ сервер: WebSocket (Socket.IO), обновление каждую секунду