局域网抓包软件的设计与实现.docx
《局域网抓包软件的设计与实现.docx》由会员分享,可在线阅读,更多相关《局域网抓包软件的设计与实现.docx(22页珍藏版)》请在冰点文库上搜索。
![局域网抓包软件的设计与实现.docx](https://file1.bingdoc.com/fileroot1/2023-7/11/e4b80d88-3009-4092-80b3-408638829ba7/e4b80d88-3009-4092-80b3-408638829ba71.gif)
局域网抓包软件的设计与实现
局域网抓包软件的设计与实现
论文作者姓名:
申请学位专业:
申请学位类别:
指导教师姓名(职称):
论文提交日期:
局域网抓包软件的设计与实现
摘要
随着网络技术的不断进展,社会进入了一个信息爆炸的时期,世界也由于网络而变小,人们通过各类技术和工具使交流冲破了空间的限制。
在网络技术进展与普及的同时,网络平安问题引发了人们的普遍关注。
因此,研究并开发出一种能够有效地实时捕捉网络信息的系统具有极为重要的意义。
基于这一情形,本论文针对网络数据的捕捉与数据包信息分析等问题进行了深切的探讨和研究。
本论文一一介绍了信息捕捉中的相关技术及需求分析,在系统设计中对数据包捕捉模块、解码数据包模块和数据库信息模块的实现进行了详细讲述。
通过运用WinPcap开发包实现网络数据包的捕捉,利用TCP/IP协议的封装理论和自下而上的分析实现了数据包信息的分析,而且将分析出来的信息存入数据库。
另外,还能实现一些功能,如对指定的IP地址进行数据包的捕捉,对捕捉结果进行显示等。
关键词:
WinPcap;数据捕捉;信息分析;局域网
TheDesignandImplementationofLANInformationCaptureSoftware
Abstract
Asdevelopmentofthenetworkandtechnology,thesocietycomesintoaageofinformationexplosion.Duetothenetwork,theworldhasbecomesmaller,andpeopleuseallkindsoftechnologiesandtoolstobreakthroughthelimitationofcommunication.Thenetworksecurityhasbeenwidelyconcernedfollowedbythedevelopmentanduniversalofthenetworktechnology.Therefore,itisgreatsignificancethataneffectivereal-timeinterceptionnetworkinformationsystemisstudiedanddeveloped.Basedonthissituation,thisthesisin-depthstudiestocapturethenetworkdataandsoon.Besides,itintroducesrelativetechnologyandtheneedsinformationcapture.Therealizationofthedatacapturemodule,datapacketdecodedmoduleanddatabaseinformationmoduleisdisplayedfordetailinthesystem'sdesign.ThenetworkdatapacketiscapturedthroughWinPcap,somefunctionshasbeenrealized,suchasnetworkdatapacketcapture,datapacketsofinformationanalysisbyusingTCP/IPprotocolencapsulationtheoryandbottom-up,andwillanalyzetheinformationstoredinthedatabase.Simultaneously,thissoftwarewouldalsoincreasessomefunctions,suchasdatapacketcapturebytheIPaddress,maketheresultsandstatistics,displaytheresultsofdatapacketcaptureandsoon.
Keywords:
WinPcap;datacapture;informationanalysis;LAN
论文总页数:
25页
1引言
1.1课题背景及意义
运算机网络的进展给运算机产业和整个人类的工作、生活方式带来了庞大的转变,专门是信息技术的进展使一个信息缺乏的时期进入了一个信息爆炸的时期,世界也由于Internet而变小。
人们通过各类技术,工具使得交流冲破了空间的限制。
全世界范围内的网络互联给人们的生活和工作带来了方便,人们正享受网络技术带给咱们美好生活。
但同时某些非法分子利用网络的漏洞非法入侵他人的主机系统,有的利用网络盗取他人个人信息,如网上银行帐号密码等,对他人财产平安造成了重大要挟。
据有关资料统计我国每一年通过计算网络进行违法行为以30%的速度上升。
面对运算机犯法愈来愈多的趋势,及网络上日趋泛滥的信息垃圾和污染情形,我国政府未雨绸缪,已经制定了关于互联网络利用的法律法规,网络平安问题已面临着重大挑战。
目前我国正在进行大规模的现代化经济建设,需要利用自己的网络和信息平安系统来爱惜自己的网络和信息系统,尤其是关于全国性大型运算机网络而言,必需将网络平安和信息平安放在超级重要的地位上,而从久远角度看,这只能依托咱们自己解决。
因此成立网络平安系统是咱们此刻迫切需求,这项工作对咱们来讲具有重大的政治和经济意义面对这种形式研究并开发出一种能方便有效的实时监视和捕捉可疑网络信息的系统迫在眉睫。
随着信息化程度的提高,使咱们从一个封锁的环境进入到一个开放的世界,但咱们所担忧和关切的问题即是网络平安问题,也确实是内部网络平安和外部网络平安的问题。
本课题正是针对这种情形和需求,对实时数据捕捉与网络信息监控提出系统设计方案,并对信息过滤和跟踪的方式和技术进行研究,这即是我的论文研究的意义与目的。
1.2本课题研究的相关技术及方式
网络数据捕捉技术是获取信息的关键技术,它通过监听技术,过滤技术获取原始数据,依照TCP/IP分层理论进行层层拆解,提取相关协议中的信息。
本毕业设计要紧通过利用Winpcap开发包,在VC++环境下编写出了一款简单的软件对数据包信息按TCP协议类型、UDP协议类型和特定IP地址进行分类捕捉,捕捉出所需要的灵敏信息,而且将捕捉出来的信息写入数据库。
1.3VisualC++
VisualC++是微软公司推出的开发Win32应用程序(Windows95/98/2000/XP/NT)的、面向对象的可视化集成工具。
它的最大优势确实是提供了功能壮大的MFC类库,MFC是一个专门大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容能够由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方式,程序员所要做的确实是通过预概念的接口把具体应用程序特有的东西填入那个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得加倍轻松容易。
1.4Winpcap简介
Winpcap(windowspacketcapture)是Windows平台下一个免费,公共的网络访问系统。
开发Winpcap那个项目的目的在于为win32应用程序提供访问网络底层的能力。
它提供了以下的各项功能:
(1)捕捉原始数据报,包括在共享网络上各主机发送/接收的和彼此之间互换的数据报;
(2)在数据报发往应用程序之前,依照自概念的规那么将某些特殊的数据报过滤掉;
(3)在网络上发送原始的数据报;
(4)搜集网络通信进程中的统计信息。
Winpcap的要紧功能在于独立于主机协议(如TCP/IP)而发送和接收原始数据报。
也确实是说,Winpcap不能阻塞、过滤或操纵其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。
Winpcap是Win32平台下的数据包捕捉与网络分析架构,由三个模块组成:
NPF,,。
前一个工作在内核层,后两个工作在用户层。
第一个模块是内核部份NPF(NetgroupPacketFilter),在Win95/98中它是一个VXD(虚拟设备驱动程序文件)文件,在WinNT/Win2000下是一个SYS文件。
它的要紧功能是过滤数据包,并把这些数据包原封不动地传给用户态模块。
固然也添加了一些系统特定的标志(比如时刻戳治理)。
那个进程中包括了一些操作系统特有的代码。
第二个模块用来在不同的Win32平台下提供一个通用的公共的包驱动接口。
事实上,不同版本的Windows平台在内核层模块和用户进程之间的接口不完全相同,用于解决这些不同。
提供了一套系统独立的API(ApplicationProgrammingInterface应用编程接口),挪用的程序能够运行在不同版本的Windows平台上而无需从头编译。
还有一些附加的功能。
它可执行一些低层操作:
如:
取得网卡名字,动态装载驱动,取得比如机械的网络掩码、硬件冲突等一些系统特定的信息。
第三个模块是系统无关的,它提供了更高层、抽象的函数。
它包括了一些比如过滤器生成、用户级缓冲等其它的高层函数,增加了比如统计和包发送等更高级的特性。
因此程序员能处置两种类型的API:
一套原始函数集,包括在中,直接与内核层挪用匹配;另一套高层函数由提供,便于用户挪用,功能更壮大。
程序员能随意利用,但只能在受限的环境中直接利用.
图1WINPCAP结构图
总的说来,直接映射了内核的挪用。
提供了加倍友好、功能加倍壮大的函数挪用。
Winpcap的具体结构图1所示:
Winpcap是用NDIS(Windows的通信协议程序(比如TCP/IP)和网络设备驱动器之间通信的标准)的,将自己注册为一个协议处置驱动。
Wincap的利用超级方便,可是它有一个致命的缺点确实是只适用于共享式以太网络,关于互换式网络下的数据那么无能为力。
通过测试,在利用互换机连接的局域网下,Wincap只能监听到本网段内的数据,而关于来自其他网段的数据那么无法监听,除非你把probe接到互换机之前或接到互换机的console口上,只是那样的短处是显而易见的,因此,Winpcap的应用仍是有局限性的。
Winpcap结构图如下:
图2NPFdevicedriver
2基于信息捕捉的相关理论基础
2.1TCP/IP协议
TCP/IP(TransferContrcol/InternetProtocol)传输操纵协议/网际协议起源于60年代末美国政府资助的一个分组互换网络研究项目,到90年代已进展成为运算机之间最常应用的组网形式。
它是能够在网络中提供靠得住的数据传输和无连接的数据报效劳的一组协议。
提供靠得住数据传输的协议称为传输操纵协议TCP,提供网络寻址的协议称为网际协议IP,它只是TCP/IP协议族的其中的两种协议。
TCP/IP协议族是一组不同的协议组合在一路组成的协议族,它是一个真正的开放系统。
现已成为全世界互联网中的基础。
基于TCP/IP协议的网络体系结构,TCP/IP协议分为四层如图3所示,每一层别离负责不同的通信功能。
应用层
Telnet、Ftp、Email等
传输层
TCP、UDP
网络层
IP、ICMP、IGMP
网络接口层
设备驱动程序及接口卡
图3TCP/TP协议族的四个层次
链路层:
有时也称作数据层或网络接口层,通常包括操作系统中的设备驱动程序和运算机中对应的网络接口卡。
它们一路处置任何传输媒介的物理接口细节,它利用的协议为以太网协议。
网络层:
有时也称作互联网层,处置分组在网络中的活动,例如分组的选路。
在TCP/IP协议族中,网络层协议包括IP(网际协议)、ICMP(因特网网间操纵报文协议)和IGMP(因特网组治理协议)。
传输层:
它要紧为两台主机上的应用程序提供端到端的通信。
TCP/IP协议族中,有两个互不相同的传输协议:
UDP(用户数据报协议)、TCP(传输操纵协议)。
TCP为两台主机提供高靠得住性的数据通信。
它所做的工作包括把应用程序交给它的数据分成适合的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超不时钟等,由于运输层提供了高靠得住性的端到端的通信,因此应用层能够忽略所有这些细节。
UDP那么为应用层提供一种超级简单的效劳。
它只是把称作数据报的分组从一台主机发送到另一台主机,但并非保证该数据报能抵达另一端。
任何须需的靠得住性必需由应用层来提供。
应用层:
它负责处置特定的应用程序细节。
关于TCP/IP协议族,它提供Telnet(远程登录协议)、FTP(文件传输协议)、SMTP(简单邮件传送协议)、POP3(邮件同意协议)、SNMP(简单网络治理协议)。
通常应用程序是一个用户进程,而下面的三层进程那么是一样在内核中执行的。
应用层关切的是应用程序的细节,它不关切数据在网络中的传输。
下三层对应用程序一无所知,但却要处置所有的通信细节。
在TCP/IP协议族中,有很多协议。
TCP和UDP是两种最为闻名的运输层协议,二者都利用IP作为网络层协议。
尽管TCP利用不靠得住的IP效劳,但它却提供一种靠得住的运输层效劳。
除以上提到的协议,还有下面几个协议:
IPARP(地址解析协议)、RARP(逆向地址解析协议)、动态选路协议(RIP、OSPF、BGP、CIDR)、DNS(域名系统)、TFTP(简单文件传送协议)等。
图4为TCP/IP网络体系结构与上述各协议之间的关系模型。
图4TCP/IP协议族中不同层次的协议
从图的模型中能够看到,应用层的大多数应用程序通过TCP、UDP来访问网络层,或通过ICMP来利用网络层,如Ping、TraceRoute等也能够利用IP直接访问网络层。
传输层中的TCP、UDP为应用层提供靠得住的或不靠得住网络传输的网络传输效劳。
网络层的ICMP是IP协议的附属协议,IP协议用它与路由器之间互换错误报文或其它操纵信息。
网络接口层的ARP、RARP是以太网和令牌环利用的特殊协议,用来转换IP层和网络接口层利用的地址。
2.2数据封装与分用进程
以用户用TCP协议传送数据为例,数据被送入协议栈中,然后逐个通过每一层直到被看成一串比特流送入网络。
然后逐个通过每一层直到被看成一串比特流送入网络。
其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。
TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCPsegment)。
IP传给网络接口层的数据单元称作IP数据报。
通过以太网传输的比特流称作帧(Frame)。
这确实是通常说的数据的封装进程,如图5所示。
图5数据进入协议栈时的封装进程
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。
每层协议盒都要去检查报文首部中的协议标识,以确信接收数据的上层协议。
那个进程称作分用(Demultiplexing),图6显示了该进程是如何发生的。
图6数据帧的分用进程
2.3IP协议
IP是TCP/IP协议族中最为核心的协议。
所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。
IP提供不靠得住、无连接的数据报传送效劳。
IP数据报的首部信息如图7:
图7IP数据报格式及首部中的各字段
IP各域的含义如下:
版本:
当前IP协议的版本号,本论文采纳的版本号为4;
首部长度:
以32bit为单位的包头长度;
效劳类型:
规定对本数据报的处置方式,比如优先权等;
总长:
以Byte为单位的整个IP数据报长度;
标识:
信源主机给予每一个IP数据报的唯一标识符号,用于操纵分片及其重组;
标志和片偏移:
一样用于操纵分片及其重组;
生存时刻:
设置本数据报的最大生存时刻,以秒为单位;
协议:
表示创建本IP数据报数据区数据的高层协议的类型,如TCP,UDP等;
头标校验和:
用于保证头标数据的完整性;
源IP地址和目的IP地址:
别离指发送本数据报的主机IP地址和同意本数据报的主机的IP地址;
选项:
用于操纵和测试,是IP数据报中可选的部份,包括“源途径”、“途径记录”、“时刻戳”等几种类型。
TCP协议是网络中应用最为普遍的协议,许多的应用层协议都是在成立在TCP协议之上的。
TCP首部的各字段如图8所示:
图8TCP数据在IP数据报中的封装
TCP协议头部信息如下:
源端口:
发送端TCP端口号。
目的端口:
接收端TCP端口号;
序号:
指出段中数据在发送端数据流中的位置;
确认号:
指出本机希望下一个接收的字节的序号;
头标长度:
以32bit为单位的段头标长度,是针对变长的“选项”域设计的;
码位:
指出段的目的与内容,不同的各码位置位有不同的含义;
窗口:
用于通告接收端接收缓冲区的大小;
校验和:
这是可选域,置0表示未选,全1表示校验和为伍
紧急指针:
当码位的URG置位时,指出紧急指针的序号。
UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,要紧用来支持那些需要在运算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/效劳器模式的网络应用都需要利用UDP协议。
UDP协议从问世至今已经被利用了很连年,尽管其最初的光荣已经被一些类似协议所掩盖,可是即便是在今天,UDP仍然不失为一项超级有效和可行的网络传输层协议。
UDP数据报各域的意义与TCP段中相应的域相同。
只有校验和有些不同,除UDP数据报本身外,它还覆盖一个附加的“伪头标”。
那个伪头标来自于IP报头,包括:
源IP地址、信宿IP地址、协议类型、UDP长度及填充域。
UDP首部的各字段图9所示:
图9UDP首部
3需求分析
3.1功能需求
随着个人运算机和互联网的普及,愈来愈多的人开始利用网络那个媒介来发送,接收信息,运算机网络给人们生产和生活带来了庞大的便利。
但是由于网络是一个面向公共的开放系统,对数据信息的保密和系统的性考虑得并非完备,存在着许多的隐患。
而有的人,就利用这些隐患,通过网络来发送一些包括色情,反动等不良内容的信息,达到扰乱正常社会秩序的目的。
网络的形势日趋严峻。
因此,此刻在Internet隐患中扮演重要角色之一的受到愈来愈大的关注。
本软件的设计确实是为了达到大体的保护网络平安的作用,对网络上传输的数据进行捕捉,然后从中取得所有的网络数据包,并对其进行简单的分析操作。
在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕捉包是目前取证的关键技术,只有进行高效的数据包捕捉,网络治理员才能对所捕捉的数据进行一系列的分析,从而进行靠得住的网络平安治理。
IP是TCP/IP协议族中最为核心的协议。
所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。
这些数据类型中又以TCP和UDP两种数据类型为多数。
因此本软件需要设计出按TCP协议类型和按UDP协议类型来过滤网络中的数据。
同时本软件还还应当具有一种过滤功能,那确实是当咱们明白某个IP地址发送的数据包信息都是属于一些不良,反动等等内容的信息,那么,咱们能够通过在软件上输出这台主机IP地址,来过滤从这台主机上发送的所有TCP和UDP协议类型的数据。
从而达到信息过滤的要求。
3.2性能要求
由于本设计是安装在个人电脑上,因此要求用户界面简练,友好,方便利用和操作。
网络上数据包的捕捉是入侵检测系统的基础,关键是要保证高速的抓包和低的丢包率。
一方面,网络检测部份的数据源是网络上的数据包,需要通过捕捉后方能够提交给分析系统;另一方面,捕获数据包效率的高低直接阻碍着网络探测部份的性能的好坏,若是发生丢包现象,那么有可能丢掉的包确实是解决包。
在保证高速的抓包和低的丢包率的同时,要还要求程序能有较强的稳固性。
一款好的信息过滤软件,都是将在一个长时刻工作的环境中运行。
若是不能保证较强的稳固性的话,那么软件对信息过滤的效率和功能有专门大的局限性,对数据信息过滤确实是失败的。
那么这款软件就可不能具有同其他同类似软件的竞争力,更可不能有市场,那么它就注定成为一款失败的软件。
试想一下,假设,当用户利用这款软件时,软件占用了太多的系统资源而致使用户对电脑的其他操作都很难进行,那么,谁还会用这款软件呢?
因此,该软件还应该具有一种特点确实是:
低的系统资源占用率。
4局域网信息捕捉器的设计
4.1功能概述
通过前面的表达能够明白,这款软件具有的功能,那确实是:
能够别离捕捉局域网中的TCP协议类型数据,UDP协议类型数据和从某一特定的IP地址发送出来的TCP协议类型数据和UDP协议数据类型。
而且,将这些捕捉出来的数据包的大体信息存入到数据库中,提供给网络治理员利用和进一步的分析。
系统流程图如以下图:
图10系统流程图
本系统包括三个大体模块,别离是数据包捕捉模块,数据分析模块和数据库模块。
其中数据包捕捉模块的功能是:
利用Winpcap控件,通过网卡设备从网络中捕捉数据包;数据分析模块的功能是:
要紧实现数据的解析,从网络适配器中捕捉到的数据的为原始数据(rawdata),这些原始数据为二进制格式,必需转化为能比较好明白的格式,这就要求将这些原始数据能依照网络数据传输的具体魄式来保留,要紧为了能较好的读懂相关的信息,以便利用者分析;数据库模块的功能是:
通过前两个模块处置后的数据,此刻已经转化成了对咱们有效的信息了,而这些信息不可能一直让他寄存在内存中,那么就需要在数据库中成立相应的表,把这些信息存贮在这些数据库表的相应列名中,以便利用者处置、利用。
4.2系统功能模块的设计
4.2.1数据包捕捉模块
数据包捕捉模块要紧用Winpcap软件实现,模块的设计思想遵循Winpcap捕捉数据包的流程,流程分三步:
查找设备,打开设备和捕捉数据的函数。
利用WinPcap结构提供的来开发实现数据包捕捉程序。
流程图如下:
图11数据捕捉模块流程图
那个地址给出其要紧进程:
先确信要在其上进行监测的网络适配器,取得现有的网络适配器的列表和他们的描述,从而取得该NIC的相关信息。
if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&alldevs,errbuf)==-1)
{
MessageBox("查找设备犯错","提示");
return;
}
接下来打开所取得的网络适配器,其中pcap_open函数的参数1为上面取得的NIC名称,参数2概念了网络监测程序所捕捉的最大字节数。
参数3指示是不是将网络适配器设为混杂模式,PCAP_OPENFLAG_PROMISCUOUS表示工作方式为混杂模式。
参数4为捕捉时刻限制,单位为毫秒。
参数5为错误信息缓存。
该函数负责依照用户指定参数和其它系统默许值初始化WinPcap,并返回会话句柄
;
while((res=pcap_next_ex(m_dlg->adhandle,&header,&pkt_data))>=0)
{
if(res==0)
d.%d.%d",ih->,ih->,ih->,ih->;
sprintf(DIP,"%d.%d.%d.%d",ih->,ih->,ih->,ih->;
u_shortu_sport,u_dport;
if(ih->proto==6);
return;
}
过EDIT控件让用户输入具体的网卡设备。
2.新建一个下拉列表框,让用户选择具体的网卡设备。
考虑到用户利用群的方便、简练,同时Winpc