Retour aux mises à jour
New releaseSep 1, 2026

nDPI v6.0

Kit d'outils open source pour l'inspection approfondie des paquets

Partager

nDPI

Build Status Fuzzing Status

Qu'est-ce que nDPI ?

nDPI® est une bibliothèque open source sous licence LGPLv3 pour l'inspection approfondie des paquets.

Une FAQ générale sur nDPI est disponible ici

Comment compiler nDPI

Pour compiler ce projet, faites

  • ./autogen.sh && ./configure
  • make

Si vous obtenez des erreurs lors de la compilation de croaring.c, essayez :

  • ./autogen.sh && ./configure --enable-old-croaring
  • make

Pour compiler la bibliothèque sans outils ni tests :

  • ./autogen.sh && ./configure --with-only-libndpi
  • make

Les builds hors arbre sont pris en charge :

  • ./autogen.sh
  • mkdir build
  • cd build
  • ../configure && make

Pour exécuter les tests supplémentaires :

  • ./tests/do.sh # Génère et vérifie les différences dans les fichiers PCAP
  • ./tests/do-unit.sh # Exécute les tests unitaires
  • ./tests/do-dga.sh # Exécute le test de détection DGA

ou exécutez tout avec : make check

Veuillez noter que les prérequis (minimaux) pour la compilation incluent :

  • Outils GNU (autoconf automake libtool pkg-config gettext flex bison)
  • Compilateur GNU C (gcc) ou Clang

Sur les systèmes Debian/Ubuntu, faites :

  • 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

Sur Arch Linux :

  • sudo pacman -S gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c numactl pcre2 libmaxminddb rrdtool

Sur FreeBSD :

  • sudo pkg install gcc git gettext flex bison libtool autoconf automake devel/pkgconf gmake libpcap json-c pcre2 libmaxminddb rrdtool

N'oubliez pas d'utiliser gmake et non make sur FreeBSD

Sur MacOS :

  • brew install coreutils gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c pcre2 libmaxminddb rrdtool

Sur Windows :

Il existe trois méthodes prises en charge pour construire nDPI :

  1. MSYS2 (en supposant que MSYS2 est déjà installé) :
  • 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 (voir windows/nDPI.sln)

Remarque : Toutes les versions de Windows nécessitent npcap avec le mode de compatibilité WinPcap activé.

Comment construire la documentation

  • pip install --upgrade pip
  • pip install -r doc/requirements.txt
  • make doc

Utilisez le serveur web python3 intégré pour visualiser la documentation :

  • make doc-view

Comment ajouter un nouveau dissecteur de protocole

La procédure complète pour ajouter de nouveaux protocoles en détail :

  1. Ajoutez le nouveau protocole ainsi que son identifiant unique dans : src/include/ndpi_protocol_ids.h
  2. Créez un nouveau protocole dans : src/lib/protocols/
  3. Les variables à conserver pendant toute la durée du flux (en tant que variables d'état) doivent être placées dans : src/include/ndpi_typedefs.h dans ndpi_flow_tcp_struct (pour TCP uniquement), ndpi_flow_udp_struct (pour UDP uniquement), ou ndpi_flow_struct (pour les deux).
  4. Ajoutez une nouvelle entrée pour la fonction de recherche du nouveau protocole dans : src/include/ndpi_private.h
  5. Choisissez (ne modifiez rien) un masque de bits de sélection parmi : src/include/ndpi_define.h
  6. Définissez les ports par défaut du protocole dans ndpi_init_protocol_defaults dans : src/lib/ndpi_main.c
  7. Assurez-vous d'avoir le support nBPF, en clonant PF_RING dans le même répertoire où vous avez cloné nDPI : git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make. Vous pouvez ignorer l'erreur /bin/sh: 1: ../lib/pfring_config: not found
  8. Depuis le répertoire racine nDPI, ./autogen.sh && ./configure --with-pcre2 (nBPF et PCRE2 sont généralement optionnels, mais ils sont nécessaires pour exécuter/mettre à jour tous les tests unitaires)
  9. make
  10. make check
  11. Mettez à jour la documentation, en ajoutant ce nouveau protocole dans doc/protocols.rst
  12. Mettez à jour la configuration Visual Studio Windows, en ajoutant le nouveau fichier c dans windows/nDPI.vcxproj

Comment utiliser nDPI pour bloquer le trafic sélectionné

Vous pouvez utiliser nDPI pour bloquer sélectivement le trafic Internet choisi en l'intégrant dans une application (rappelez-vous que nDPI n'est qu'une bibliothèque). ntopng et nProbe cento peuvent le faire.

Citation du document nDPI

Vidéos et présentations

Projets liés à nDPI

AVERTISSEMENT

Bien que nous fassions de notre mieux pour détecter les protocoles réseau, nous ne pouvons pas garantir que notre logiciel est exempt d'erreurs et précis à 100 % dans la détection des protocoles. Assurez-vous de respecter la vie privée des utilisateurs et d'avoir l'autorisation appropriée pour écouter, capturer et inspecter le trafic réseau.

nDPI est une marque déposée aux États-Unis et dans l'UE.

Catégories