Open Source Deep Packet Inspection Software Toolkit
nDPI® is an open source LGPLv3 library for deep-packet inspection.
A generic FAQ about nDPI® is available here
In order to compile this project do
To compile the library w/o any tools or tests:
To run tests do additionally:
or run all with: make check
Please note that the (minimal) pre-requisites for compilation include:
On Debian/Ubuntu systems do:
On Arch Linux:
On FreeBSD:
Remember to use gmake
and not make
on FreeBSD
On MacOS:
On Windows:
There are three supported ways to build nDPI:
MSYS2 (assuming MSYS2 already installed):
Mingw-w64
Visual Studio (see windows/nDPI.sln
)
Note: All Windows versions require npcap with WinPcap compatibility mode enabled.
Use the builtin python3 webserver to view documentation:
The entire procedure of adding new protocols in detail:
src/include/ndpi_protocol_ids.h
src/lib/protocols/
src/include/ndpi_typedefs.h
in ndpi_flow_tcp_struct
(for TCP only), ndpi_flow_udp_struct
(for UDP only), or ndpi_flow_struct
(for both).src/include/ndpi_protocols.h
src/include/ndpi_define.h
ndpi_init_protocol_defaults
in: src/lib/ndpi_main.c
PF_RING
in the same directory where you cloned nDPI
: git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make
. You can ignore the /bin/sh: 1: ../lib/pfring_config: not found
errornDPI
root directory, ./autogen.sh --with-pcre2
(nBPF and PCRE2 are usually optional, but they are needed to run/update all the unit tests)make
make check
doc/protocols.rst
windows/nDPI.vcxproj
You can use nDPI to selectively block selected Internet traffic by embedding it onto an application (remember that nDPI is just a library). Both ntopng and nProbe cento can do this.
While we do our best to detect network protocols, we cannot guarantee that our software is error free and 100% accurate in protocol detection. Please make sure that you respect the privacy of users and you have proper authorization to listen, capture and inspect network traffic.
nDPI is a registered trademark in the US and EU.