traffic-v2
traffic-v2 copied to clipboard
Классификатор трафика на основе количественных характеристик потока транспортного уровня
Классификатор сетевого трафика
В данном репозитоии выложен код и исходные данные эксперимента по созданию классификатора сетевого трафика на основе количественных характеристик потока транспортного уровня. Основную статью можно почитать на Хабре: https://habrahabr.ru/post/304926/
Содержимое репозитория:
- pcaptocsv.py - скрипт преобразования дампов сетевого трафика в формате PCAP в таблицу признаков в формате CSV
- model.py - скрипт обучения модели на таблице призаков и проверки её производительности
- ndpiReader - анализатор трафика, использующий библиотеку nDPI. Скомпилирован под Linux версии 4.х.
-
flows/ - папка с заготовленными таблицами признаков. Файлы проименованы как
flows-sN.csv, где N означает число первых дейтаграмм (не считая TCP handshake), по которым сформирована таблица. - mdl/ - папка с дампами обученных моделей. Подаются на вход анализатору сетевого трафика реального времени Sherlock: https://github.com/vnetserg/sherlock
Самих файлов PCAP, на которых построены таблицы признаков, здесь нет и не будет. Мало ли какие я вводил пароли и качал торренты! :-)
Для запуска кода необходим интерпретатор Python версии 2.7.х с установленными библиотеками dpkt, numpy, sklearn и pandas. Если вы не хотите перекомпилировать ndpiReader, то в качестве ОС используйте Linux версии 4.х (у автора это Kubuntu 16.04 на ядре 4.4.0-22-generic).
Интерфейсы модулей
pcaptocsv.py
Данный модуль осуществляет преобразование дампов сетевого траифка в формате PCAP в таблицу признаков в формате CSV. Интерфейс модуля:
pcaptocsv.py [-o OUTPUT] [-s N] file [file ...]
- file [file ...] - один или несколько PCAP-файлов
- -o OUTPUT - имя выходного CSV-файла (по умолчанию "flows.csv")
- -s N - строить таблицу признаков только по первым N сегментам транспортного уровня (не учитывая TCP handshake)
model.py
Данный модуль осуществляет обучение модели на таблице признаков и проверку её производительности. Интерфейс модуля:
model.py [-o FILE] [-r SEED] file
- file - таблица признаков в формате CSV
- -r SEED - задать семя генератора случайных чисел
- -o FILE - имя выходного файла, куда будет сохранена обученная модель (эта модель потом подаётся на вход Sherlock'у)
В стандартный вывод модуль выводит три таблицы:
- Таблица важности признаков (считывается у обученной модели RandomForest)
- Таблица полноты и точности предсказаний по каждому классу трафика
- Таблица реальных и предсказанных классов
Повторение эксперимента
В качестве семени генератора случайных чисел использовалось число 42. Соответственно для повторения результатов эксперимента надо запустить модули следующим образом:
model.py -r 42 csv/flows-s1000.csv
model.py -r 42 csv/flows-s3.csv