Volver a actualizaciones
Nuevo releaseSep 1, 2026

nDPI v6.0

Kit de herramientas de software de inspección profunda de paquetes de código abierto

Compartir

nDPI

Build Status Fuzzing Status

¿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:

  1. 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"
  1. Mingw-w64

  2. 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:

  1. Añade el nuevo protocolo junto con su ID único a: src/include/ndpi_protocol_ids.h
  2. Crea un nuevo protocolo en: src/lib/protocols/
  3. 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.h en ndpi_flow_tcp_struct (solo para TCP), ndpi_flow_udp_struct (solo para UDP) o ndpi_flow_struct (para ambos).
  4. Añade una nueva entrada para la función de búsqueda del nuevo protocolo en: src/include/ndpi_private.h
  5. Elige (no cambies nada) una máscara de bits de selección de: src/include/ndpi_define.h
  6. Establece los puertos predeterminados del protocolo en ndpi_init_protocol_defaults en: src/lib/ndpi_main.c
  7. Asegúrate de tener soporte nBPF, clonando PF_RING en el mismo directorio donde clonaste nDPI: 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
  8. 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)
  9. make
  10. make check
  11. Actualiza la documentación, añadiendo este nuevo protocolo a doc/protocols.rst
  12. 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

Videos y Presentaciones

Proyectos Relacionados con nDPI

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.

Categorías