NDPI介绍和应用

NDPI (nDPI) 是一个开源的深度包检测(DPI)库,由意大利网络研究和监测公司 NetFilter 开发。nDPI 的主要功能是识别网络流量中的应用协议,nDPI 是一个库,可以很容易地集成到其他项目中。开发人员可以使用 nDPI 作为流量检测组件,将其嵌入到流量分析工具、防火墙或入侵检测系统中。nDPI 提供了简单易用的 API,方便开发者将其集成到现有的系统中。

nDPI 常用于以下场景:

  • 流量监控:企业或服务提供商可以使用 nDPI 监控网络中的流量,了解哪些应用协议占用了带宽,以便做出流量管理决策。
  • 网络安全:nDPI 可以帮助识别异常流量,例如特定协议的未授权使用,这在入侵检测和防火墙中非常有用。
  • 流量优化:通过识别协议类型,管理员可以对流量进行优先级分配或限速,从而优化网络资源使用。

一、源码编译

二、构成

NDPI提供了示例程序,实现对数据包的流量识别。位于工程根目录下的example文件夹下。程序启动包含

  • 配置文件(所有配置项在/doc下的configuration_parameters.md文件内说明)
  • 启动参数(详情见附录1 启动参数说明)
  • 可执行文件 ndpiReader

线程说明

包含两个线程

主线程(main):解析启动参数,解析配置文件内容

工作线程(调用ndpi lib api工作):包处理流程

三、主要接口说明

ndpi_init_detection_module

构造协议解析器,声明解析协议范围,主要用于加载和配置网络协议检测模块。它为协议分析过程做好准备,包括内存分配、配置设置和必要的数据加载。

返回值:struct ndpi_detection_module_struct

入参:struct ndpi_global_context *g_ctx   #入参一般为NULL,

功能说明:

设置ndpi功能接口

自定义日志回调接口

set_ndpi_debug_function(ndpi_str, (ndpi_debug_function_ptr) ndpi_debug_printf);

初始化ip 域名威胁资源

资源为威胁资源,dpi匹配到后会在统计信息分类中描述威胁详情

ndpi_init_ptree_ipv4(ndpi_str->protocols->v4, host_protocol_list);

ndpi_init_ptree_ipv6(ndpi_str, ndpi_str->protocols->v6, host_protocol_list_6);

ndpi_set_protocol_detection_bitmask2

设置位掩码来控制哪些协议应该被检测。通过这种方式,用户可以灵活配置 nDPI 协议检测模块,启用或禁用特定的协议检测

返回值:void

入参: ndpi_detection_module_struct 解析模块   协议位掩码

功能说明:

ndpi_finalize_initialization

完成 nDPI 初始化过程的最后步骤,完成自测

struct ndpi_proto ndpi_workflow_process_packet

包处理接口,

返回值:协议代号

入参:

struct ndpi_workflow * workflow:数据包分析工作流。该结构保存着流量分析的上下文,包括流的信息和状态。

const struct pcap_pkthdr *header:元数据包长

const u_char *packet:元数据

ndpi_risk *flow_risk :检测结果,安全风险评分或风险信息

struct ndpi_flow_info **flow):流相关信息

四、主要数据结构说明

五、应用-怎么在自己的项目中接入NDPI解析功能

相关库文件

libndpiReader.a(nDPI-dev/src/lib)  libndpi.a(nDPI-dev/example) -lm -lpcap

其中前两个在ndpi工程编译获得

相关头文件

nDPI-dev\src\include

将这个文件夹放在自己项目中 Makefile -I 包含这个目录

自定义的文件

ndpi_third.c()附录2c文件              ndpi_third.h附录3头文件

编辑用于适配ndpi处理的c文件和头文件,这两个文件放在项目中。注意在自己的Makefile中加入c的编译

源码中将ndpi 三方库的头文件“#include "ndpi_third.h"”插入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

强壮的向阳花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值