mirror of
https://github.com/vel21ripn/nDPI.git
synced 2026-04-28 15:09:47 +00:00
82 lines
2 KiB
Markdown
82 lines
2 KiB
Markdown
# ndpi
|
|
|
|
This package contains Python bindings for nDPI. nDPI is an Open and Extensible LGPLv3 Deep Packet Inspection Library.
|
|
|
|
**ndpi** is implemented using [**CFFI**][cffi] (out-of-line API mode). Consequently, it is fast and [**PyPy**][pypy]
|
|
compliant.
|
|
|
|
## Installation
|
|
|
|
### Build nDPI
|
|
|
|
``` bash
|
|
git clone --branch dev https://github.com/ntop/nDPI.git
|
|
cd nDPI
|
|
./autogen.sh
|
|
./configure
|
|
make
|
|
sudo make install
|
|
```
|
|
|
|
### Install ndpi package
|
|
|
|
``` bash
|
|
cd python
|
|
# IMPORTANT: nDPI Bindings requires Python version >= 3.7
|
|
python3 -m pip install --upgrade pip
|
|
python3 -m pip install -r dev_requirements.txt
|
|
python3 -m pip install .
|
|
```
|
|
|
|
## Usage
|
|
|
|
### API
|
|
``` python
|
|
from ndpi import NDPI, NDPIFlow
|
|
|
|
nDPI = NDPI()
|
|
|
|
# You per flow processing here
|
|
# ...
|
|
|
|
ndpi_flow = NDPIFlow()
|
|
nDPI.process_packet(ndpi_flow, ip_bytes, time_ms)
|
|
nDPI.giveup(ndpi_flow) # If you want to guess it instead (DPI fallback)
|
|
```
|
|
|
|
### Example Application
|
|
|
|
[ndpi_example.py][ndpi_example] is provided to demonstrate how **ndpi** can be integrated within your Python application.
|
|
|
|
``` bash
|
|
Using nDPI 4.3.0-3532-8dd70b70
|
|
usage: ndpi_example.py [-h] [-u] input
|
|
|
|
positional arguments:
|
|
input input pcap file path
|
|
|
|
optional arguments:
|
|
-h, --help show this help message and exit
|
|
-u, --include-unknowns
|
|
```
|
|
|
|
Example with a Skype capture file
|
|
|
|
``` bash
|
|
python3 ndpi_example.py -u ../tests/pcap/skype.pcap
|
|
```
|
|
|
|
## Related projects
|
|
|
|
The provided example is for demo purposes only, For additional features (live capture, multiplatform support,
|
|
multiprocessing, ML based classification, system visibility, etc.), please check nDPI based
|
|
framework, [**NFStream**][nfstream].
|
|
## License
|
|
|
|
This project is licensed under the LGPLv3 License - see the [**License**][license] file for details.
|
|
|
|
[license]: https://github.com/ntop/nDPI/blob/dev/COPYING
|
|
[cffi]: https://cffi.readthedocs.io/en/latest/
|
|
[pypy]: https://www.pypy.org/
|
|
[nfstream]: https://github.com/nfstream/nfstream
|
|
[ndpi_example]: https://github.com/ntop/nDPI/blob/dev/python/ndpi_example.py
|