Zurück zu den Updates
New releaseSep 1, 2026

nDPI v6.0

Open-Source-Software-Toolkit zur Deep Packet Inspection

Teilen

nDPI

Build Status Fuzzing Status

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:

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

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

  1. Fügen Sie das neue Protokoll zusammen mit seiner eindeutigen ID in src/include/ndpi_protocol_ids.h hinzu
  2. Erstellen Sie ein neues Protokoll in: src/lib/protocols/
  3. Variablen, die für die Dauer des gesamten Flows (als Zustandsvariablen) beibehalten werden sollen, müssen in src/include/ndpi_typedefs.h in ndpi_flow_tcp_struct (nur für TCP), ndpi_flow_udp_struct (nur für UDP) oder ndpi_flow_struct (für beide) platziert werden.
  4. Fügen Sie einen neuen Eintrag für die Suchfunktion des neuen Protokolls in src/include/ndpi_private.h hinzu
  5. Wählen Sie (ohne etwas zu ändern) eine Auswahl-Bitmaske aus: src/include/ndpi_define.h
  6. Legen Sie die Standard-Ports des Protokolls in ndpi_init_protocol_defaults in: src/lib/ndpi_main.c fest
  7. Stellen Sie sicher, dass Sie nBPF-Unterstützung haben, indem Sie PF_RING in dasselbe Verzeichnis klonen, in dem Sie nDPI geklont 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 found ignorieren
  8. Führen Sie vom nDPI-Wurzelverzeichnis aus ./autogen.sh && ./configure --with-pcre2 aus (nBPF und PCRE2 sind normalerweise optional, werden aber benötigt, um alle Unit-Tests auszuführen/zu aktualisieren)
  9. make
  10. make check
  11. Aktualisieren Sie die Dokumentation, indem Sie dieses neue Protokoll zu doc/protocols.rst hinzufügen
  12. Aktualisieren Sie die Windows Visual Studio-Konfiguration, indem Sie die neue C-Datei in windows/nDPI.vcxproj hinzufü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

Videos und Präsentationen

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.

Kategorien