
nDPI v6.0
Kit d'outils open source pour l'inspection approfondie des paquets
nDPI
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 :
- 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"
-
Mingw-w64
-
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 :
- Ajoutez le nouveau protocole ainsi que son identifiant unique dans :
src/include/ndpi_protocol_ids.h - Créez un nouveau protocole dans :
src/lib/protocols/ - 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.hdansndpi_flow_tcp_struct(pour TCP uniquement),ndpi_flow_udp_struct(pour UDP uniquement), oundpi_flow_struct(pour les deux). - Ajoutez une nouvelle entrée pour la fonction de recherche du nouveau protocole dans :
src/include/ndpi_private.h - Choisissez (ne modifiez rien) un masque de bits de sélection parmi :
src/include/ndpi_define.h - Définissez les ports par défaut du protocole dans
ndpi_init_protocol_defaultsdans :src/lib/ndpi_main.c - Assurez-vous d'avoir le support nBPF, en clonant
PF_RINGdans 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 - 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) makemake check- Mettez à jour la documentation, en ajoutant ce nouveau protocole dans
doc/protocols.rst - 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
- Deri, Luca, et al. nDPI: Open-source high-speed deep packet inspection 2014 International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2014.
Vidéos et présentations
- 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]
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.