论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

基于windows入侵检测系统的研究与设计--检测模块设计(论文+程序)

具体的数据包捕获流程图如下:

内容来自www.paper51.com

图4-2 数据包捕获流程图 paper51.com

数据包捕获核心代码及主要函数说明如下:

http://www.paper51.com

void DecodeProcess_callback(u_char*argument,const struct pcap_pkthdr *packet_header,const  u_char *pkt);

内容来自论文无忧网 www.paper51.com

      pcap_t *pcap_handle;   /*Libpcap句柄*/ copyright paper51.com

      charerror_content[PCAP_ERRBUF_SIZE]; /*存储错误内容 */ paper51.com

      char*net_interface;   /*网络接口*/

内容来自论文无忧网 www.paper51.com

      structbpf_program bpf_filter;  /*BPF过滤规则*/ copyright paper51.com

      charbpf_filter_string[]=""; 内容来自www.paper51.com

    /*过滤规则字符串,此时为空,表示捕获所有的网络数据包,而不是捕获特定的网络数据包*/ 内容来自论文无忧网 www.paper51.com

      unsigned intnet_mask; /*网络掩码*/ 内容来自www.paper51.com

      unsigned intnet_ip;   /*网络地址*/ 内容来自www.paper51.com

      net_interface=pcap_lookupdev(error_content);

paper51.com

/*获得可用的网络接口*/

copyright paper51.com

      pcap_lookupnet(net_interface,&net_ip,&net_mask,error_content);

paper51.com

/*获得地址*/ paper51.com

      pcap_handle=pcap_open_live(net_interface,BUFSIZ,1,1,error_content); http://www.paper51.com

/*打开网络接口*/ 内容来自论文无忧网 www.paper51.com

      pcap_compile(pcap_handle,&bpf_filter,bpf_filter_string,0,net_ip); 内容来自www.paper51.com

/*编译BPF过滤规则*/

http://www.paper51.com

      pcap_setfilter(pcap_handle,&bpf_filter);

内容来自www.paper51.com

   /*设置过滤规则*/ copyright paper51.com

      if(pcap_datalink(pcap_handle)!=DLT_EN10MB)

copyright paper51.com

      return;

内容来自论文无忧网 www.paper51.com

/*由于在解码的代码中只有以太网,所以这里检测链路是否为以太网,否,则退出*/

内容来自www.paper51.com

      pcap_loop(pcap_handle,-1,DecodeProcess_callback,NULL);

copyright paper51.com

    /*注册回调函数,循环捕获网络数据包,然后调用回调函数对捕获的网络数据包进行分析*/ http://www.paper51.com

      pcap_close (pcap_handle); http://www.paper51.com

本段代码的功能是循环捕获以太网数据包,其中调用了网络接口函数、规则函数和数据包捕获函数。主要的函数功能说明如下: 内容来自www.paper51.com

(1)选择监听网络接口 内容来自论文无忧网 www.paper51.com

函数原型:Char * pcap_lookupdev(char*errbuf) 内容来自论文无忧网 www.paper51.com

功能:用于寻找本机可用的网络接口,调用成功就返回指向网络接口的指针。其中errbuf为调用失败时返回的错误信息字符串。 paper51.com

(2)建立监听会话 内容来自www.paper51.com

函数原型: pcap_open_live (char*device,intsnaplen,int promis,int to_ms,char*ebuf)

copyright paper51.com

功能:用于获取一个捕获器描述符,调用成功就返回监听会话句柄。其中device为指向网络接口的指针,snaplen定义了监听程序所所捕获的最大字节数,promisc定义了是否将网卡设置为混杂模式,to_ms表示度操作等待的毫秒时间,ebuf为函数调用失败返回的错误信息字符串。

内容来自论文无忧网 www.paper51.com

(3)编译过滤器

内容来自论文无忧网 www.paper51.com

函数原型:int pcap_compile(pcap_t* p,struct bpf_progrm * fp,char*str,int optimize,bpf_u_int32 netmask)

http://www.paper51.com

功能:将字符串形式的过滤要求编译成二进制形式存储在bpf_program结构中。从而实现通过设置过滤器来捕获感兴趣的数据包。其中,p为监听会话句柄指针,fp为指向结构bpf_program的指针,用于存放编译后的BPF程序,str为tcpdump表达式字符串指针,optimize为优化标志,netmask为子网掩码。

内容来自www.paper51.com

(4)设置过滤器: 内容来自论文无忧网 www.paper51.com

函数原型:char *pcap_setfilter(pcap_t*p,struct bpf_program*fp)

内容来自论文无忧网 www.paper51.com

功能:通过调用本函数,设置内核过滤器使得编译了的过滤生效。其中,p为指向监听会话句柄的指针,fp为指向结构bpf_program的指针,一般为函数pcap_comple编译后的结果,也可以用手工编BPF代码。 copyright paper51.com

(5)捕获并处理数据包:

http://www.paper51.com

函数原型:int pcap_loop(pcap_t*,int cnt,pcap_handler callback,u_char*user)

http://www.paper51.com

功能:捕获并处理数据包。其中p为指向监听会话句柄的指针,cnt为指向函数返回前所处理数据包的最大值,值为负时表示处理缓冲区所有的数据包,为0时处理所有的数据包,直到产生读取到EOF错误为止,callback参数指定带有3个参数的回调函数,user为用户传递给回调函数的指针,通常设置为NULL。 内容来自www.paper51.com

(6)用户自定义的回调函数

内容来自www.paper51.com

函数原型:void callback(u_char*args,const struct pcap_pkthdr* header,chonst u_char* packet) copyright paper51.com

功能:在pcao_loop函数没捕获到一个数据包后被自动调用,用于对捕获到的数据包进行用户自定义的处理。其中,args为从pcap_loop函数传递过来的u_char指针,pheader为指向pcap_pkthdr结构指针,packet是指向所有捕获的数据包的指针。 内容来自论文无忧网 www.paper51.com

(7)关闭监听会话句柄

paper51.com

函数原型:void pcap_close(pcap_*p)

paper51.com

功能:关闭监听会话句柄,并释放资源。 copyright paper51.com

通过Winpcap函数库,我们得到了网络中传输的原始网络数据包,为了从中得到有用的数据信息,接下来就要对原始数据包进行分析,也就是进行网络协议的解析工作。

paper51.com

4.5 网络数据包分析模块的实现

paper51.com

当完成对数据包的捕获之后,接下来要完成的是数据包的分析过程。对所有网络数据包的分析,必须从链路层开始分析,然后分析网络层,再分析传输层,最后分析应用层。这是由于捕获到的数据包是一个数据帧,其中最外层的协议是链路层协议,然后从里到外分别额是网络层、传输层和应用层。

copyright paper51.com

本系统目前上未实现对应用层协议的分析,所以数据包的分析流程图如图4-3所示:

http://www.paper51.com

内容来自论文无忧网 www.paper51.com

图4-3 数据包分析流程图

http://www.paper51.com

从流程图可以看到,在捕获了数据包之后,就对网络数据包进行分析,本系统对链路层只分析了以太网协议。根据以太网协议内容的分析结果,判断以太网类型的值:如果是0X0806,表示协议为ARP协议,则分析ARP协议;如果是0X0800,表示协议为IP协议,则分析IP协议;如果是0X8035,表示协议是RARP协议,则分析RARP协议。在分析IP协议时,根据协议类型的值判断传输层协议类型:如果IP协议类型字段的值是6,表示协议为TCP协议,则分析TCP协议;如果IP协议类型字段的值是17,表示协议为UDP协议,则分析UDP协议;如果IP协议类型字段的值是1,表示协议为ICMP协议,则分析ICMP协议。

内容来自www.paper51.com

在具体的实现过程中,当数据包分析完成后,将分析的结果保存到DataPacket数据结构中。Data Packet的结构如下: copyright paper51.com

typedefstruct  Data_Packet

http://www.paper51.com

{ paper51.com

      structpcap_pkthdr *pkth;

copyright paper51.com

      u_char *pkt;    paper51.com

      EtherHdr *eh; 内容来自论文无忧网 www.paper51.com

      ARPHdr  *ah; paper51.com

      IPHdr   *iph;

copyright paper51.com

      TCPHdr  *tcph;

copyright paper51.com

      UDPHdr  *udph;

paper51.com

      ICMPHdr *icmph;

内容来自论文无忧网 www.paper51.com

      u_char *data; paper51.com

      u_int16_tdatasize;

内容来自www.paper51.com

      u_int8_tfrag_flag;

内容来自论文无忧网 www.paper51.com

      u_int16_tfrag_offset;

http://www.paper51.com

      u_char mf; paper51.com

      u_char df; http://www.paper51.com

      u_char rf; copyright paper51.com

      u_int16_t sp; paper51.com

      u_int16_t dp;

http://www.paper51.com

      u_int32_t sip; copyright paper51.com

      u_int32_t dip;

内容来自www.paper51.com

      int caplen; copyright paper51.com

      Optionsip_options[40];

内容来自www.paper51.com

      intip_option_count;

paper51.com

      Optionstcp_options[40];

内容来自www.paper51.com

      inttcp_option_count; http://www.paper51.com

}Packet; paper51.com

协议的解析是围绕核心数据结构Data Packet展开的,其中定义有进行协议解析所需的数据结构和保存结果信息的数据结构。通过把解码后的协议按其协议放入Data Packet结构对应的数据成员中,提供给之后的响应模块的使用。其他重要的数据结构还有以太网首部数据结构、IP数据包首部数据结构等,核心代码如下: http://www.paper51.com

1.以太网首部数据结构 http://www.paper51.com

Typedefstruct Ether_Header

内容来自www.paper51.com

{ paper51.com

u_int8_tether_dhost [6];

paper51.com

u_int8_tether_shost [6]; 

copyright paper51.com

u_int16_tether_type;    

paper51.com

}EtherHdr; 内容来自www.paper51.com

------分隔线----------------------------
联系方式