
nDPI v6.0
Kit de herramientas de software de inspección profunda de paquetes de código abierto
nDPI
¿Qué es nDPI?
nDPI® es una biblioteca de código abierto con licencia LGPLv3 para la inspección profunda de paquetes.
Una FAQ genérica sobre nDPI está disponible aquí
Cómo Compilar nDPI
Para compilar este proyecto, ejecuta
- ./autogen.sh && ./configure
- make
Si obtienes algunos errores al compilar croaring.c, prueba:
- ./autogen.sh && ./configure --enable-old-croaring
- make
Para compilar la biblioteca sin herramientas ni pruebas:
- ./autogen.sh && ./configure --with-only-libndpi
- make
Se soportan compilaciones fuera del árbol:
- ./autogen.sh
- mkdir build
- cd build
- ../configure && make
Para ejecutar pruebas, haz adicionalmente:
- ./tests/do.sh # Genera y verifica diferencias en archivos PCAP
- ./tests/do-unit.sh # Ejecuta pruebas unitarias
- ./tests/do-dga.sh # Ejecuta la prueba de detección DGA
o ejecuta todo con: make check
Ten en cuenta que los (mínimos) prerrequisitos para la compilación incluyen:
- Herramientas GNU (autoconf automake libtool pkg-config gettext flex bison)
- Compilador GNU C (gcc) o Clang
En sistemas Debian/Ubuntu, haz:
- 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
En Arch Linux:
- sudo pacman -S gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c numactl pcre2 libmaxminddb rrdtool
En FreeBSD:
- sudo pkg install gcc git gettext flex bison libtool autoconf automake devel/pkgconf gmake libpcap json-c pcre2 libmaxminddb rrdtool
Recuerda usar gmake y no make en FreeBSD
En MacOS:
- brew install coreutils gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c pcre2 libmaxminddb rrdtool
En Windows:
Hay tres formas soportadas de compilar nDPI:
- MSYS2 (asumiendo que MSYS2 ya está instalado):
- 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 (ver
windows/nDPI.sln)
Nota: Todas las versiones de Windows requieren npcap con el modo de compatibilidad WinPcap habilitado.
Cómo Construir la Documentación
- pip install --upgrade pip
- pip install -r doc/requirements.txt
- make doc
Usa el servidor web python3 incorporado para ver la documentación:
- make doc-view
Cómo Añadir un Nuevo Disector de Protocolo
El procedimiento completo de añadir nuevos protocolos en detalle:
- Añade el nuevo protocolo junto con su ID único a:
src/include/ndpi_protocol_ids.h - Crea un nuevo protocolo en:
src/lib/protocols/ - Las variables que se deben mantener durante la duración de todo el flujo (como variables de estado) deben colocarse en:
src/include/ndpi_typedefs.henndpi_flow_tcp_struct(solo para TCP),ndpi_flow_udp_struct(solo para UDP) ondpi_flow_struct(para ambos). - Añade una nueva entrada para la función de búsqueda del nuevo protocolo en:
src/include/ndpi_private.h - Elige (no cambies nada) una máscara de bits de selección de:
src/include/ndpi_define.h - Establece los puertos predeterminados del protocolo en
ndpi_init_protocol_defaultsen:src/lib/ndpi_main.c - Asegúrate de tener soporte nBPF, clonando
PF_RINGen el mismo directorio donde clonastenDPI:git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make. Puedes ignorar el error/bin/sh: 1: ../lib/pfring_config: not found - Desde el directorio raíz de
nDPI,./autogen.sh && ./configure --with-pcre2(nBPF y PCRE2 son generalmente opcionales, pero se necesitan para ejecutar/actualizar todas las pruebas unitarias) makemake check- Actualiza la documentación, añadiendo este nuevo protocolo a
doc/protocols.rst - Actualiza la configuración de Windows Visual Studio, añadiendo el nuevo archivo c en
windows/nDPI.vcxproj
Cómo usar nDPI para Bloquear Tráfico Seleccionado
Puedes usar nDPI para bloquear selectivamente tráfico de Internet seleccionado incrustándolo en una aplicación (recuerda que nDPI es solo una biblioteca). Tanto ntopng como nProbe cento pueden hacer esto.
Citación del Artículo de nDPI
- Deri, Luca, et al. nDPI: Open-source high-speed deep packet inspection 2014 International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2014.
Videos y Presentaciones
- 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]
Proyectos Relacionados con nDPI
AVISO LEGAL
Si bien hacemos nuestro mejor esfuerzo para detectar protocolos de red, no podemos garantizar que nuestro software esté libre de errores y sea 100% preciso en la detección de protocolos. Asegúrate de respetar la privacidad de los usuarios y de tener la autorización adecuada para escuchar, capturar e inspeccionar el tráfico de red.
nDPI es una marca registrada en EE. UU. y la UE.