nDPI识别的协议号大全

#ifndef _NDPI_H_
#define _NDPI_H_
typedef enum {
 NDPI_PROTOCOL_FTP_CONTROL=1  ,  //  1 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_MAIL_POP  ,  //  2
 NDPI_PROTOCOL_MAIL_SMTP  ,  //  3
 NDPI_PROTOCOL_MAIL_IMAP  ,  // 4
 NDPI_PROTOCOL_DNS              ,  //  5
 NDPI_PROTOCOL_IPP  ,  //  6
 NDPI_PROTOCOL_HTTP             ,   //  7

NDPI_PROTOCOL_MDNS  ,  //  8
 NDPI_PROTOCOL_NTP  ,  //  9
 NDPI_PROTOCOL_NETBIOS  ,  //  10
 NDPI_PROTOCOL_NFS  ,  //  11
 NDPI_PROTOCOL_SSDP  ,  //  12
 NDPI_PROTOCOL_BGP  ,  //  13
 NDPI_PROTOCOL_SNMP  ,  //  14
 NDPI_PROTOCOL_XDMCP  ,  //  15
 NDPI_PROTOCOL_SMB  ,  //  16
 NDPI_PROTOCOL_SYSLOG  ,  //  17
 NDPI_PROTOCOL_DHCP  ,  //  18
 NDPI_PROTOCOL_POSTGRES  ,  //  19
 NDPI_PROTOCOL_MYSQL  ,  //  20
 NDPI_PROTOCOL_TDS  ,  //  21
 NDPI_PROTOCOL_DIRECT_DOWNLOAD_LINK,//  22
 NDPI_PROTOCOL_MAIL_POPS,  //  23
 NDPI_PROTOCOL_APPLEJUICE,  //  24
 NDPI_PROTOCOL_DIRECTCONNECT,  //  25
 NDPI_PROTOCOL_SOCRATES  ,  //  26
 NDPI_PROTOCOL_WINMX  ,  //  27
 NDPI_PROTOCOL_VMWARE  ,  //  28
 NDPI_PROTOCOL_MAIL_SMTPS,  //  29
 NDPI_PROTOCOL_FILETOPIA,  //  30
 NDPI_PROTOCOL_IMESH  ,  //  31
 NDPI_PROTOCOL_KONTIKI  ,  //  32
 NDPI_PROTOCOL_OPENFT  ,  //  33
 NDPI_PROTOCOL_FASTTRACK,  //  34
 NDPI_PROTOCOL_GNUTELLA  ,  //  35
 NDPI_PROTOCOL_EDONKEY  ,  //  36 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_BITTORRENT,  //  37
 NDPI_PROTOCOL_EPP,  //  38

NDPI_PROTOCOL_XBOX=47,  //  47
 NDPI_PROTOCOL_QQ  ,  //  48
 NDPI_PROTOCOL_MOVE ,  //  49
 NDPI_PROTOCOL_RTSP  ,  //  50
 NDPI_PROTOCOL_MAIL_IMAPS,  //  51
 NDPI_PROTOCOL_ICECAST  ,  //  52
 NDPI_PROTOCOL_PPLIVE  ,  //  53 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_PPSTREAM,  //  54
 NDPI_PROTOCOL_ZATTOO  ,  //  55
 NDPI_PROTOCOL_SHOUTCAST,  //  56
 NDPI_PROTOCOL_SOPCAST  ,  //  57
 NDPI_PROTOCOL_TVANTS  ,  //  58
 NDPI_PROTOCOL_TVUPLAYER,  //  59
 NDPI_PROTOCOL_QQLIVE  ,  //  61
 NDPI_PROTOCOL_THUNDER  ,  //  62
 NDPI_PROTOCOL_SOULSEEK  ,  //  63
 NDPI_PROTOCOL_IRC  ,  //  65
 NDPI_PROTOCOL_AYIYA  ,  //  66
 NDPI_PROTOCOL_UNENCRYPED_JABBER,  //  67
 NDPI_PROTOCOL_MSN  ,  //  68
 NDPI_PROTOCOL_OSCAR  ,  //  69
 NDPI_PROTOCOL_YAHOO  ,  //  70
 NDPI_PROTOCOL_BATTLEFIELD  ,  //  71
 NDPI_PROTOCOL_QUAKE  ,  //  72
 NDPI_PROTOCOL_STEAM  ,  //  74 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_HALFLIFE2,  //  75
 NDPI_PROTOCOL_WORLDOFWARCRAFT,  //  76
 NDPI_PROTOCOL_TELNET  ,  //  77
 NDPI_PROTOCOL_STUN  ,  //  78
NDPI_PROTOCOL_IP_IPSEC         ,  //          79
NDPI_PROTOCOL_IP_GRE             ,  //          80
NDPI_PROTOCOL_IP_ICMP            ,  //          81
NDPI_PROTOCOL_IP_IGMP            ,  //          82
NDPI_PROTOCOL_IP_EGP             ,  //          83
NDPI_PROTOCOL_IP_SCTP            ,  //          84
NDPI_PROTOCOL_IP_OSPF            ,  //          85
NDPI_PROTOCOL_IP_IP_IN_IP        ,  //          86

NDPI_PROTOCOL_RTP  ,  //  87
 NDPI_PROTOCOL_RDP  ,  //  88
 NDPI_PROTOCOL_VNC  ,  //  89
 NDPI_PROTOCOL_PCANYWHERE,  //  90
NDPI_PROTOCOL_SSL    ,  //  91
 NDPI_PROTOCOL_SSH  ,  //  92
 NDPI_PROTOCOL_USENET  ,  //  93
 NDPI_PROTOCOL_MGCP  ,  //  94
 NDPI_PROTOCOL_IAX  ,  //  95
 NDPI_PROTOCOL_TFTP  ,  //  96
 NDPI_PROTOCOL_AFP  ,  //  97
 NDPI_PROTOCOL_STEALTHNET,  //  98
 NDPI_PROTOCOL_AIMINI  ,  //  99
 NDPI_PROTOCOL_SIP  ,  //  100
 NDPI_PROTOCOL_TRUPHONE  ,  //  101
 NDPI_PROTOCOL_DHCPV6  ,  //  103
 NDPI_PROTOCOL_ARMAGETRON,  //  104
 NDPI_PROTOCOL_CROSSFIRE,  //  105
 NDPI_PROTOCOL_DOFUS  ,  //  106
 NDPI_PROTOCOL_FIESTA  ,  //  107
 NDPI_PROTOCOL_FLORENSIA,  //  108
 NDPI_PROTOCOL_GUILDWARS,  //  109
 NDPI_PROTOCOL_KERBEROS  ,  //  111
 NDPI_PROTOCOL_LDAP  ,  //  112
 NDPI_PROTOCOL_MAPLESTORY,  //  113
 NDPI_PROTOCOL_MSSQL  //  114
 NDPI_PROTOCOL_PPTP  ,  //  115
 NDPI_PROTOCOL_WARCRAFT3,  //  116
 NDPI_PROTOCOL_WORLD_OF_KUNG_FU  ,  //     117
 NDPI_PROTOCOL_MEEBO  ,  //  118
 NDPI_PROTOCOL_DROPBOX  ,  //  121
 NDPI_PROTOCOL_SKYPE  ,  //  125
 NDPI_PROTOCOL_DCERPC  ,  //  127
 NDPI_PROTOCOL_NETFLOW  ,  //  128
 NDPI_PROTOCOL_SFLOW  ,  //  129
 NDPI_PROTOCOL_HTTP_CONNECT    ,  //          130
 NDPI_PROTOCOL_HTTP_PROXY       ,  //          131

NDPI_PROTOCOL_CITRIX  ,  //  132
 NDPI_PROTOCOL_SKYFILE_PREPAID  ,  //  136
 NDPI_PROTOCOL_SKYFILE_RUDICS  ,  //  137
 NDPI_PROTOCOL_SKYFILE_POSTPAID  ,  //     138
 NDPI_PROTOCOL_CITRIX_ONLINE  ,  //  139
 NDPI_PROTOCOL_WEBEX  ,  //  141
 NDPI_PROTOCOL_VIBER  ,  //  144
 NDPI_PROTOCOL_RADIUS  ,  //  146
 NDPI_SERVICE_WINDOWS_UPDATE  ,  //  147
 NDPI_PROTOCOL_TEAMVIEWER  ,  //  148 /* xplico.org */
 NDPI_PROTOCOL_LOTUS_NOTES  ,  //  150
 NDPI_PROTOCOL_SAP  ,  //  151
 NDPI_PROTOCOL_GTP  ,  //  152
 NDPI_PROTOCOL_UPNP  ,  //  153
 NDPI_PROTOCOL_LLMNR  ,  //  154
 NDPI_PROTOCOL_REMOTE_SCAN  ,  //  155
 NDPI_PROTOCOL_SPOTIFY  ,  //  156
 NDPI_PROTOCOL_H323  ,  //  158 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_OPENVPN  ,  //  159 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_NOE  ,  //  160 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_CISCOVPN  ,  //     161 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_TEAMSPEAK  ,  //  162 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_TOR  ,  //  163 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_SKINNY  ,  //  164 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_RTCP  ,  //  165 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_RSYNC  ,  //  166 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_ORACLE  ,  //  167 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_CORBA  ,  //  168 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_UBUNTUONE  ,  //      169 /* Remy Mudingay <mudingay@ill.fr> */
 NDPI_PROTOCOL_WHOIS_DAS  ,  //  170
 NDPI_PROTOCOL_COLLECTD  ,  //     171
 NDPI_PROTOCOL_SOCKS5           ,  //          172 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_SOCKS4           ,  //          173 /* Tomasz Bujlow <tomasz@skatnet.dk> */

NDPI_PROTOCOL_RTMP  ,  //  174 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_FTP_DATA  ,  //         175 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_ZMQ                ,  //                       177
 NDPI_PROTOCOL_MEGACO      ,  //  181 /* Gianluca Costa <g.costa@xplico.org> */
 NDPI_PROTOCOL_REDIS              ,  //                       182
 NDPI_PROTOCOL_PANDO  ,  //  183 /* Tomasz Bujlow <tomasz@skatnet.dk> */
 NDPI_PROTOCOL_VHUA               ,  //                       184
 NDPI_PROTOCOL_TELEGRAM  ,  //     185 /* Gianluca Costa <g.costa@xplico.org> */
 NDPI_PROTOCOL_QUIC  ,  //     188 /* Andrea Buscarinu <andrea.buscarinu@gmail.com> - Michele Campus <michelecampus5@gmail.com> */
 NDPI_PROTOCOL_WHATSAPP_VOICE  ,  //     189
 NDPI_PROTOCOL_EAQ,  //
 NDPI_PROTOCOL_STARCRAFT ,  //     213 /* Matteo Bracci <matteobracci1@gmail.com> */
 NDPI_PROTOCOL_TEREDO ,  //         214

NDPI_PROTOCOL_UNKNOWN
} L7ProtocolId;
#endif

1. 介绍

nDPI是一个从OpenDPI发展而来的DPI库,现在由ntop组织负责维护。

为了给你提供一个跨平台DPI的体验,nDPI除了支持Unix平台,还支持Windows(和Mac)。为了使nDPI更加适合应用于流量监控,我们将会持续进行优化,比如一旦发现存在对网络流量监控非必须的、却拖慢了DPI引擎的功能时,可以执行关闭。

不管使用了哪个端口,nDPI都可以探测到实际的应用层协议。这意味着既可以探测运行在非标准端口上的协议(e.g探测运行在非80端口上的http流量),又可以探测运行在一个标准端口上的其他协议(e.g探测运行在80端口上的Skype流量)。这是因为现在端口跟协议关联的概念已经被打破。

在过去的几个月里,我们已经为nDPI增加了以下多个功能:

一个名为ndpiReader的增强型demo

可以被编译进kernel成为一个模块,使其更加高效

从各方面提升了识别速度,目前nDPI在这方面已经远远超过了前代的OpenDPI

新增了大量的协议支持(目前为止已经支持超过180种协议),覆盖范围从商业类协议(如SAP和Citrix)到桌面协议(如Dropbox和Spotify)

可以定义基于端口(端口范围)的协议探测,丰富了传统的仅仅基于端口的探测手段

为了使nDPI支持探测加密连接,我们增加一个用于SSL的解码器(同时支持客户端和服务端),用以找出那些使用了加密证书的协议。这使我们可以识别那些以前无法探测到的协议,比如Citrix和AppleiCloud等

通过基于额外的一些字符串匹配方式,我们可以支持识别一些常见的应用子协议

2. 代码下载

在你搭建ntop和nProbe的过程中nDPI就会自动被下载。也可以作为一个独立的DPI库来使用,源代码可以通过gitclone https://github.com/ntop/nDPI.git下载。

或者:https://github.com/ntop/nDPI/archive/2.4.tar.gz

3. nDPI库安装

其他

安装方式跟平台以及发行版相关,这里列举了一些:Ubuntu/Debian #apt-get install build-essential#apt-get install git autoconf automake autogen libpcap-dev libtoolFedora/CentOS #yum groupinstall "Development tools"#yum install git autoconf automake autogen libpcap-devel libtoolMacOSX(using http://brew.sh) # brew install autoconf automake libtool gitFreeBSD #pkg install autoconf automake libtool gmake git

依赖环境:

libpcap
autotools
libtool
gawk
gcc
build-essential

安装:

cd nDPI
./autogen.sh
./configure
make
cd example
./ndpiReader --help

Version2.0版本在工程目录下执行make时,默认就编译了example目录下的ndpiReader

4. ndpiReader的命令行选项

以下列出了该demo程序的有效选项以及对应的简单解释

$./ndpiReader -hndpiReader-i <file|device> [-f <filter>][-s <duration>][-m<duration>][-p<protos>][-l <loops> [-q][-d][-h][-t][-v <level>][-n<threads>] [-w <file>] [-j <file>]Usage:-i<file.pcap|device>                   |指定一个需要被识别的pcap文件/文件列表,或者需要被嗅探的|设备接口/接口列表(文件列表或接口列表使用","作为分隔符)-f<BPF filter>                            |指定一条BPF规则的过滤字串-s<duration>                             |最大的嗅探时间(显然只在嗅探接口时生效)-m<duration>                            | pcap文件分段解析超时时间(显然只在解析pcap文件时生效)-p<file>.protos                          |指定一个自定义的协议识别配置文件(eg.protos.txt)-l<num loops>                           |指定循环执行嗅探的次数(仅用于测试)-n<num threads>                       |指定线程数量,缺省跟设备接口数量对应|如果传入的是pcap文件时固定使用单线程-j<file.json>                               |指定一个输出包内容的json文件-g<id:id...>                                |指定线程-CPU亲和关系映射表-d                                              |禁止协议猜测功能-q                                              |安静模式,意味着不打印信息-t                                               |解析GTP隧道协议-r                                               |打印 nDPI版本和git版本-w<path>                                  |指定测试信息的输出文件-h                                              | help信息-v<1|2|3>                                  |按级别进一步打印包的详细信息,分为1、2、3级

5. 协议文件

通过基于字符串的匹配方式,nDPI可以支持识别应用层的子协议。这是因为存在很多像AppleiCloud/iMessage,WhatsApp等新出现的子协议,以及其他使用http(s)的协议,这些协议可以通过解码主机SSL证书或http头中的"Host"字段而被识别。因此我们决定嵌入一个有效字符串匹配库到nDPI中,这个库基于AC自动机算法来匹配成百上千的有效子串(i.e运行在商业硬件上的nDPI可以处理超过10Gbit的流量)

通过使用一个协议文件,你可以在运行时设置自定义的子协议,这个协议文件的格式如下:

# Subprotocols

# Format:

# host:"<value>",host:"<value>",.....@<subproto>

host:"googlesyndication.com"@Google

host:"venere.com"@Venere

host:"kataweb.it",host:"repubblica.it"@Repubblica

host:"ntop"@ntop

你还可以配置基于IP的子协议,格式如下:

# IP based Subprotocols

# Format:

# ip:<value>,ip:<value>,.....@<subproto>

ip:213.75.170.11@CustomProtocol

你还可以配置基于端口的子协议,格式如下:

# Format:

# <tcp|udp>:<port>,<tcp|udp>:<port>,.....@<proto>

tcp:81,tcp:8181@HTTP

udp:5061-5062@SIP

tcp:860,udp:860,tcp:3260,udp:3260@iSCSI

tcp:3000@ntop

只需要在运行ndpiReader时加上使用“-p”选项,就可以测试你自定义的配置协议了。当然你也可以通过在你的程序中调用nDPI的APIndpi_load_protocols_file()来测试你的配置。

6 .示例

这节中我们将展示一些demo程序ndpiReader的使用范例。

6.1现场捕获模式

下面这个例子展示了ndpiReader的现场捕获模式,其中“-i”选项用来指定需要进行嗅探的设备接口,“-s”选项指定了嗅探的时间。

$sudo ./ndpiReader -i eth0 -s 20-----------------------------------------------------------*NOTE: This is demo app to show *some* nDPI features.*In this demo we have implemented only some basic features*just to show you what you can do with the library. Feel*free to extend it and send us the patches for inclusion------------------------------------------------------------UsingnDPI (2.0.0-838-6607c33) [1 thread(s)]Capturinglive traffic from device eth0...Capturingtraffic up to 5 secondsRunningthread 0...nDPIMemory statistics:nDPIMemory (once): 93.13 KBFlowMemory (per flow): 1.25 KBActualMemory: 1.49 MBPeakMemory: 1.49 MBTrafficstatistics:Ethernetbytes: 80367 (includes ethernet CRC/IFC/trailer)Discardedbytes: 1200IPpackets: 236 of 256 packets totalIPbytes: 74703 (avg pkt size 291 bytes)Uniqueflows: 165TCPPackets: 0UDPPackets: 230VLANPackets: 4MPLSPackets: 0PPPoEPackets: 0FragmentedPackets: 0MaxPacket size: 328PacketLen < 64: 28PacketLen 64-128: 9PacketLen 128-256: 6PacketLen 256-1024: 193PacketLen 1024-1500: 0PacketLen > 1500: 0nDPIthroughput: 47.22 pps / 125.62 Kb/secAnalysisbegin: 01/Jan/1970 08:00:00Analysisend: 01/Jan/1970 08:00:00Trafficthroughput: 47.22 pps / 125.62 Kb/secTrafficduration: 4.998 secGuessedflow protos: 1Detectedprotocols:Unknown packets: 194 bytes: 69976 flows: 143NetBIOS packets: 19 bytes: 2116 flows: 8SSDP packets: 2 bytes: 416 flows: 2IGMP packets: 2 bytes: 120 flows: 2ICMPV6 packets: 4 bytes: 344 flows: 1DHCPV6 packets: 3 bytes: 455 flows: 3LLMNR packets: 10 bytes: 760 flows: 5Cloudflare packets: 2 bytes: 516 flows: 1Protocolstatistics:Acceptable 4727 bytesUnrated 69976 bytes

6.2文件捕获模式

最简单的创建一个pcap文件的方法是使用tcpdump命令,就像下面这个例子一项:

$sudo tcpdump -i eth0 -w /var/tmp/capture.pcap -vtcpdump:listening on eth0, link-type EN10MB (Ethernet), capture size 262144bytes^C248packets captured252packets received by filter0packets dropped by kernel

一旦pcap文件被创建,你就可以像下面这样运行ndpiReader:

$sudo ./ndpiReader -i /var/tmp/capture.pcap-----------------------------------------------------------*NOTE: This is demo app to show *some* nDPI features.*In this demo we have implemented only some basic features*just to show you what you can do with the library. Feel*free to extend it and send us the patches for inclusion------------------------------------------------------------UsingnDPI (2.0.0-838-6607c33) [1 thread(s)]Capturinglive traffic from device eth0...Capturingtraffic up to 5 secondsRunningthread 0...nDPIMemory statistics:nDPIMemory (once): 93.13 KBFlowMemory (per flow): 1.25 KBActualMemory: 1.49 MBPeakMemory: 1.49 MBTrafficstatistics:Ethernetbytes: 80650 (includes ethernet CRC/IFC/trailer)Discardedbytes: 1020IPpackets: 231 of 248 packets totalIPbytes: 75106 (avg pkt size 302 bytes)Uniqueflows: 164TCPPackets: 2UDPPackets: 227VLANPackets: 1MPLSPackets: 0PPPoEPackets: 0FragmentedPackets: 0MaxPacket size: 328PacketLen < 64: 19PacketLen 64-128: 6PacketLen 128-256: 13PacketLen 256-1024: 193PacketLen 1024-1500: 0PacketLen > 1500: 0nDPIthroughput: 155.03 K pps / 412.96 Mb/secAnalysisbegin: 14/Dec/2017 15:37:39Analysisend: 14/Dec/2017 15:37:44Trafficthroughput: 49.59 pps / 135.25 Kb/secTrafficduration: 4.659 secGuessedflow protos: 0Detectedprotocols:Unknown packets: 200 bytes: 71136 flows: 146MDNS packets: 6 bytes: 1197 flows: 3NetBIOS packets: 6 bytes: 552 flows: 3SSDP packets: 3 bytes: 624 flows: 2ICMPV6 packets: 1 bytes: 86 flows: 1DHCPV6 packets: 5 bytes: 761 flows: 5LLMNR packets: 10 bytes: 750 flows: 4Protocolstatistics:Acceptable 3970 bytesUnrated 71136 bytes

6.3协议文件

为了阐述清楚协议文件的作用,我们现在就来讲解如何识别ntop.org的流量。

可以像下面这样编辑protos.txt.

$echo 'host:"ntop.org"@nTop' > protos.txt

修改完协议文件之后,你就可以像下面这样运行ndpiReader:

$sudo ./ndpiReader -i eth0 -s 30 -p ./protos.txt

7.API nDPI

这节中高亮的就是nDPI的API。

这节中将ndpiReader作为一个基本范例来展示如何初始化nDPI库。首先需要一个编译完成的库以及一个合适的Makefile(i.e就像ndpiReader的Makefile那样)

为了在你的程序中使用nDPI的API,你除了要include自己的头文件外,还需要添加类似下面这一行:

#include<ndpi/ndpi_main.h>

库可以按照下面的顺序执行初始化:

[1].创建并初始化一个nDPI核心库探测模块

structndpi_detection_module_struct * module =ndpi_init_detection_module();

备注:本API格式在Version2.0版本中较之前版本差异很大。

这个探测模块中维护了所有支持的协议。

本API只是注册了所有支持的协议,但并未使能其中任何一个协议

[2].ndpiReader接下来通过一些宏使能了探测模块中的所有协议(显然你可以根据自己的需求来决定使能哪些协议)

NDPI_BITMASK_SET_ALL(all);

ndpi_set_protocol_detection_bitmask2(

structndpi_detection_module_struct *ndpi_struct,

constNDPI_PROTOCOL_BITMASK * dbm);

参数含义如下:

@ndpi_struct指向当前操作的探测模块

@dbm调用者实际通过该集合来控制实际需要应用的协议,只有该字段中被置1的对应协议,其协议分析器才真正允许被加载

备注:本API的作用就是使能一个已经初始化的nDPI核心库探测模块中的协议

[3].为了导入已经存在的协议文件,你还必须调用下面的API

ndpi_load_protocols_file(structndpi_detection_module_struct *ndpi_mod, char* path);

参数含义如下:

@ndpi_mod指向当前操作的探测模块

@path协议文件的路径

[4].一旦从你的pcap文件或设备接口上捕获到了数据流,就可以调用下面的API来进行分析

ndpi_protocolndpi_detection_process_packet(

structndpi_detection_module_struct *ndpi_struct,

structndpi_flow_struct *flow,

constunsigned char *packet,

constunsigned short packetlen,

constu_int64_t current_tick_l,

structndpi_id_struct *src,

structndpi_id_struct *dst)

参数含义如下:

@ndpi_struct指向传入包所属的探测模块

@ndpi_flow指向传入包所属的数据流

@packet指向传入包的IP头

@packetlen IP包的长度

@current_tick_l收到该IP包的时间(ms)

@src指向源用户状态机

@dst指向目的用户状态机

备注:本API是ndpi核心库处理收到包的入口,通过分析传入的IP包,完成数据流的识别,最后返回是别结果.

如果想了解更深入的信息,我们建议你阅读下面这些文件:

nDPI/example/pcapReader.c,

nDPI/src/include/ndpi_structs.h,

nDPI/src/include/ndpi_public_functions.h

nDPI/src/ndpi_main.c.

具体的协议解析器文件都被放在nDPI/src/protocols文件夹中。

nDPI流量协议分析(应用软件识别)相关推荐

  1. ndpi 流量协议分析

    目录 1.nDPI介绍 2.nDPI库 3.示例 4.API nDPI 5.开发nDPI自定义协 1.nDPI介绍 nDPI是一个基于OpenDPI的DPI库,目前由ntop维护. 为了给您提供一个跨 ...

  2. 网络协议分析与仿真课程设计报告:网络流量分析与协议模拟

    公众号:CS阿吉 网络协议分析与仿真课程设计报告  题  目:网络流量分析与协议模拟 专业名称:         网络工程 班    级: 学生姓名:           阿吉 学号(8位): 指导教 ...

  3. 【智能路由器】ndpi深度报文分析之协议分析器

    [智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 本篇博客讲述ndpi已经实现的QQ协议分析器的实现 以及 ...

  4. 网络安全协议分析-wireshark流量监控(未完)

    文章目录 TCP的六个标志 一.ARP欺骗 二.SYN半连接扫描. 三.FTP爆破 HTTP抓包修改 DNS与DHCP协议分析 DNS DHCP(饿死攻击) DDOS攻击 TCP的六个标志 TCP的六 ...

  5. MISC:流量包取证(pcap文件修复、协议分析、数据提取)

    文章目录 1.流量包修复 2.协议分析 2.1 wireshark基本操作 2.2 一些例题(各种协议) 3.数据提取 1.流量包修复 这个方向的考点较少 当我们用 wireshark 打开流量包时, ...

  6. TLS握手协议分析与理解——某HTTPS请求流量包分析

    https://xz.aliyun.com/t/1039 HTTPS简介 HTTPS,是一种网络安全传输协议,在HTTP的基础上利用SSL/TLS来对数据包进行加密,以提供对网络服务器的身份认证,保护 ...

  7. 【智能路由器】ndpi深度报文分析源码框架

    [智能路由器]系列文章连接 http://blog.csdn.net/u012819339/article/category/5803489 某些需求可能会要求路由能精确的分析出流经路由的流量是属于什 ...

  8. gzip格式分析与识别

    " 介绍gzip格式,识别gzip压缩的数据流量." 在协议分析过程中,经常会发现gzip压缩的数据,例如在HTTP协议中,在HTTP头中会标示,内容编码为gzip.DEFLATE ...

  9. 五款常用协议分析处理工具推荐

    工欲善其事,必先利其器,一款好的工具,能取到事半功倍的效果. 进行协议分析,好的辅助工具必不可少,本文推荐五款最常用且易用的协议分析工具给大家,包括两款综合抓包及分析工具,一款协议重放工具,一款pca ...

最新文章

  1. MySQL图形处理软件Navicat字体配置(乱码解决)
  2. 编写 Spring MVC 控制器的 14 个技巧
  3. 纠结pytorch, tensorflow, keras 一个月之后,我自己创造了一个神经网络框架
  4. 什么是神经网络在object detection的应用?cascade classifier,卷积神经网络,迁移学习
  5. python 占位符_5分钟让你用Python作出最精美的Powerpoint
  6. 04 | 深入浅出索引(上)
  7. ue4sky时间_UE4 SkyLight RealTimeCapture浅析
  8. oracle表空间如何压缩,Oracle里表空间的压缩
  9. STL工作笔记-map中关于erase返回值的操作
  10. 资源下载| 深度学习Pytoch1.0如何玩?这一门含900页ppt和代码实例的深度学习课程带你飞
  11. 使用Css隐藏超出容器宽度的文字,溢出部分用“...”表示
  12. 学好python工资一般多少-参加Python培训就业薪资是多少?老男孩学Python好吗?
  13. 红旗liuxe5.0下vmware tools安装记录
  14. 《自卑与超越》读书笔记优秀范文3200字
  15. httpclient使用代理ip
  16. 详细解释JavaScript中三元表达式
  17. 再谈10000小时,三板斧破四困境
  18. B站到处投资,股价暴跌两位数
  19. Javaweb——监听器
  20. elasticsearch 性能测试

热门文章

  1. 复现Cell附图 |类器官的单细胞分析
  2. python购物车典例_Python实现的购物车功能示例
  3. 信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂
  4. 普通背包问题-枚举算法(《算法竞赛宝典》 第二部 基础算法艺术)
  5. lda数学八卦_【技术博客】文本挖掘之LDA主题模型
  6. Spring Boot笔记-解决前后端分离在开发时的跨域问题
  7. Wireshark文档阅读笔记-User Datagram Protocol(UDP)
  8. MySQL工作笔记-建表时为Float型数据确定精度,查询时精度显示,多列之和查询
  9. 系统架构工作笔记-数据展示进程与读取数据进程分离,实现低耦合(展示软件可适用任意厂家数据库)
  10. 2.4一元多项式的表示及相加