nDPI/python
Ivan Nardi afc2b641eb
Fix writes to flow->protos union fields (#1354)
We can write to `flow->protos` only after a proper classification.

This issue has been found in Kerberos, DHCP, HTTP, STUN, IMO, FTP,
SMTP, IMAP and POP code.
There are two kinds of fixes:
 * write to `flow->protos` only if a final protocol has been detected
 * move protocol state out of `flow->protos`
The hard part is to find, for each protocol, the right tradeoff between
memory usage and code complexity.

Handle Kerberos like DNS: if we find a request, we set the protocol
and an extra callback to further parsing the reply.

For all the other protocols, move the state out of `flow->protos`. This
is an issue only for the FTP/MAIL stuff.

Add DHCP Class Identification value to the output of ndpiReader and to
the Jason serialization.

Extend code coverage of fuzz tests.

Close #1343
Close #1342
2021-11-15 16:20:57 +01:00
..
flow_printer.py Update example. 2020-09-14 16:42:33 +02:00
Makefile.in Added missing library 2021-01-22 09:31:37 +01:00
ndpi.py Fix writes to flow->protos union fields (#1354) 2021-11-15 16:20:57 +01:00
ndpi_example.py Polish. 2019-11-15 19:30:50 +01:00
ndpi_typestruct.py Fix writes to flow->protos union fields (#1354) 2021-11-15 16:20:57 +01:00
ndpi_wrap.c Fixes #777 2019-09-23 18:04:55 +02:00
python_extensions_guide.pdf Reworked categories handling 2019-09-29 21:46:41 +02:00
README.rst Update Python cffi bindings. 2020-02-21 17:28:44 +01:00

nDPI Python bindings
--------------------

This directory contains the Python3 bindings for nDPI. We provide both cffi and ctypes based bindings.

**cffi bindings**

Files:

* ndpi.py

Example (using `nfstream <https://github.com/aouinizied/nfstream>`_   package):

.. code-block:: bash

    pip3 install nfstream
    python3 flow_printer.py <interface>
    python3 flow_printer.py <pcap_file>

Code courtesy:

* Zied Aouini

**ctypes bindings**

Files:

* ndpi_typestruct.py
* ndpi_wrap.c
* Makefile.in

Example:

.. code-block:: bash

    pip3 install scapy
    python3 ndpi_example.py <interface>
    python3 ndpi_example.py <pcap_file>

Code courtesy:

* Massimo Puddu
* Zied Aouini