基于网络数据包分析技术的研究_第1页
基于网络数据包分析技术的研究_第2页
基于网络数据包分析技术的研究_第3页
基于网络数据包分析技术的研究_第4页
基于网络数据包分析技术的研究_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计题目基于网络数据包分析技术的研究基于网络数据包分析技术的研究摘要随着网络技术的迅速发展和人们需求的不断提高,网络安全问题越来越严重,造成的损失非常巨大,为解决网络安全问题而投入的资金也越来越多。本文通过使用ETHEREAL捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议数据进行解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据ETHEREAL的工作原理,使用了WINDOWS平台下开源的网络数据包捕获开发库WINPCAP,用VISUALC编写一个简单的数据包捕获与分析软件。关键词网络数据包网络协议分析还原BASEDONTHESTUDYOFNETWORKPACKETANALYSISTECHNOLOGYAUTHORSHANXIAOQIANADVISORCHENXINFANGABSTRACTWITHTHERAPIDDEVELOPMENTOFNETWORKTECHNOLOGYANDTHEINCREASINGDEMANDOFPEOPLE,THENETWORKSECURITYPROBLEMISBECOMINGMOREANDMORESERIOUS,WITHHUGELOSSES,THEFUNDSINPUTTOSOLVETHENETWORKSECURITYAREINCREASINGLYUSINGETHEREALTOCAPTUREREALTIMENETWORKDATAPACKET,UNPACKINGANALYSISDATAPACKETSINTCP/IPEACHLAYERDATAACCORDINGTOANALYSESTHEPROCESSOFNETWORKPROTOCOL,NETWORKRESEARCHERSTOUNDERSTNDTHEDATAPACKETTOAPERCEPTUALLEVEL,PROVIDETHETECHNICALMEANSFORTHENETWORKPROTOCOLANALYSISFINALLY,FINALLY,ACCORDINGTOTHEWORKINGPRINCIPLEOFETHEREAL,USINGWINPCAPOFLIBRARYNETWORKDATAPACKETCAPTUREDEVELOPINPLATFORMOFWINDOWSOPENSOURCE,WITHVISUALCTOWRITEASIMPLEDATAPACKETCAPTUREANDANALYSISSOFTWAREKEYWORDSNETWORKPACKETSNETWORKPROTOCOLANALYSISREDUCTION目录引言11网络的基本概念211OSI网络参考模型212TCP/IP网络42网络协议分析技术521软件ETHEREAL简介522利用ETHEREAL捕获数据包523利用ETHEREAL对捕获数据包进行分析73网络协议分析程序的设计1831应用技术1832设计思路2433主要函数说明264网络协议分析程序的实现3041界面制作3042开发代码335程序的测试5451系统的测试5452测试用例和结果5453系统实现5654系统性能分析58结论58致谢59参考文献60引言网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。它是人们信息交流使用的一个工具。作为工具,它一定会越来越好用的。功能会越来越多,内容也会越来越丰富。但如果没有限制,就会给用户和社会带来很多不良影响。所以对网络进行合理的监控就非常重要。网络数据的分析是把先捕获网络中传输的数据包,通过网络协议进行解析,再还原数据包的信息来监控网络传输数据,从而了解网络的实际运行情况。通过这些网络信息就可以了解故障发生的地点及其原因。本文的设计目的是完成基于WINDOWS平台的网络数据包分析系统,它利用WINSOCK实现网络数据包的捕捉,并且结合相关的网络协议对数据包进行分析、解析、还原来实现对网络故障进行分析等功能。论文第一章介绍了网络的基本概念,介绍网络参考模型、TCP/IP协议、TCP/IP网络;第二章介绍了ETHREAL软件的安装、启动,并用它进行数据包捕获和分析的实验;第三章介绍了根据ETHEREAL的工作原理,用VISUALC编写一个简单的数据包捕获与分析软件网络探测程序的系统设计、实现和工作流程;第四章介绍了网络探测程序的一些测试结果。1网络的基本概念11OSI网络参考模型OSI(OPENSYSTEMINTERCONNECT)开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。国际标准化组织ISO发布的最著名的标准是ISO/IIEC7498,又称为X200协议。这个结构把网络互连的七层框架给定义了,并且规定每一层的功能,实现了开放系统环境中的互连性、互操作性和应用的可移植性1。OSI的服务定义不涉及接口是怎么实现的,它详细说明了各层所提供的服务。某一层的服务它通过接口提供给更高一层。并且各种服务定义也把层与层之间的接口和各层的所使用的原语定义了。因为协议的规程说明很有最严格的约束,所以OSI标准中的各种协议把应当发送怎样的控制信息,还有用怎样的过程来解释这个控制信息给定义了。ISO/OSI参考模型只用来协调进程间通信标准的制定。在OSI范围内,各种的协议只有在被实现的并且与OSI的协议相一致,才能互连。所以在网络刚出现的时,虽然很多公司都拥有了网络技术,并且公司内部的计算机已经可以相互连接。但是却不能与其它公司连接。这是因为对方不能理解计算机之间相互传输的信息,没有一个统一的规范,所以不能互联。OSI模型如表11,12所示表11OSI模型应用层SMB,NCP,TELNET,HTTP,FTP,SMTP表示层JPG,SMBNEGOTIATION,GIF,MPEG,ASN1会话层NETBIOS,TCP3WAYHANDSHAKE传输层TCP,SPX网络层IP,IPX,DDP数据链路层ETHERNET,FRAMERELAY,TOKENRING,FDDI物理层X21,RS232,DSI,DS3OSI模型用途还是很广泛。比如交换机、路由器、集线器等网络设备的设计都是参照OSI模型设计的。表12各个层的意义物理层PHYSICALLAYER是OSI模型的最低的一层,它利用传输介质为数据链路层提供物理连接,也就是物理层确保原始数据可以使各种物理媒体传输包括信号线的功能、数据传输速率、物理连接器规格、“0”和“1”信号的电平表示及其相关的属性等数据链路层DATALINKLAYER是OSI模型的第二层,位于物理层和网络层之间,解决两个相邻结点之间的通信传输,为网络层提供服务的数据链路层还可以协调收发双方的进行流量控制,以防止冲器溢出及线路阻塞网络层NETWORKLAYER是OSI模型的第三层,为传输层提供服务的。网络层的主要作用是通过网络连接交换传输层发出的实体数据。交换过程中,选择合适的传输路径,解决网络中出现的局部拥挤或全面的阻塞。此外,网络层还应有记账功能,一边通过网络中交换的分组或字符数、位数收取费用。当传输的数据跨越一个网络边界时,网络层根据不同的分组长度、寻址方式、通信协议进行交换,使得异构网络能够互相通信传输层TRANSPORTLAYER是OSI模型中最重要,最关键的一层,是唯一负责总体的数据传输和数据控制的一层。传输层提供端到端的交换数据的机制,检查分组编号与次序。传输层对其上三层如会话层等,提供可靠的传输服务,对网络层提供可靠的目的地站点信息主要功能为端到端连接提供传输服务这种传输服务分为可靠和不可靠的,其中TCP是典型的可靠传输,而UDP则是不可靠传输为端到端连接提供流量控制,差错控制,服务质量等管理服务会话层SESSIONLAYER是OSI模型的第五层,为两个会话层实体进行会话的管理服务表示层PRESENTATIONLAYER是OSI模型的第六层,处理流经结点的数据编码的表示方式,使一个系统应用层可以读出另一系统的应用层的发出信息。表示层可提供的转换功能有数据压缩和加密应用层APPLICATIONLAYER是OSI参考模型的最高层,也是网络和用户的接口。它通过应用程序来完成网络用户的需求,如收发电子邮件、文件传输等等12TCP/IP网络网络协议2即网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议。网络上的所有通信设备都是由它规范的,它是一种网络通信协议,特别是两个主机之间数据的往来格式和传送方式。普通用户虽然不了解网络协议的整个结构,但是知道IP的地址格式,就可网络通信。总结TCP/IP结构对应OSI如图13。表13TCP/IP结构对应OSIOSI中的层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,TELNET等等表示层翻译、加密、压缩没有协议会话层对话控制、建立同步点(续传)没有协议传输层端口寻址、分段重组、流量、差错控制TCP,UDP网络层逻辑寻址、路由选择IP,ICMP,OSPF,EIGRP,IGMP,RIP,ARP,RARP数据链路层成帧、物理寻址、流量,差错,接入控制SLIP,CSLIP,PPP,MTU物理层设置网络拓扑结构、比特传输、位同步ISO2110,IEEE802,IEEE8022网络层中的协议主要有IP、IGMP、ICMP等,因为IP协议模块被包含了,所以是所有基于TCP/IP协议网络的核心,在网络层中,IP模块完成大部分功能,ICMP和IGMP以及其他支持IP的协议帮助IP完成特定的任务3。传输层上的主要协议是TCP和UDP,正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据,两个协议就是它管理这些数据的两种方式TCP是一个基于连接的协议;UDP则是面向无连接服务的管理方式的协议3。2网络协议分析技术21软件ETHEREAL简介ETHEREAL4(ETHEREALANETWORKPACKETSNIFFINGTOOL)是当前较为流行的一种计算机网络调试和数据包嗅探软件,ETHEREAL基本和TCPDUMP一样,但ETHEREAL还具有设计完美的GUI,许多分类信息和过滤选项,用户通过ETHEREAL,同时将网卡是混合模式,可以了解到所有通信流量,ETHEREAL应用于故障修复、分析、软件和协议开发以及教育领域,用户对协议分析器所希望的所有特征它都有,如图21所示。图21ETHEREAL简介ETHEREAL主要具有以下特征在实时时间内,从网络连接处捕获数据,或者从被捕获文件处读取数据;可以读取从TCPDUMP(LIBPCAP)、SNIFFERTM专业版、网络通用嗅探器、SHOMITI/FINISAR测试员等处捕获的文件,也能从LUCENT/ASCENDWAN、TOSHIBAISDN路由器中读取跟踪报告,还能从VMS的TCPIP读取输出文本和DBSETHERWATCH4。通过EDITCAP程序的命令行交换机;利用GUI或TTY模式TETHEREAL程序,可以访问被捕获的网络数据;捕获文件可以被修改;分割602协议;把输出文件保存或打印为纯文本或者POSTSCRIPT格式;显示过滤器选择用高亮区和颜色包摘要信息;网络跟踪报告可以保存到磁盘中4。22利用ETHEREAL捕获数据包如表21所示。表21具体步骤第一步安装ETHEREAL第二步单击CAPTURE下的OPTION菜单,打开捕获选项对话框,设置好捕捉接口(INTERFACE)和过滤器CAPTUREFILTER,设置混杂模式(PROMISCUOUSMODE)选项,其他选项可采用默认设置如图22第三步单击START按钮即可实时截获数据包5第四步用ETHEREAL的捕获窗口如图23,捕获数据包的部分截图见图24。所截获的数据包分别在包列表PACKLIST、包细节(PACKETDETAILS)与包字节PACKEBYTES三栏窗口中显示。其中上栏的包列表窗口按截获的时间顺序显示出数据包的基本信息编号(代表收到数据包的次序)、时间、源地址、目的地址协议名称以及关于此数据包的摘要信息;中间栏的包细节窗口以树形显示当前数据包在各协议层的封装细节,包括首部和数据;下栏的包字节窗口则以十六进制和ASCII码显示被截获数据包的详细内容左边一栏显示偏移量,中间一栏显示十六进制数值,右边一栏显示解码后相对应的字符(控制字符示为1个点)5图22ETHEREAL的设置图23捕获状态窗口图24捕获的数据包23利用ETHEREAL对捕获数据包进行分析ETHEREAL作为较为流行的一款计算机网络调试和数据包嗅探软件,可以用来监视所有在网络上被传送的包,并分析其内容的程序。他经常用来检查网络工作情况,或是用来发现网络程序的BUGS。通过ETHEREAL对TCP、FTP、UDP、SMTP等常用协议进行分析,有益于网络故障的修复分析和软件和协议开发。231ARP协议分析实验(1)ARP协议分析ARP,全称ADDRESSRESOLUTIONPROTOCOL,地址解析协议它工作在数据链路层,在本层和硬件接口联系,同时对上压供服务。在以太网中,两台主机进行直接通信,必须要知道目标主机的MAC地址,但目标MAC地址怎么得到的呢它是通过地址解析协议获得的如图25,将网络中的IP地址解析为的硬件地址MAC地址就是因为ARP协议,因为ARP协议经常被用,所以我们用ETHEREAL抓取网络中的ARP数据包如图26,我们可以看到一些捕到的ARP的数据包,比如第1个ARP数据包WHOHAS102823140TELL102823250,通过IP地址找对方的MAC地址,ARP协议的结构如图27,对比图28中框部分与图27中框部分,我们可以看到两者是相同的,通过ARP的结构有更深刻认识14。图25ARP捕获状态窗口图26捕获的ARP数据包以太网目的地址以太网源地址帧类型协议类型硬件类型OP发送端以太网地址发送端IP地址目的以太网地址目的IP地址硬件地址长度协议地址长度图27ARP报文结构图28ARP结构232分析TCP/IP机制的实验TCP是一种面向连接的、可靠的传输层协议,TCP数据传只有连接建立后才可进行数据传输需要通过在客户端和服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”,如图29,即发送方先发送连接请求,然后接受方进行连接确认,最后发送方对接受方再次进确认。下面就以ETHEREAL捕获的建TCP连接过程的三个数据包为例对TCP/IP协议进行分析。SYN,SEQXSYN,SEQY,ACKX1ACKY1图28三次握手示意图第一步ETHEREAL要保持捕获状态如图210,过滤器设置为TCP,这样就可以只捕获TCP协议的数据包。图210TCP捕获状态窗口第二步保持捕获的状态,打开HTTP/WWW163COM网页,这样就捕获到在访问网页时建立连接的TCP数据包如图211。图211TCP捕获状态窗口第三步点击停止,如图212显示的就是捕获的前4个数据包,可以看到1至3号数据包是连接建立过程,连接建立完成以后4号数据包开始传输数据。图212捕获到的数据包客户端发送连接请求,从图213可以看出,该数据包封装了三个头信息以太网帧、IP数据报(首部格式如图213)和TCP报文段固定首部格式如图214,具体数据如表215表表215具体数据接收方MAC00030F000C4B源主机MAC00030DA40F72TYPE0X0800版本号VERSION4首部HEADLENGTH20BYTES服务类型SERVICESFIELD0X00数据报总长TOTALLENGTH48标识IDENTIFICATION0X96B53标志FLAGS0X04段偏移FRAGMENOFFSET0生存时间TIMETOLIVE128TCP报文段PROTOCOL0X06头部校验和0X1206表示正确请求主机的IP地址为101023226,目的主机的IP地址为5824824540,在运输层,主要数据对象是TCP报文。在以上的TCP报文段中,具体数据如表216表216具体数据目的端口号DESTINATIONPORT80请求方源端口号SOURCEPORT1615HTTP协议的保留端口号0头部长度HEADERLENGTH28BYTES标志位FLAGSOX0002窗口字段WINDOWSIZE的最大字节数65535校验和CHECKSUM0XF6A表示正确15序列号SEQ是本次连接的初始序号,因此在连接请求时相对初始值是0,其实际值是246815A1;确认号是00000070,指示ACK0表示忽略确认号,SYN1表示正在进行连接请求,在连接请求中,SYN1、ACK0,连接响应时,SYN1、ACK1;PSH为015。比特04816192431版本首部长度总长度服务类型标识标志片偏移生存时间协议首部检验和源地址目标地址图213IP数据报首部格式比特08162431目的端口确认号源端口序号数据偏移保留URGACKPSHPSTSYNFIN窗口检验和紧急指针图213TCP报文段固定首部格式字节662461054目的MAC地址源MAC地址类型数据FCS图217以太网V2MAC帧格式图218发送方发出的连接请求数据包如图218是对此数据包的具体分析,了解到服务端5824824540发至客户端101023226。在响应TCP报文段中,SEQ为EF84C89B,确认号为246817A2,标志位为0X0010,指示ACK标志为1,表明确认号有效、SYN仍然为1。图219服务端响应数据包如图220为客户端确认数据包,数据包由客户端101023226发送给服务端5824824540,序列号为246815A2,本次确认号为73FF17FF,标志位OX0010,指示ACK标志为1表明确认号有效,SYN置为0表示连接建立结束。图220客户端确认数据包建立了完整的TCP连接后全双工模式的数据传输过程开始了。通过上述利用ETHEREAL对TCP连接过程的三个数据包的分析,可以了解TCP/IP协议的三次握手过程。233UDP协议的实验UDP是USERDATAGRAMPROTOCOL的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务6。其特点UDP是一个无连接协议,当传送时就可以从应用程序的数据获得,并且尽快地把它放到网络上面;一台服务机可同时向多个客户机传输相同的消息,是因为传输数据不建立连接,也就不需要维护连接状态了;UDP信息包的标题只有8个字节,相对TCP的20个字节信息包的额外开销很小;吞吐量只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制;UDP不保证可靠交付,不需要维持复杂的链接状态表这里面有许多参数;UDP是面向报文的,应用程序需要选择合适的报文大小6。图221抓包后主界面大量UDP协议原始框表示出了分组中包含的每个数据的字节,我们可以看出最原始的传输数据。方框右边是ASCII码,左边是十六进制的数据。报文的二进制码就是发送的最原始内容。选择其中第8个包进行分析。图222第8个FRAME表223数据解析第1行现在此贞基本信息。名称,692字节第2行显示到达时间20100702第3、4行现在使用时间第6、7行现在贞长度和捕获长度,都是692字节第8、9、10行现在此贞类型,为UDP类型图224以太网图225显示了此贞的源地址和目的地址,分别为第3行,第7行。另外说明了此贞是个单波贞“THISISAUNICASTFRAME”。图225INTERNET协议表226具体数据分析第1行给出了源地址和目的地址,分别为602124012;2185615886第2行VERSION4,表示IP协议的版本号为4,即IPV4,占4位,HEADERLENGTH20BYTES,表示IP包头的总长度为20个字节,该部分占4个位。所以第一行合起来就是一个字节第3行给出头长度,20字节第6行IDENTIFICATION40793,表示IP包识别号为40793。该部分占两个字节第7行FLAGS,表示片标志,占3个位。各位含义分别为第一个“0”不用,第二位为不可分片位标志位,此处值为“1”表示该数据表禁制分片。第三位为是否最后一段标志位,此处“0”表示最后一段第10行给出贞类型,为UDP第11行HEADERCHECKSUN0XF43CCORRECT,表示IP包头校验和为0XF43C,括号内的CORRECT表示此IP数据包是正确的,没有被非法修改过。该部分占两字节图227用户数据报协议表228具体数据分析第2行源端口13237。2字节,源端口号,即发送这个TCP包的计算机所使用的端口号第3行目的端口10611。2字节,目标端口号,即接受这个TCP包计算机所使用的端口号第4行长度658字节第5行CHECKSUM检验和,校验和。在数据处理和数据通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数字或在计算检验和过程中看作数字的其它字符串244ICMP协议的实验ICMP是(INTERNETCONTROLMESSAGEPROTOCOL)INTERNET控制报文协议。它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等,当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息,ICMP提供一致易懂的出错报告信息,发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者,发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据报1024。图229窗口中的ICMP协议(请求)图230窗口中的ICMP协议(应答)从上面两图和前面分析的协议区别是增加了TYPE0ECHOPINGREQUEST/REPLY,表示了PING类型和代码。图231网际协议表231数据分析第1行给出了源地址和目的地址,分别为602124012;221202136137第2行VERSION4,表示IP协议的版本号为4,即IPV4,占4位,HEADERLENGTH20BYTES,表示IP包头的总长度为20个字节,该部分占4个位。所以第一行合起来就是一个字节第3行给出包头长度,68字节第6行IDENTIFICATION40853,表示IP包识别号为40853。该部分占两个字节第7行FLAGS,表示片标志,占3个位。各位含义分别为第一个“0”不用,第二位为不可分片位标志位,此处值为“1”表示该数据表禁制分片。第三位为是否最后一段标志位,此处“0”表示最后一段第10行给出贞类型,为ICMP第11行HEADERCHECKSUN0X8AECORRECT,表示IP包头校验和为0X8AE,括号内的CORRECT表示此IP数据包是正确的,没有被非法修改过。该部分占两字节3网络协议分析程序的设计31应用技术311VISUALC简介VISUALC即VC,微软公司出品的高级可视化计算机程序开发工具。他提供了一套开发环境VISUALSTUDIO,VISUALSTUDIO本身包括一个文本编辑器、资源编辑器、工程编译工具、一个增量连接器、源代码浏览器、集成调试工具,以及一套联机文档,借助这套工具,用户可以随心所欲地开发出各种功能的应用软件以及借助OPENGL和DIRECTX技术开发游戏软件。VISUALC可以识别C/C并编译,支持MFC类库,并提供了一系列模板,常用的MFCAPPWIZARDEXE/DLL,MFCACTIVEXCONTROLWIZARD,WIN32APPLICATION,WIN32CONSOLEAPPLICATION,ATLCOMAPPWIZARD,这种可视化编程环境可以令程序员花更多精力在程序功能的实现上,而不是底层的建设上,这就大大加快了程序开发速度和效率,这也是VISUALC一个显著的特点,利用VISUALC编译出的程序空间小,运行快,比其他的编译工具编译出的软件占据较多优势11。312WINPCAP简介WINPCAP是一个在WINDOWS操作系统下的免费、公开的用于直接访问网络的开发工具包(编程API)。大多数WINDOWS网络应用程序都是通过WINSOCKAPI(WINDOWS套接口)这类高级编程接口访问网络的。这种方法只能可以在网络上进行简单的数据传送,不可以满足实际的需要。有些程序希望绕过TCP/IP协议栈,直接处理底层网络中的通信数据,它们需要对网络进行底层进行直接访问,即在没有类似协议栈(TCP/IP协议栈)的实体介入条件下对网络进行原始访问。基于WINSOCKAPI编程,应用程序是通过调用操作系统提供的编程接口访问TCP/IP协议栈实现网络通信的。基于WINPCAP编程,网络程序实际上是绕开操作系统的TCP/IP协议栈直接通过底层网络发送数据,因此网络程序可以实现一些更低级、更灵活的功能。WINPCAP提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植和方便开发。很多不同的工具软件都使用WINPCAP进行网络安全监控,网络分析和故障排除等方面。WINPCAP特别适用于网络及协议分析,网络监控,NIDS等经典领域。但是WINPCAP也不是万能,因为它不利用主机的如TCP/IP协议去接收和发送数据包,所以它一定不可以阻塞,一台主机中各程序之间的通信数据是不可以同时处理,物理线路上的数据报只能被它感受到,因此QOS调度和个人防火墙等是不能用它。(1)利用WINPCAP进行网络数据包的捕获和过滤的步骤表31具体步骤第一步打开网卡,并设为混杂模式第二步回调函数NETWORKTAP在得到监听命令后,从网络设备驱动程序处收集数据包把监听到的数据包负责传送给过滤程序第三步当PACKETFILTER监听到有数据包到达时,NDIS中间驱动程序首先调用分组驱动程序,该程序将数据传递给每一个参与进程的分组过滤程序第四步然后由PACKETFILTER过滤程序决定哪些数据包应该丢弃,哪些数据包应该接收,是否需要将接收到的数据拷贝到相应的应用程序第五步通过分组过滤器后,将数据未过滤掉的数据包提交给核心缓冲区。然后等待系统缓冲区满后,再将数据包拷贝到用户缓冲区。监听程序可以直接从用户缓冲区中读取捕获的数据包第六步关闭网卡25图32NDIS驱动程序结构(2)WINPCAP安装本网络探测程序需要用到两个文件,他们都可以从WINPCAP官方网站HTTP/WWWWINPCAPORG/INSTALL/DEFAULTHTM上下载。第一个文件是WINPCAP4_0_2EXE,它是一个自动安装文件,其包括重要的动态链接库DLL和驱动程序,双击此文件就可以按照提示进行安装了。这个文件必须安装,他是所有基于WINPCAP的应用程序运行所必须的。如果不安装此文件,就不能运行基于WINPCAP的应用程序。第二个文件是WPDPACK_4_0_2ZIP,他是WINPCAP开发包文件,是设计基于WINPCAP的应用程序的开发文件。该文件包括开发用的头文件和静态链接库文件,是开发者要用到的。如果不需要开发基于WINPCAP的程序,而只是运行基于WINPCAP的软件,就不需要此文件。(3)WINPCAP数据结构由于WINPCAP的设计与LIBPCAP相同的数据结构。在此只列出所有的WINPCAP核心数据结构,并进行简单介绍。PCAP_ADDR数据结构描述的是网络接口的地址的定义如下TYPEDEFSTRUCTPCAP_ADDRPCAP_ADDR_TSTRUCTPCAP_ADDRSTRUCTPCAP_ADDRNEXT/指向下一个地址节点STRUCTSOCKADDRADDR/网络接口地址STRUCTSOCKADDRNETMASK/地址掩码STRUCTSOCKADDRBROADADDR/广播地址STRUCTSOCKADDRDSTADDR/目的地址PCAP_FILE_HEADER数据结构描述一个WINPCAP用不同的存储文件类型,一个存储文件类型用唯一值来表示26定义如下STRUCTPCAP_FILE_HEADERBPF_U_INT32MAGIC/文件类型U_SHORTVERSION_MAJOR/主版本号U_SHORTVERSION_MINOR/次版本号BPF_INT32THISZONE/区域时间BPF_U_INT32SIGFIGS/时间戳BPF_U_INT32SNAPLEN/捕获长度BPF_U_INT32LINKTYPE/链路层类型PCAP_IF数据结构描述的是把当网络接口表较多时组成一个链表,用此链表来存储所有的网络接口26,定义如下TYPEDEFSTRUCTPCAP_IFPCAP_IF_TSTRUCTPCAP_IFSTRUCTPCAP_IFNEXT/下一个网络接口节点CHARNAME/网络接口名字CHARDESCRIPTION/描述信息STRUCTPCAP_ADDRADDRESSES/网络接口地址BPF_U_INT32FLAGS/标记;PCAP_PKTHDR数据结构描述每个捕获到的数据包的一些基本信息,定义如下STRUCTPCAP_PKTHDRSTRUCTTIMEVALTS/时间戳BPF_U_INT32CAPLEN/捕获长度BPF_U_INT32LEN/数据包长度;PCAP_STAT数据结构主要描述的是WINPCAP的状态信息26,定义如下STRUCTPCAP_STATU_INTPS_RECV/捕获到得数据包个数U_INTPS_DROP/丢失的数据包个数U_INTPS_IFDROP/未用IFDEFWIN32U_INTBS_CAPT/数据包到达应用层的个数ENDIF(4)WINPCAP函数说明WINPCAP提供的输出函数与LIBPCAP的函数是完全一样的,他们的使用方式也完全一样。在此只列出所以函数名称及功能介绍,其详细说明请查看WINPCAP帮助文档,帮助文档可从此处下载HTTP/WWWCOFFEECATNETCN/WINPCAP/HTML/INDEXHTML。与WINDOWS相关的输出函数单独列出,并进行详细介绍。表33网络接口函数查找机器的所有可用的网络接口,用一个网络聊表返回INTPCAP_FINDALLDEVSPCAP_IF_TALLDEVSP,CHARERRBUF释放网络接口链表中的所有网络接口VOIDPCAP_FREEALLDEVSPCAP_IF_TALLDEVS查询本机的网络接口名字CHARPCAP_LOOKUPDEVCHARERRBUF获取网络地址和网络掩码INTPCAP_LOOKUPNETREGISTERCONSTCHAREVICE,REGISTERBPF_U_INT32NETP,REGISTERBPF_U_INT32MASKP,REGISTERCHARERRBUF打开一个网络接口进行数据包捕获。打开IADE模式有“PROMISC“表示如果是1,就表示以混杂模式打开此网络接口;否则,以非混杂模式打开网络接口PCAP_TPCAP_OPEN_LIVECONSTCHARDEVICE,INTSNAPLEN,INTPROMISC,INTTO_MS,CHARERRBUF表34规则函数设置BFP过滤规则,由参数FP确定INTPCAP_SETFILTERPCAP_TP,STRUCTBPF_PROGRAMFP编译BPF过滤规则INTPCAP_COMPILEPCAP_TP,STRUCTBFP_PROGRAMPROGRAM,CHARBUF,INTOPTIMIZE,BPF_U_INT32MASK编译BPF过滤规则INTPCAP_COMPILE_NOPCAPINTSNAPLEN_ARG,INTLINKTYPE_ARG,STRCUTBPF_PROGRAMPROGRAM,CHARBUF,INTOPTIMIZE,BPF_U_INT32MASK释放过滤规则的内存VOIDPCAP_FREECODESTRUCTBPF_PROGRAMPROGRAM表35数据包捕获函数循环捕获网络数据包,直到遇到错误或满足退出条件。每捕获一个数据包就调用CALLBACK只是的回调函数。所以,可以在回调函数中对捕获到的数据包进行操作INTPCAP_LOOPPCAP_TP,INTCNT,PCAP_HANDLERCALLBACK,U_CHARUSER捕获网路数据包INTPCAP_DISPATCHPCAP_TP,INTCNT,PCAP_HANDLERCALLBACK,U_CHARUSER捕获一个网络数据包,然后返回此数据包捕获一个网络数据包CONSTU_CHARPCAP_NEXTPCAP_TP,STRUCTPCAP_PKTHDRHINTPCAP_NEXT_EXPCAP_TP,STRUCTPCAP_PKTHDRPKT_HEADER,CONSTU_CHARPKT_DATA退出循环捕获数据包状态VOIDPCAP_BREAKLOOPPCAP_TP构造一个LIBPCAP句柄PCAP_TPCAP_OPEN_DEADINTLINKTYPE,INTSNAPLEN打开一个文件,此文件的内容是网络数据包VOIDPCAP_OPEN_OFFLINECONSTCHARFNAME,CHARERRBUF关闭LIBPCAP操作,并销毁相应的资源VOIDPCAP_CLOSEPCAP_TP表36文件相关函数返回LIBPCAP的文件句柄FILEPCAP_FILEPCAP_TP返回LIBPCAP的文件描述符号INTPCAP_FILENOPCAP_TP把数据包数据存入文件中PCAP_DUMPER_TPCAP_DUMP_OPENPCAP_TP,CONSTCHARFNAME把数据包数据存入文件INTPCAP_DUMP_FLUSHPCAP_DUMPER_TP关闭文件VOIDPCAP_DUMP_CLOSEPCAP_DUMPER_TP)向文件中写网路数据包内容VOIDPCAP_DUMPU_CHARUSER,CONSTSTRUCTPCAP_PKTHDRH,CONSTU_CHAR返回一个标准的文件句柄FILEPCAP_DUMP_FILEPCAP_DUMPER_TP表37错误处理函数获取最后一个错误信息VOIDPCAP_PERRORPCAP_TP,CHARPREFIX获取对应的错误信息CHARPCAP_STRERRORINTERRNUM表38辅助函数获得统计信息INTPCAP_STATSPCAP_TP,STRUCTPCAP_STATPS是获取链路层状态。例如,如果类型为DLT_EN10MB,就表示以太网INTPCAP_DATALINKPCAP_TP返回支持的所有链路层类型的链表INTPCAP_LIST_DATALINKSPCAP_TP,INTDLT_BUFFER设置链路层类型INTPCAP_SET_DATALINKPCAP_TP,INTDLT此函数的功能是把链路层类型对应的名字转换成标识INTPCAP_DATALINK_NAME_TO_VALCONSTCHARNAME把链路层标识转换成对应的链路层名字字符串CONSTCHARPCAP_DATALINK_VAL_TO_NAMEINTDLT把链路层的描述求出来CONSTCHARPCAP_DATALINK_VAL_TO_DESCRIPTIONINTDLT返回LIBPCAP句柄中的SNAPSHOT数值INTPCAP_SNAPSHOTPCAP_TP返回文件类型是否正确的信息INTPCAP_IS_SWAPPEDPCAP_TP返回文件的主版本号INTPCAP_MAJOR_VERSIONPCAP_TP返回文件按的次版本号INTPCAP_MINOR_VERSIONPCAP_TP返回LIBPCAP的版本信息CONSTCHARPCAP_LIB_VERSIONVOID返回LIBPCAP的非阻塞状态INTPCAP_GETNONBLOCKPCAP_TP,CHARERRBUF设置LIBPCAP是否为非阻塞模式INTPCAP_SETNONBOCKPCAP_TP,INTNONBLOCK,CHARERRBUFINTPCAP_SETNONBOCKPCAP_TP,INTNONBLOCK,CHARERRBUF表39与WINDOWS相关的函数函数返回值函数操作成功就返回0,失败就返回1参数描述参数P表示WINPCAP句柄,参数DIM表示字节数目此函数的功能是设置内核中与网卡相关的缓冲区的大小INTPCAP_SETBUFFPCAP_TP,INTDIM函数返回值函数操作成功就返回0,失败就返回1参数描述参数P表示WINPCAP句柄。参数MODE表示工作模式,有两种工作模式捕获模式和统计模式,分别用MODE_CAPT和MODE_STAT表示。如果是捕获模式,网络接口就只捕获网络数据包;如果是统计模式,网络接口就可以进行网络信息统计此函数的功能是设置网络接口的共组模式INTPCAP_SETMODEPCAP_TP,INTMODE数返回值函数操作成功就返回0,失败就返回1参数描述参数P表示WINPCAP句柄,参数BUF表示要发送的数据包缓存数据,参数SIZE表示缓存BUF的大小此函数的功能是发送一个原始数据包INTPCAP_SENDPACKETPCAP_TP,U_CHARBUF,INTSIZE函数返回值函数操作成功就返回0,失败就返回1参数描述参数P表示WINPCAP句柄,擦数SIZE表示缓存大小此函数的功能是在内环设置一个最小的缓存大小。此缓存用来存放数据包内容,如果缓存装满,内核就把次数据内容复制给应用层;如果缓存还有空闲,内核就一直等到缓存装满后再把它们送到应用层,而不是一有数据到达就把它们送入应用层INTPCAP_SETMINTOCOPYPCAP_TP,INTSIZE32设计思路321程序功能介绍网络协议分析程序主要要实现俩个功能捕获数据包,即获取以太网上的数据包;分析数据包,即对数据包进行协议分析。为了使程序有更好的操作性和用户体验,程序使用VISUALC60进行开发。程序主界面采用文档/视图结构,目的是利用其产生的菜单和工具栏、状态栏,提供交互的命令。具体思想是设计一个类似VC界面的主界面,包含有6个用于显示信息的视图。主视图占据程序界面的大部分区域用于显示数据包的主要信息,包括数据包索引号、捕获到数据包的时间、数据包的长度、以太网的源/目的MAC地址、源/目的IP地址以及端口号。流量视图用于显示单位时间的IP数据包个数。包结构视图用于显示用户所选数据包的详细信息。查看视图用于查看各种数据包的统计信息和系统的一些输出信息。主机视图用于显示ARP请求主机的IP和MAC地址。二进制包视图用于显示数据包的二进制数据。除主视图外,其他的视图都可以由用户决定是否显示。322设计思路1首先获取网络设备,然后打开设备,并设置网卡处于混杂模式,启动捕获线程,不断地接收数据包和分析数据包。2通过在对话栏的组合框中输入过滤串来确定监听某种协议TCP,UDP,ICMP的数据包。默认情况下是不进行过滤的;3通过菜单或工具栏按钮来控制监听线程的开始和结束;4单独创建一个线程用于进行数据包的接收,以提高界面的反应能力;监听的结果显示于列表控件中,包括以下各项,接收时间、数据包长度、源MAC地址、目的MAC地址、协议、源IP/端口、目标IP/端口。图31设计思路图32应用程序模块设置过滤字符串选项设置分析数据包保存数据包更新列表视图接收数据包停止终止监听线程结束结束保存显示结果监听网络保存到磁盘N图33流程图33主要函数说明使用WINPCAP库函数,设置网卡为混杂模式,接收所有流经它的数据,并交由上层协议处理软件处理。下面具体讨论一下各个函数的功能。(1)DWORDWINAPICAPTURETHREADLPVOIDLPPARAMETER参数LPPARAMETER空类型指针,在程序中使用该函数时传递的是文档类指针。网络监听线程函数,全局函数。函数主要进行接收数据的工作。函数是由菜单抓包开始命令的响应函数ONMENUITEMSTART中的STARTCAPTURE函数调用,主要是根据从界面接收相关参数,设置有关变量的值,开始监听网络。函数流程开网络接口、检测链路层类型、设置过滤器、捕获数据包。并在该函数中调用SAVEPACKET进行保存数据包。(2)UINTSEARCHTHREADLPVOIDLPARAM参数LPPARAMETER空类型指针,在程序中使用该函数时传递的是文档类指针。局域网主机搜索线程函数,全局函数。函数主要功能就是搜索局域网内的主机名称和IP地址。N创建监听线程NYYY(3)SAVEPACKETSTRUCTPCAP_PKTHDRHEADER,CONSTU_CHARPKT_DATA参数HEADER保存每个数据包的一些基本信息,PKT_DATA保存着完整的数据包。函数是由CAPTURETHREAD函数调用,完成数据包在内存中的保存,以备以后使用。函数流程新建DATAPACKET对象、新建PCAP_PKTHDR、将参数中的HEADER中的对应值赋给新建PCAP_PKTHDR、新建PDATA字符指针、将参数中的PKT_DATA复制到PDATA中、保存DATAPACKET对象到CPTRLIST链表M_DATA中。此函数的功能是将网络数据包数据保存到CPTRLIST链表中。(4)ONTIMERUINTNIDEVENT参数NIDEVENT计时器ID。此函数的功能是计算机是否连接到网络以及连接的方式。例外流量视图的更新也是在此函数中操作的。(5)INTANALYZEDATAPCAP_PKTHDRHEADER,CONSTU_CHARPKT_DATA参数HEADER保存每个数据包的一些基本信息,PKT_DATA保存着完整的数据包。函数是由SAVEPACKET函数调用,完成对数据包的初步分析,为列表视图准备数据。函数流程拨去以太网头部、获得上层封装的协议、根据协议类型获得相应的源/目的IP地址,源/目的端口。此函数的功能是分析一个数据包,得到接收的时间、数据包长度、以太网的MAC地址,源/目的IP地址,源/目的端口。并调用视图类中的UPDATELIST函数更新列表视图。(6)DUMP_IPCONSTU_CHARP此函数的功能是解析IP包,获取数据包的源地址和目的地址,包的生存周期TTL,IP包内所使用的协议等,然后根据协议的类型,相应地调用TCP,UDP,ICMP协议的解析函数进行数据分析。(7)DUMP_TCPCONSTU_CHARP,INTLEN此函数的功能是对TCP数据包解析,得到通信两方的端口号以及标志位等。虽然还可以解析包内的数据,但是只可以显示数据的字符串格式,反映不出数据的原貌,更别说加密了。(8)DUMP_UDPCONSTU_CHARP,INTLEN此函数的功能是对UDP头部进行分析。(9)DUMP_ICMPCONSTU_CHARP,INTLEN此函数的功能是对ICMP头部进行分析。(10)DUMP_ARPCONSTU_CHARP此函数的功能是对ARP数据包进行分析。(11)DUMP_EAPCONSTU_CHARP此函数的功能是对EAP数据包进行分析。(12)UPDATETREEINTINDEX此函数的功能是当用户在列表视图中选中一个数据包时更新主界面右边的包结构视图的内容。(13)UPDATEEDITDATAPACKETPDATA此函数的功能是当用户在列表视图中选中一个数据包时更新主界

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论