nDPI® 是一个开源的 LGPLv3 深度包检测库。
关于 nDPI 的常见问题解答可参见此处
编译本项目的步骤如下:
如果在编译 croaring.c 时遇到错误,请尝试:
若要仅编译库而不包含任何工具或测试:
支持树外编译:
如需执行额外测试,请执行以下命令:
或一次性运行所有测试:make check
请注意,编译所需的最低前提条件包括:
在 Debian/Ubuntu 系统中,请执行:
在 Arch Linux 中:
在 FreeBSD 中:
在 FreeBSD 上请务必使用 gmake 而非 make
在 MacOS 中:
在 Windows 中:
有三种受支持的构建 nDPI 的方式:
Mingw-w64
Visual Studio(参见 windows/nDPI.sln)
注意:所有 Windows 版本都需要启用 WinPcap 兼容模式的 npcap。
使用内置的 Python3 Web 服务器查看文档:
以下是添加新协议的完整详细步骤:
src/include/ndpi_protocol_ids.h 中,为新协议添加唯一的 ID。src/lib/protocols/ 中创建新的协议文件。src/include/ndpi_typedefs.h 的 ndpi_flow_tcp_struct(仅 TCP)、ndpi_flow_udp_struct(仅 UDP)或 ndpi_flow_struct(两者通用)中。src/include/ndpi_private.h 中,为新协议的搜索函数添加新条目。src/include/ndpi_define.h 中选择(不做任何更改)一个选择位掩码。src/lib/ndpi_main.c 的 ndpi_init_protocol_defaults 中设置协议的默认端口。PF_RING:git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make。可以忽略 错误。您可以通过将 nDPI 嵌入到应用程序中来使用它选择性地阻止特定的互联网流量(请记住 nDPI 只是一个库)。ntopng 和 nProbe cento 都可以实现这一点。
尽管我们尽最大努力检测网络协议,但我们无法保证本软件无错误且协议检测达到 100% 准确。请确保您尊重用户隐私,并获得适当的授权来监听、捕获和检查网络流量。
nDPI 是美国和欧盟的注册商标。
/bin/sh: 1: ../lib/pfring_config: not foundnDPI 根目录执行 ./autogen.sh && ./configure --with-pcre2(nBPF 和 PCRE2 通常为可选,但运行/更新所有单元测试需要它们)。makemake checkdoc/protocols.rst 中添加此新协议。windows/nDPI.vcxproj 中添加新的 .c 文件。