
nDPI v6.0
Набор инструментов с открытым исходным кодом для глубокого анализа пакетов
nDPI
Что такое nDPI ?
nDPI® — это библиотека с открытым исходным кодом под лицензией LGPLv3 для глубокой проверки пакетов.
Общий FAQ о nDPI доступен здесь
Как скомпилировать nDPI
Для компиляции этого проекта выполните
- ./autogen.sh && ./configure
- make
Если вы получаете ошибки при компиляции croaring.c, попробуйте:
- ./autogen.sh && ./configure --enable-old-croaring
- make
Для компиляции библиотеки без инструментов или тестов:
- ./autogen.sh && ./configure --with-only-libndpi
- make
Поддерживаются сборки вне дерева исходников:
- ./autogen.sh
- mkdir build
- cd build
- ../configure && make
Для запуска тестов дополнительно выполните:
- ./tests/do.sh # Generate and check for diff's in PCAP files
- ./tests/do-unit.sh # Run unit tests
- ./tests/do-dga.sh # Run DGA detection test
или запустите всё командой: make check
Обратите внимание, что (минимальные) предварительные требования для компиляции включают:
- GNU tools (autoconf automake libtool pkg-config gettext flex bison)
- GNU C compiler (gcc) or Clang
В системах Debian/Ubuntu выполните:
- sudo apt-get install build-essential git gettext flex bison libtool autoconf automake pkg-config libpcap-dev libjson-c-dev libnuma-dev libpcre2-dev libmaxminddb-dev librrd-dev
В Arch Linux:
- sudo pacman -S gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c numactl pcre2 libmaxminddb rrdtool
В FreeBSD:
- sudo pkg install gcc git gettext flex bison libtool autoconf automake devel/pkgconf gmake libpcap json-c pcre2 libmaxminddb rrdtool
Не забудьте использовать gmake, а не make в FreeBSD
В MacOS:
- brew install coreutils gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c pcre2 libmaxminddb rrdtool
В Windows:
Поддерживаются три способа сборки nDPI:
- MSYS2 (предполагается, что MSYS2 уже установлен):
- msys2 -c "pacman --noconfirm -S --needed --overwrite '*' git mingw-w64-x86_64-toolchain automake1.16 automake-wrapper autoconf libtool make mingw-w64-x86_64-json-c mingw-w64-x86_64-crt-git mingw-w64-x86_64-pcre2 mingw-w64-x86_64-libpcap"
-
Mingw-w64
-
Visual Studio (см.
windows/nDPI.sln)
Примечание: Все версии Windows требуют npcap с включенным режимом совместимости WinPcap.
Как собрать документацию
- pip install --upgrade pip
- pip install -r doc/requirements.txt
- make doc
Используйте встроенный веб-сервер python3 для просмотра документации:
- make doc-view
Как добавить новый определитель протокола
Полная процедура добавления новых протоколов подробно:
- Добавьте новый протокол вместе с его уникальным ID в:
src/include/ndpi_protocol_ids.h - Создайте новый протокол в:
src/lib/protocols/ - Переменные, которые должны храниться на протяжении всего потока (как переменные состояния), необходимо поместить в:
src/include/ndpi_typedefs.hвndpi_flow_tcp_struct(только для TCP),ndpi_flow_udp_struct(только для UDP) илиndpi_flow_struct(для обоих). - Добавьте новую запись для функции поиска нового протокола в:
src/include/ndpi_private.h - Выберите (ничего не меняйте) битовую маску выбора из:
src/include/ndpi_define.h - Установите порты по умолчанию для протокола в
ndpi_init_protocol_defaultsв:src/lib/ndpi_main.c - Убедитесь, что есть поддержка nBPF, клонируя
PF_RINGв ту же директорию, где вы клонировалиnDPI:git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make. Вы можете игнорировать ошибку/bin/sh: 1: ../lib/pfring_config: not found - Из корневого каталога
nDPIвыполните./autogen.sh && ./configure --with-pcre2(nBPF и PCRE2 обычно необязательны, но они нужны для запуска/обновления всех модульных тестов) makemake check- Обновите документацию, добавив этот новый протокол в
doc/protocols.rst - Обновите конфигурацию Windows Visual Studio, добавив новый файл c в
windows/nDPI.vcxproj
Как использовать nDPI для блокировки выбранного трафика
Вы можете использовать nDPI для избирательной блокировки выбранного интернет-трафика, встроив его в приложение (помните, что nDPI — это всего лишь библиотека). Как ntopng, так и nProbe cento могут это делать.
Цитирование статьи о nDPI
- Deri, Luca, и др. nDPI: Open-source high-speed deep packet inspection 2014 International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2014.
Видео и презентации
- The Ultimate Guide to nDPI [2025]
- Using nDPI to solve real life problems: from First Packet Classification to Obfuscated Traffic detection [PacketFest, 2025]
- Passive Network Traffic Fingerprinting [FOSDEM, 2025]
- A Deep Dive Into Traffic Fingerprints using Wireshark [SharkFest, 2024]
- Network Traffic Classification for Cybersecurity and Monitoring [FOSDEM, 2022]
- Using nDPI for Monitoring and Security [FOSDEM, 2021]
- Knowing the Unknown: How to Monitor and Troubleshoot an Unfamiliar Network [SharkFest, 2017]
Проекты, связанные с nDPI
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
Хотя мы делаем всё возможное для определения сетевых протоколов, мы не можем гарантировать, что наше программное обеспечение не содержит ошибок и на 100% точно определяет протоколы. Пожалуйста, убедитесь, что вы уважаете конфиденциальность пользователей и имеете надлежащее разрешение на прослушивание, захват и проверку сетевого трафика.
nDPI является зарегистрированным товарным знаком в США и ЕС.