
nDPI v6.0
Open-Source-Software-Toolkit zur Deep Packet Inspection
nDPI
Was ist nDPI?
nDPI® ist eine Open-Source-Bibliothek unter LGPLv3 zur Deep-Packet-Inspection.
Ein allgemeines FAQ zu nDPI ist hier verfügbar.
So kompilieren Sie nDPI
Um dieses Projekt zu kompilieren, führen Sie Folgendes aus:
- ./autogen.sh && ./configure
- make
Wenn Sie beim Kompilieren von croaring.c Fehler erhalten, versuchen Sie:
- ./autogen.sh && ./configure --enable-old-croaring
- make
Um die Bibliothek ohne Tools oder Tests zu kompilieren:
- ./autogen.sh && ./configure --with-only-libndpi
- make
Out-of-Tree-Builds werden unterstützt:
- ./autogen.sh
- mkdir build
- cd build
- ../configure && make
Um Tests auszuführen, führen Sie zusätzlich Folgendes aus:
- ./tests/do.sh # Diffs in PCAP-Dateien generieren und prüfen
- ./tests/do-unit.sh # Unit-Tests ausführen
- ./tests/do-dga.sh # DGA-Erkennungstest ausführen
oder alles mit make check ausführen
Bitte beachten Sie, dass die (minimalen) Voraussetzungen für die Kompilierung Folgendes umfassen:
- GNU-Tools (autoconf automake libtool pkg-config gettext flex bison)
- GNU-C-Compiler (gcc) oder Clang
Auf Debian/Ubuntu-Systemen:
- 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
Auf Arch Linux:
- sudo pacman -S gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c numactl pcre2 libmaxminddb rrdtool
Auf FreeBSD:
- sudo pkg install gcc git gettext flex bison libtool autoconf automake devel/pkgconf gmake libpcap json-c pcre2 libmaxminddb rrdtool
Denken Sie daran, auf FreeBSD gmake statt make zu verwenden
Auf macOS:
- brew install coreutils gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c pcre2 libmaxminddb rrdtool
Unter Windows:
Es gibt drei unterstützte Methoden, um nDPI zu erstellen:
- MSYS2 (vorausgesetzt MSYS2 ist bereits installiert):
- 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 (siehe
windows/nDPI.sln)
Hinweis: Alle Windows-Versionen erfordern npcap mit aktiviertem WinPcap-Kompatibilitätsmodus.
So erstellen Sie die Dokumentation
- pip install --upgrade pip
- pip install -r doc/requirements.txt
- make doc
Verwenden Sie den integrierten Python3-Webserver, um die Dokumentation anzusehen:
- make doc-view
So fügen Sie einen neuen Protokoll-Dissector hinzu
Das gesamte Verfahren zum Hinzufügen neuer Protokolle im Detail:
- Fügen Sie das neue Protokoll zusammen mit seiner eindeutigen ID in
src/include/ndpi_protocol_ids.hhinzu - Erstellen Sie ein neues Protokoll in:
src/lib/protocols/ - Variablen, die für die Dauer des gesamten Flows (als Zustandsvariablen) beibehalten werden sollen, müssen in
src/include/ndpi_typedefs.hinndpi_flow_tcp_struct(nur für TCP),ndpi_flow_udp_struct(nur für UDP) oderndpi_flow_struct(für beide) platziert werden. - Fügen Sie einen neuen Eintrag für die Suchfunktion des neuen Protokolls in
src/include/ndpi_private.hhinzu - Wählen Sie (ohne etwas zu ändern) eine Auswahl-Bitmaske aus:
src/include/ndpi_define.h - Legen Sie die Standard-Ports des Protokolls in
ndpi_init_protocol_defaultsin:src/lib/ndpi_main.cfest - Stellen Sie sicher, dass Sie nBPF-Unterstützung haben, indem Sie
PF_RINGin dasselbe Verzeichnis klonen, in dem SienDPIgeklont haben:git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make. Sie können den Fehler/bin/sh: 1: ../lib/pfring_config: not foundignorieren - Führen Sie vom
nDPI-Wurzelverzeichnis aus./autogen.sh && ./configure --with-pcre2aus (nBPF und PCRE2 sind normalerweise optional, werden aber benötigt, um alle Unit-Tests auszuführen/zu aktualisieren) makemake check- Aktualisieren Sie die Dokumentation, indem Sie dieses neue Protokoll zu
doc/protocols.rsthinzufügen - Aktualisieren Sie die Windows Visual Studio-Konfiguration, indem Sie die neue C-Datei in
windows/nDPI.vcxprojhinzufügen
So verwenden Sie nDPI zum Blockieren ausgewählten Datenverkehrs
Sie können nDPI verwenden, um ausgewählten Internetverkehr selektiv zu blockieren, indem Sie es in eine Anwendung einbetten (denken Sie daran, dass nDPI nur eine Bibliothek ist). Sowohl ntopng als auch nProbe cento können dies tun.
Zitierung des nDPI-Papiers
- Deri, Luca, et al. nDPI: Open-source high-speed deep packet inspection 2014 International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2014.
Videos und Präsentationen
- Der ultimative Leitfaden zu nDPI [2025]
- nDPI zur Lösung realer Probleme verwenden: Von der ersten Paketklassifizierung zur Erkennung verschleierten Datenverkehrs [PacketFest, 2025]
- Passives Netzwerkverkehrs-Fingerprinting [FOSDEM, 2025]
- Ein tiefer Einblick in Verkehrsfingerabdrücke mit Wireshark [SharkFest, 2024]
- Netzwerkverkehrsklassifizierung für Cybersicherheit und Überwachung [FOSDEM, 2022]
- nDPI für Überwachung und Sicherheit verwenden [FOSDEM, 2021]
- Das Unbekannte kennen: Wie man ein unbekanntes Netzwerk überwacht und Fehler behebt [SharkFest, 2017]
nDPI-bezogene Projekte
HAFTUNGSAUSSCHLUSS
Obwohl wir unser Bestes tun, um Netzwerkprotokolle zu erkennen, können wir nicht garantieren, dass unsere Software fehlerfrei ist und zu 100% genaue Protokollergebnisse liefert. Bitte stellen Sie sicher, dass Sie die Privatsphäre der Benutzer respektieren und die ordnungsgemäße Autorisierung haben, Netzwerkverkehr abzuhören, aufzuzeichnen und zu inspizieren.
nDPI ist eine eingetragene Marke in den USA und der EU.