rsgit /libndpiA hyper-hyperfast web frontend for git repositories written in Rust.

Open Source Deep Packet Inspection Software Toolkit

Latest commits
CommitMessageAuthorDate
9eb914d587Add Simple Binary Encoding (SBE) protocol dissector (#3154)Toni3 months ago
a6fa73921bImplemented IPSEC JSON serielizationLuca Deri3 months ago
ae586c875cExtended IPSEC dissection and added metadata extractionLuca Deri3 months ago
7299edad10Disabled traceLuca Deri3 months ago
1b2c282f47Fixes Some Windows Tests (#3150)Luca Deri3 months ago

→ full history

Branches
NameTargetSubjectDate
add/libp2p-alpn-ipfsdf2312da88Add libp2p detection i.e. used for ipfs1 month ago
improved/lagofast59fe63fde7Improved LagoFast detection pattern3 months ago
improved/gearup-booster9ab7b03545Improved GearUP Booster proprietary TCP protocol detection3 months ago
improve/haproxy/pp22b23a2c083Improve HAProxy to support Proxy Protocol v2 as well3 months ago
dev9eb914d587Add Simple Binary Encoding (SBE) protocol dissector (#3154)3 months ago
Tags
NameTargetSubjectDate
4.42c5258b19dVersion 4.44 years ago
4.28b5c6af71bUpdated release to 4.24 years ago
4.0b8806bd2deMoved to 4.0.04 years ago
3.464929a75e03.4 nDPI Release5 years ago
3.2a50169a7b3Moved to 3.26 years ago
README

nDPI

Build Status Fuzzing Status

What is nDPI ?

nDPI® is an open source LGPLv3 library for deep-packet inspection.

A generic FAQ about nDPI is available here

How To Compile nDPI

In order to compile this project do

If you get some errors while compiling croaring.c, try:

To compile the library w/o any tools or tests:

Out-of-tree builds are supported:

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:

  1. MSYS2 (assuming MSYS2 already installed):
  1. Mingw-w64

  2. Visual Studio (see windows/nDPI.sln)

Note: All Windows versions require npcap with WinPcap compatibility mode enabled.

How To Build The Documentation

Use the builtin python3 webserver to view documentation:

How To Add A New Protocol Dissector

The entire procedure of adding new protocols in detail:

  1. Add new protocol together with its unique ID to: src/include/ndpi_protocol_ids.h
  2. Create a new protocol in: src/lib/protocols/
  3. Variables to be kept for the duration of the entire flow (as state variables) need to be placed in: 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).
  4. Add a new entry for the search function for the new protocol in: src/include/ndpi_private.h
  5. Choose (do not change anything) a selection bitmask from: src/include/ndpi_define.h
  6. Set protocol default ports in ndpi_init_protocol_defaults in: src/lib/ndpi_main.c
  7. Be sure to have nBPF support, cloning 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 error
  8. From the nDPI root directory, ./autogen.sh && ./configure --with-pcre2 (nBPF and PCRE2 are usually optional, but they are needed to run/update all the unit tests)
  9. make
  10. make check
  11. Update the documentation, adding this new protocol to doc/protocols.rst
  12. Update the Windows Visual Studio configuration, adding the new c file in windows/nDPI.vcxproj

How to use nDPI to Block Selected Traffic

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.

nDPI Paper Citation

Videos and Presentations

nDPI-Related Projects

DISCLAIMER

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.