【《基于WinPcap的开源网络数据处理工具程序的设计与实现》12000字(论文)】_第1页
【《基于WinPcap的开源网络数据处理工具程序的设计与实现》12000字(论文)】_第2页
【《基于WinPcap的开源网络数据处理工具程序的设计与实现》12000字(论文)】_第3页
【《基于WinPcap的开源网络数据处理工具程序的设计与实现》12000字(论文)】_第4页
【《基于WinPcap的开源网络数据处理工具程序的设计与实现》12000字(论文)】_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

-27-基于WinPcap的开源网络数据处理工具程序的设计与实现目录TOC\o"1-3"\h\u18146基于WinPcap的开源网络数据处理工具程序的设计与实现 -1-15087摘要 -2-186291绪论 -2-261751.1论文的选题背景 -2-271531.2研究意义 -3-302811.3本文的主要研究内容 -3-177332网络数据处理工具需求分析 -5-34152.1网络数据处理工具的需求分析 -5-97902.2网络数据处理工具的可行性分析 -6-60501.2.2.1经济可行性 -6-84132.2.2.2运行可行性 -6-306993.2.2.3技术可行性 -6-147744.2.2.4操作可行性分析 -7-4823网络数据处理工具开发相关知识 -7-64983.1OSI模型简介 -7-309173.2网络协议简介 -8-182155.3.2.1数据包嵌套形式 -9-153146.3.2.2以太网协议首部说明 -9-35997.3.2.3IP协议首部说明 -10-224118.3.2.4ICMP协议首部说明 -11-19699.3.2.5TCP协议首部说明 -11-1071610.3.2.6UDP协议首部说明 -12-2513811.3.2.7ARP协议首部说明 -12-308793.3winpacp -13-254084程序开发流程 -14-53954.1QTcreator的简介 -14-3075712.4.1.1QT环境的配置 -14-1542713.4.1.2winpacp库的添加 -14-253704.2模块结构 -15-90754.3程序界面设计 -16-226564.4程序代码的编写 -16-227854.5编译和调试 -17-129804.6流程关系 -18-229255运行和测试 -18-136425.1功能设计与实现 -18-890614.5.1.1主界面展示 -18-2370215.5.1.2网卡的扫描/选择 -19-2329216.5.1.3主机信息扫描 -20-111717.5.1.4局域网主机扫描 -21-2526218.5.1.5过滤抓包 -21-814419.5.1.7实时网速显示功能 -23-270965.2测试的意义及目的 -23-108585.3测试步骤 -24-255695.4测试数据 -24-105结论 -25-24762参考文献 -25-摘要本文课题设计为基于WinPcap的开源网络数据处理工具程序的设计与实现,使用QT5.8.0和winpacp库来实现本文首先说明了课题研究的目的、意义和网络监听的背景,讨论了在网络数据处理领域领先的工具以及当前网络学习的困难,以此引出了本课题研究的需求和可行性分析。然后分析了网络结构,重要网络协议和网络数据传输的基本原理,介绍基于WinPcap、QT5.8.0实现网络监听。接着罗列了本程序设计思路和架构,功能流程及其实现逻辑,自顶向下,结合源码逐一展开描述。最后将程序的功能测试及其结果进行展示。关键词:网络协议,数据包,TCP/UDP,ARP,WinPcap,QT1绪论1.1论文的选题背景互联网的到来,便利了人们的生活,让信息的传递变得迅如闪电,同时这也让人与人、人与社会的关系更加密切了起来。信息的不平等是这个时代不平等的最大归因,而互联网让我们掌握了最新最全的信息,也让我们每一个人都拥有了缩小人与人之间不平等的能力,所以我们必须知道互联网的体系和模式和数据包传输的协议和方式,从而提供效率更高和有用的信息截获方式。现如今,计算机的普及也引发了更多的网络安全问题,一些不法分子利用以太网的广播方式非法入侵计算机网络系统,当期在某个广播域中监听到所有的信息包的时候,利用一定的技术手段,向其他的网络拓展和入侵。网络监听是一种以监听当前网络状态和数据传输为主的网络管理工具,它可以将计算机的网卡设定为监听模式,从而获取所传输在该域网络上传输的信息数据,对于网络管理员和入侵者来说,都可以通过网络监听技术了解到网络数据的实时动态,为了保护网络安全,维护网络环境,我们必须先下手为强,运用网络反向追踪技术对其进行追踪,从而第一时间掌握网络的安全情况。同时也只有把握先机,我们才能保证网络的信息安全。现在市场中最受欢迎的网络嗅探器:Sniffer,是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具Sniffer技术虽然常常被黑客们用来截获用户的口令,但同时也被广泛地应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。本文旨在对嗅探器的实现原理进行深入的了解,这对防范黑客攻击、提高网络安全具有重要意义1.2研究意义网络数据处理工具的开发主要是用来监听网络上流经的数据包,一般来说像网络中数据的传输和网络协议以及网络结构对于计算机用户来说都是明晰的。同时这些也是非常复杂的,需要我们的初学者进行大量的学习和理解,在课堂上的学习终归是纸上得来终觉浅,绝知此事要躬行。如果无法直观的获得网络传输的数据,那就不能真正将网络安全的观念具象化,也不能真正的做到让初学者理解接受网络安全的重要性,然而网络数据处理工具能克服这个问题。但是现在市面上诸多的优秀工具使用起来太过复杂,不适合初学者使用。因此,本着开源的精神来做一款工具,帮助了解、学习网络数据的传输、网络协议和网络结构。本毕业设计软件是基于OSI(OpenSystemInterconnection)参考模型以及一些的网络协议,采用C++语言,使用WinPcap库和QT5.8.0作为开发工具编写本软件。本系统操作界面简单大方,功能较为齐备。是一个简单实用的网络数据处理软件,本系统具有以下基本功能:(1)本机适配器扫描(2)局域网各主机扫描(3)类似于WinShark的抓包工具,能够简单的过滤Tcp、Udp、Arp等包(4)统计实时网速本软件的目的重在抓取经过本机网卡的数据包,对其进行加工处理、分析展示,供初学者学习、参考。1.3本文的主要研究内容本文首要介绍了论文的选题背景,即在当下这个计算机日益普及的社会里,网络安全的学习和维护刻不容缓。我们的生活万物都开始与互联网相关,小到聊天购物,大到国家大事,都离不开网络的运作。所以如果不加强网络安全意识,我们很有可能会酿成大祸,最后追悔莫及。所以要做一款网络数据分析工具,这款工具可以帮助我们及时的发现网络问题并解决。接着,我们分析了想要制作这款数据处理工具可行性。分别从经济方面、技术层面以及运行和操作方面对此进行了分析。分析结果是,此次开发从各个方面来说都完全可行。接下来就是要查找资料文献,学习和总结想要开发这款网络数据处理工具所需要掌握的知识。除了学习各大网络协议的内容,还要充分的掌握本次开发必须要用到的WinPcap库。学习掌握并且得融会贯通它的框架结构的构成成分,为本次顺利开发打下坚实的基础。做好上述工作后,就开始着手软件的开发了。先是学习QTCreator的应用,然后进行软件编程的步骤,这一步是最重要的一步,除了要很熟练的掌握编程知识以外,还要学习如何将QT和WinPcap进行配置和联合使用,只有掌握了WinPcap中各个模块和函数的作用,才能编写出我们想要实现的网络数据处理功能。只有做好上述步骤,最后才能实现该工具的实现。最后我们对软件从不同角度进行测试,测试的结果和我们之前预期的结果相同,软件没有任何的问题,我们本次的运行测试也增强了软件的稳定性。至此,本次论文完结了,我们成功开发出了这款界面简洁干净、容易上手操作的网络数据处理工具。文章最后对本次开发过程做了一个总结和致谢。总结了本次开发中所遇到的实际问题的解决方法,并学会了坚持不懈、永不延期的科研态度;同时对在本次论文编写的过程中帮助我的老师和同学表达了我诚挚的谢意。2网络数据处理工具需求分析2.1网络数据处理工具的需求分析对于网络数据的处理,大部分软件或系统是不会直接读写该数据包的每一位的,因为有了各大协议的存在,它们只需要建立在OSI七层模型中的应用层就足够了。通过协议的转换,软件或系统可以从整个数据包中只读取需要的相应字段,之后再进行相应的数据处理。因此,在这里要说的是很重要的一部分功能,即捕获数据包。业务需求:满足网络管理员对网络的实时监控满足对网卡的读写操作。扫描本机适配器在本网段内活跃主机信息。满足对网卡内流过的数据读写操作。性能需求:网卡混杂式捕获不造成2G内存计算机宕机。文件磁盘IO操作不造成软件奔溃。任何操作不造成GUI交互无响应。并发不造成内存泄露等问题。程序流程合理,不会造成逻辑上的死循环。可靠、可用性需求:软件在时间和条件的限制下,不导致起系统崩溃的概率。在规定的时间和一定的条件限制下,软件执行所需求的功能的能力;2.2网络数据处理工具的可行性分析在大部分传输介质上,截获和监听网络的信息是很容易的,以往时有发生。作为网络数据的汇聚节点,网关和防火墙以及路由器中时有大量数据流过这些节点。所以,他们就是网络犯罪者和网络维护者之间的兵家必争之地。鉴于此,我们必须加固这些地方,增强这些地方的防御能力。大多数黑客都喜欢在以太网中的某个主机上来监听网络传输上的数据,因为这是最容易做到这些的地方,网络黑客喜欢称这些主机为“肉鸡”,数量多、防御能力低是他们的共性。因此,本工具也打算从个人计算机入手,进行网络数据处理的第一步:网络监听。下面,将主要从经济方面、技术层面、运行可行性和操作可行性等方面进行分析本此次的毕业设计实验。2.2.1经济可行性本此开发的网络数据处理工具所需的资料都可以从网络上找到,实在不行就可以到图书馆里去查找。开发软件所需要的系统和平台等都是很好获得的。不需要特殊的工具实现起来也很简单,而且它的开发成本足够廉价,所以从经济角度看,开发这款网络数据处理工具可行。而且在开发之余,我们可以将它进行商业开发,用它来产生一定的商业价值,从而再次降低我们的开发成本。2.2.2运行可行性我们对它的运行性进行分析,就是考虑到它对系统结构的影响。该网络数据处理工具的界面十分的大气美观,操作也是极易上手的。运行所需的库也就是WinPacp静态库和QT自带的库以及Windows本身所带的动态库。而且它可以在诸多的操作系统中运行,所以从技术角度来说,该系统可行。因为以太网是一种广播型的网络,且目前人们使用的因特网多是使用以太网技术来实现的,所以大多数网络数据的截获是可以在以太网上实现的,其中可以分为共享式以太网监听和交换式以太网监听。因此,从技术角度来说,以某一网络域中的计算机为节点,监听该域网络,这种方式是可行的。2.2.3技术可行性放眼世界,现在的因特网是由以太网技术来支撑的。以太网是一种广播型的网络系统,现在很多的网络数据包的抓取都是在该网上实现的。而以太网的监听又可以分为交换式和共享型。只要我们在网络中的任何一个计算机节点上,就能实现对整个网段数据的监听。综上所述,该系统的开发从经济、技术、运行等方面完全可行。2.2.4操作可行性分析开发所采用的工具是QT5.8.0,所开发的工具很符合现在的计算机用户的使用习惯,它可以运行在各个版本的Windows系统上。当用户单击软件时,会弹出一个窗口,我们可以通过鼠标和键盘对各种参数进行设置,以实现我们所想要实现的功能。网络管理员们可以通过这款软件实时的对网络数据进行监听和处理。所以从操作角度来讲,此软件也是可行的。3网络数据处理工具开发相关知识3.1OSI模型简介OSI(OpenSystemInterconnection,开放系统互连)七层网络模型被称为开放式系统互联参考模型,是一个人为抽象的定义,它把网络概念从逻辑上分为了七层。如图3.1所示,OSI七层模型是被设计为一种框架,这七层模型的建立在很大程度上克服了网络连接中的兼容问题,诸如以太网和局域网以及其他网络之间的兼容性问题。这样进行分层的最大优点就是它能将服务和接口以及协议的观念具象化的分别开来。OSI的最大功能就是使得数据包能够在不同类别的计算机之间进行传输。也正因如此,不同的系统间、网络间所进行的可靠的设备通讯也得益于OSI的七个分层结构。图3.1OSI七层模型及常见协议物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性。数据链路层:负责网络寻址、错误侦测和修正等;提供数据链路的流控。网络层:决定数据的传输目的和寄转,添加网络表头(NH),如IP协议首部。传输层:添加传输表头(TH)形成数据包,如TCP协议首部。会话层:提供两进程之间建立、维护和结束会话连接的功能。表示层:转换数据格式使其与接收者系统兼容;完成数据转换、格式化和文本压缩。应用层:为应用软件而设定的层,不同软件有不同的通讯方式,如HTTP,FTP等。3.2网络协议简介网络协议是为在计算机网络中进行数据交换而建立的规则、标准或约定的集合,由三个要素组成:(1)时序:对网络中事件发生的顺序和协议发生顺序的具体说明。(2)语义:语义主要规定了计算机在运行时所需要发出的控制信息的内容以及实现的过程,还有它做出的反应内容。(3)语法:用户数据与控制信息的相关结构、格式,以及各种意义数据出现的顺序。综上所述,人们形象地把这三个要素通俗的描述为:语义表示要做什么,语法表示要怎么做,时序表示什么时候做。结合OSI模型,我们可以更加快速的理解很多的网络协议,人们在结合了硬件和软件的两种规定而制定了各种各样的网络协议。只有掌握了各个网络协议,再能打好网络数据处理工具的设计基础,网络协议的用途就是为数据的交换建立规则和标准,一般的网络协议包括重要的五个部分,它们分别是传输服务、信息的编码的格式、词汇表、通信环境和时序规则,这些部分都是构成一个完整的网络协议的基础。在本次的网络数据处理工具设计中,我们运用了大量的网络协议,其中的TCP(TransmissionControlProtocol)即网络数据传输控制协议,当我们在进行数据包传送时,会将数据包分割成小的IP包,之后再将它们送达之后,再进行重组还原。双方“握手”后,将两个应用程序之间建立的一种端对端的一种协议。应用程序在发送了通信请求之后,这个请求会被送到一个确切的地址上,双方经过“握手”之后,就会通过TCP建立一个端对端的通信通道,所以这种协议更加的安全。HTTP协议是标准的网络传输协议。该协议指定了客户机可以发送给服务器的内容,并得到相应的回应;ICMP协议是路由器为了严密地监视互联网的操作提供的,该协议可以报告相关的事件,比如ping程序就是用了它来报告网络的连通性;ARP协议被提出来是因为在网络上发送分组的时候并不是用的IP地址,且主机不能理解这样的地址。互联上所有的机器都要用该协议;FTR协议与HTTP协议很相似,都是文件传输协议,它们都有共同点,都是用在了TCP上,然而它们之间也有很多的不同点,其中最大的不同就是,FTR传输文件的时候,使用的是两个并行的TCP连接,其中这两个分别是数据连接和控制连接。它们两个的具体工作是,数据连接被用于准确的传输文件,而控制连接用于传输两台计算机之间的传输控制协议。3.2.1数据包嵌套形式数据通过OSI模型,被分片、包装、嵌套处理之后,最后形成了一个完整、符合以太网协议的数据包。以太网驱动以太网驱动IPTCP应用程序用户数据用户数据APPL首部用户数据用户数据首部IP首部TCP首部IP首部TCP首部TCP首部用户数据图STYLEREF1\s0.2数据包嵌套模型3.2.2以太网协议首部说明以太网协议是现如今的局域网使用中最普遍的通信协议标准,最建于上世纪七十年代。它的传输速率为10Mbps,在以太网中,所有的主机连接在同一条同轴电缆上,采用竞争机制和总线拓扑结构,当检测到数据冲突时,会进行载波感应多处访问。以太网协议首部说明表如图3.3所示。图IP协议首部说明IP是主机在网络中的标识,网络上的所有主机都有IP地址,这种标识是唯一的,不可能存在两个一摸一样的IP。IP地址包含网络号和主机号,网络号和主机号表示的意思分别是,前者表示主机在互联网中的地址,后者表示主机在网络中所处的位置。IP协议首部说明如图3.4所示。图3.4(1)网络存储的时候是从左及右,按照次序由低位到高位,而字节和字数的存储顺序与其相反,依次从低位到高位。(2)版本:占第一个字节的高四位。头长度:占第一个字节的低四位。(3)服务类型:前三位为优先字段权,现已忽略。(4)封包总长度:说明整个IP报的长度,单位为字节。(5)存活时间:就是封包的生存时间。(6)协议:定义了数据的协议,分别为:TCP、UDP、ICMP和IGMP。(7)检验和:首先将该字段设置为0,然后将IP头的每16位进行二进制取反求和,将结果保存在校验和字段。(8)来源IP地址:将来源IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。(9)目的IP地址:将目的IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。在网络协议里,IP协议是不可靠的数据报协议,因为它是针对非连接的数据报协议。当传递数据时,它并不检测网络有没有连通,所以它只负责在各个计算机之间寻找地址和选择数据包路由的工作。3.2.4ICMP协议首部说明如图3.5所示,ICMP协议首部说明详解。(1)从类型来说ICMP是一个8位的类型字段,ICMP数据包类型还有很多,这里不再赘述。(2)ICMP有一个八位的代码域,当与类型组合时,它表示指定类型中的一个功能。当它的代码域值为0时,表示它只有一个功能。(3)校验和是一个数据包中有关ICMP上的一个8位的校验和。路由器为了严密地监视互联网的操作,提供了ICMP(InternetControlMessageProtocol)协议。该协议可以报告有关的事件,也可以用于测试互联网的连通性,如常用的Ping程序就使用了该协议来报告网络的连通性。已经定义的ICMP消息类型有10种左右,表1.1列出了其中最重要的一部分。图TCP协议首部说明TCP协议是为了在不可靠的网络上提供一个可靠的端与端字节流而设计的。图3.6为其首部说明。图3.6(1)TCP的目的端口是16位的,它以报文的方式接收源端口和IP地址的是用来标识报文的发送地址。(2)TCP的源端口和IP地址的作用是标记和识别16位的目的端口域指明报文接收计算机上的应用程序端口地址。(3)头长度表明TCP的头的字节数,如果要转化为字节个数需乘四。(4)TCP的紧急指针标志位是URG。(5)窗口大小表明当目的主机使用16位的域时,会告诉源主机。(6)TCP首部说明表中的FIN表明结束连线标志位(7)这个校验和会对首部数据以及封包内容都会校验,所以它和IP校验不同。:(8)TCP协议首部说明表中的SYN用来建立连线。(9)TCP协议首部说明表中的紧急指针要起作用的话,URG的值得为1。(10)TCP协议首部说明表中的PSH表明以最快的速度传输数据标志位。(11)TCP协议首部说明表中的ACK是应答/请求标志位(12)确认序号表明TCP数据包传输中的接收一方的应答顺序号。(13)TCP协议首部说明表中的RST位是连接复位标志位。(14)序列号表明接受方主机的封包顺序号。3.2.6UDP协议首部说明UDP协议是应用程序发送经过封装的IP数据包的一种方法。其首部说明如图3.7所示。图3.7(1)UDP协议首部说明中的目的端口是六位的,定义了传输的目的地(2)UDP协议首部说明表中的封包长度表明了UDP首部的总长度和封包数据的总长度。(3)UDP协议首部说明表中的源端口是16位的包含了初发送方端的端口号。(4)UDP的校验号和TCP的一样,会对首部数据和封包内容进行校验。3.2.7ARP协议首部说明图3.8ARP协议首部说明如图3.8所示,以下是详细说明。(1)ARP协议首部说明表中的硬件类型指明了硬件接口类型。(2)ARP协议首部说明表中的发送方硬件地址(0-3字节)表示的是源主机硬件地址的前3个字节。(3)ARP协议首部说明表中的发送方硬件地址(4-5字节)表明的含义是源主机硬件地址的后3个字节。(4)ARP协议首部说明表中的发送方IP地址(0-1字节)表明的含义是源主机硬件地址的前2个字节;(5)ARP协议首部说明表中的协议类型表明的含义是高层协议类型;(6)ARP协议首部说明表中的硬件地址长度,协议长度表明的含义是硬件地址和高层协议地址的长度;(7)ARP协议首部说明表中的操作字段表明的含义是报文的类型;(8)ARP协议首部说明表中的发送方IP地址(2-3字节)表明的含义是源主机硬件地址的后2个字节;(9)ARP协议首部说明表中的目的硬件地址(0-1字节)表明的含义是目的主机硬件地址的前2个字节;(10)ARP协议首部说明表中的目的IP地址(0-3字节)表明的含义是目的主机的IP地址;(11)ARP协议首部说明表中的目的硬件地址(2-5字节)表明的含义是目的主机硬件地址的后4个字节。3.3winpacp本工具所使用的WinPcap库大大降低了本软件的开发难度。因为Windows操作系统提供的API并不能直接用来获取网络传输上的数据。即便是提供的一些内核接口的模块也是有着它的局限性。举个例子说明,IP过滤驱动只运行在Windows2000的造作系统下,且仅支持IP协议;对内核的操作和对文件I/O的操作都带来了设计上和使用上的复杂度飙升;Windows内核的不透明等。由于这方面的限制,使得Windows平台与Unix相比,前者的网络安全管理和分析方面的软件在数量上和质量上都远不如后者。鉴于此,意大利一家开发机构在借助微软公司的资助下,开发出了一套功能齐全且易扩展的体系结构——WinPcap,它能够被专业的应用在Win32平台的底层网络分析中。WinPcap最大的优点就是它可以在Windows32上实现捕获数据包的功能,在此之前Windows操作系统并不具有这方面的网络分析能力。迪岑的包过滤驱动程序,通过对NDIS中函数的调用为Win95、WinNT提供一类类似

于Berkeley

Packet

Filter

的捕获及发送数据包的能力。如图3.9所示,是WinPcap的框架结构图。ApplicationApplicationWpcap.dllPacket.dllNPFDeviceDriverPacketsUserLevelKernelLevelNetwork图3.9WinPcap框架结构图NPF(核心部分):NPF的全称为NetgrouppacketFliter,是一种驱动网络协议的程序,它可以为所有的操作系统提供一种截获和发送原始数据包的功能,但是这种功能是基于它调用NDIS来实现的,NPF一般被用来过滤一些数据包,同时它也可以被用来驱动虚拟设备。

Wpcap.dll:是一个包含了公共WinPcapAPI的动态链接库,当Wpcap.dll进行捕获和分析网络流量数据时,它是通过输出一组依赖于系统的函数来实现目的。Wpcap.dll与Libpcap兼容。Packetdll:包括访问BPF的一个应用接口和符合高层函数库接口的函数库。这一部分为平台提供了一个通用的接口,这个接口可以应对不同操作系统的内核和用户模块不尽近相同的现象,事实上,这样做也节省了再次进行编译的时间。4程序开发流程4.1QTcreator的简介QtCreator是跨平台的QtIDE,当QT被Nokia收购之后,随即推出了QtCreator,它是一款全新的轻量级的集成开发环境。这种开发环境能够在多种平台上运行,根据官网描述,Qt的应用程序框架可以让开发人员更加快速的完成开发设计的任务。在本次的程序开发中,我使用的是QT5.8.0版本。4.1.1QT环境的配置下载安装好QT5.8.0之后,将C盘下的system32文件夹和SysWOW64文件添加到系统变量的path里。然后将QT安装路径下的qt5.8\5.8\mingw53_32\bin和qt5.8\Tools\mingw530_32\bin以及qt5.8\Tools\QtCreator\bin分别加到环境变量和系统变量的path中。具体操作就是:右击计算机>单机属性>单击高级属性>单击环境变量,在下边找到Path变量,单击一下,然后点编辑新建。4.1.2winpacp库的添加下载WinPcap_4_1_3.exe驱动,下载开发包WpdPack_4_1_2.zip,然后解压在任意盘里,然后在工程文件里的.pro文件中加入所需的include和lib文件夹,再添加所对应的静态库,这里用到了三个静态库:wpack.lib,packet.lib和libnet.lib。然后找到其中相对应的dll动态库,将它们添加到工程文件的目录下,如图4.1所示。图4.14.2模块结构本网络数据处理工具是一般的PC桌面软件,由于都是二进制的数据分包,不适合使用数据库来存储数据,因此没有使用数据库,而是直接转储为.CAP后缀文件。开发之初,在构思软件时设计了一套软件架构,从底层的适配器端口得到数据之后,由WinPcap的混杂模式得到相应的数据包,交由Filter层过滤数据,经过过滤层之后的数据由提供给用户界面的各个功能模块进行相应的数据处理:过滤、展示、包装等。模块结构设计图如图4.2所示。网卡网卡捕捉程序数据发送过滤层数据导出数据读取数据封装图4.2模块结构流程图4.3程序界面设计本次抓包程序的设计,我使用了QT5.8.0的界面开发工具QTDesigner。直接使用代码来编写GUI无疑是非常痛苦的,QTDesigner的功能非常齐全,它的界面类似于VB,而且提供了大量可供编程使用的组件。在应用QtDesigner程序开发时,一般要涉及到下面几个步骤:(1)创建和初始化子部件(2)设置子部件布局(3)设置Tab键次序(4)建立信号与插槽的连接(5)编写事件处理函数QQTDesignerForm.uiuicmain.cppform.h图4.3QTDesigner功能框图4.4程序代码的编写(1)获取设备列表一般来说,我们编写网络数据处理工具的第一步,就是获得已经连接的网络适配器列表。WinPcap库里提供的pcap_findalldevs_ex()函数可以实现以上的功能。这个函数会返回一个pcap_if结构的链表。在程序中的关键代码如下://扫描本机所有的适配器,并获取每个适配器的信息QVector<DEVInfo>PcapCommon::findAllDev(){QVector<DEVInfo>allDev;DEVInfotempDevInfo;pcap_if_t*p;charerrbuf[PCAP_ERRBUF_SIZE];}(2)打开适配器并捕获数据包并进行流量监控第一步的时候我们已经扫描到了适配器列表,现在进行的是打开适配器捕获数据包。这里用到的函数是pcap_open()在程序中的关键代码为://1打开适配器pcap->openLiveDev(devName);//2获取本机ip和netmaskpcap->setHostInfo(devName);//3线程获取本机MACpcap->getSelfMac();//开启流量监控线程pcap->trafficStatistic(devName);//开始捕获pcap_loop(adhandle,0,packet_handler,NULL);(3)数据包的过滤WinPcap最强大的特性之一,是拥有过滤数据包的引擎。用到的函数为pcap_compile()和pcap_setfilter(),pcap_compile()会将一个高层的布尔过滤表达式编译成一个能够被过滤引擎所解释的低层的字节码;pcap_setfilter()将一个过滤器与内核捕获会话向关联。当pcap_setfilter()被调用时,这个过滤器将被应用到来自网络的所有数据包,并且,所有的符合要求的数据包(即那些经过过滤器以后,布尔表达式为真的包),将会立即复制给应用程序。至此,程序代码编写好了,因为篇幅有限这里只是枚举了几个重要函数功能的代码。4.5编译和调试将程序代码编写好,界面设计之后就可以开始进行程序的编译和调试了。编译的时候先进行qmake操作生成生成Qt项目文件(*.pro),用.pro文件产生平台相关的Makefile文件,对包含Q_OBJECT宏的头文件生成调用moc的make规则。然后单击QT的构建按钮,程序就开始编译了,在经过Debug的调试和Release的封装之后,抓包工具就编译成功了。4.6流程关系打开适配器打开适配器适配器是否就绪结束工具初始化局域主机扫描数据过滤抓包关闭操作获取主机信息实时网速显示开始否是图4.4网路数据处理工具流程图5运行和测试5.1功能设计与实现5.1.1主界面展示网络数据处理工具的界面如图5.1所示图5.1正如上图所示,这是本次毕业设计中我本人设计并实现的软件界面,最上面的横向菜单栏是扫描到的网卡列表。有蓝牙的网卡接口、虚拟机的网卡端口、有线网卡端口和无线网卡端口。我们这里选择无线网卡端口进行测试。左侧竖向的按键代表了该软件所能实现的功能。P2PTerminator是对连接在该局域网中的主机进行扫描的,扫描到的信息包含主机的ip地址、主机名、MAC地址以及主机的现时状态;winshark可以实现过滤抓包的功能,可以简单的过滤Tcp包、Udp包、Arp和http包等。一般过滤的默认格式是srchost00andtcp,改变IP地址和过滤方式,就可以进行个性化过滤抓包。5.1.2网卡的扫描/选择打开上面的横向菜单栏,选择WinPcap扫描出来的本机网卡。只有在选择了网卡之后,才能进行相应的数据操作。下拉条中列出了本机的所有网卡,选中其中的一种网卡,点击右上角的‘打开适配器’按键,就可以打开相应的网卡端口,扫描结果如图5.2所示。图主机信息扫描图5.3当选定网卡打开适配器的时候,左下角就会开始获取本机的信息,直到显示获取本机信息完毕字样。此次获取的本机信息包含下方的本机ip、掩码、MAC地址、和主机数,网关以及实时网速,如图5.3中的红色标框所示。5.1.4局域网主机扫描图5.4如图5.4所示,本软件利用ARP协议,自动遍历本网段内的所有活跃主机,并把它们的MAC值和IP地址列出来。对于本网段内主机的扫描,采用了发送UDP报文给本网段内所有主机,在规定时间内查看是否有响应的方式来判断5.1.5过滤抓包图5.6图5.7如图5.6、5.7所示,就是网络数据处理工具对tcp包过滤抓取的过程展示。图5.8图5.9同样如图5.8、5.9所示,也可以对arp包、udp包进行过滤抓取过程展示。5.1.7实时网速显示功能图5.10上方图片中标记为红色方框的就是扫描到的端口网速的实时显示。5.2测试的意义及目的一般的对于一个实现了的软件,我们需要在不同的操作系统上对它进行调试和运行,只有这样,才能增加软件的成熟度,供客户更好的使用。而且从长远来看,软件的测试也可以更好地分析软件与它的子软件之间的矛盾,同时也可以分析出软件与合同文件上的要求是否符合。5.3测试步骤测试是一种值得探讨的事,有多门分类和很多的技巧。由于本软件的所有功能都不需要对其他的用户开放,涉及到的与别的主机的交互方面的事我们在本次的实验中不做升入了解。本次实验中我们只是设计的功能是对个人主机的适配器端口进行数据处理,其中包括主机扫描、网速实时显示、过滤抓包等功能,该软件也不会对其他的用户主机开放。鉴于此,本论文的结尾我想对软件进行四个方面的测试,其中包括了手工调试、单元调试、集成调试和系统调试等。只有这样,我们才能对软件在各个系统中的正常运行做出保证。开始进行的是单元测试,主要是利用断点对程序的各个功能模块进行测试,尽量做到将每一个函数的测试完,检查每一个单元,从而以保证他们能够实现它们相应的功能用途。第二部就是进行手工测试,手工测试就是逐步对软件的参数进行设置,然后运行调试。例如,在局域网主机扫描的时候,我们可以对它的起始IP进行设置,当超过0~255的区间时,软件会提示起始结束IP地址设置不规范。系统测试把已经经过

温馨提示

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

评论

0/150

提交评论