基于WinpCap的MFC网络嗅探程序设计报告书Word文档下载推荐.docx
《基于WinpCap的MFC网络嗅探程序设计报告书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于WinpCap的MFC网络嗅探程序设计报告书Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
本需求的编写是为了研究基于WinpCap网络嗅探(网络抓包)程序的开发途径和应用方法。
同时它也是进行项目策划、概要设计和详细设计的基础,是维护人员进行内部维护,信息更新,验收和测试的依据,是用户操作说明的指导文档,是开发人员和用户交互的良好界面。
本需求的预计读者为:
软件开发人员、软件测试人员以及验收人员。
1.1.2问题的背景
随着网络技术的飞速发展,加速了全球信息化的进程,各种重要数据在网上的传播日益普遍,使得网络安全问题越来越为人们所关注。
网络嗅探(网络抓包)工具作为一种网络数据监听程序,在网络安全攻防方面扮演了很重要的角色,目前已经有不少网络嗅探(网络抓包)工具,譬如在Windows环境下,最富盛名的工具是Netxray、WireShark(原Ethereal)。
网络嗅探(网络抓包)工具实际上是一把双刃剑,通过使用网络嗅探(网络抓包)工具,可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析,此分析结果可供网络安全分析之用,也可为黑客发动进一步的攻击提供有价值的信息。
而在网络安全方面,目前使用最广泛的TCP/IP协议存在许多安全缺陷,网络嗅探(网络抓包)工具可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析是有助于网络安全维护的。
根据《网络安全技术发展分析》一文中的数据,2007年以来网络监听技术出现了新额重要特征,传统的Sniffer技术是被动地监听网络通信、用户名和口令,而新的Sniffer技术则主动地控制通信数据。
我们通过对网络嗅探(网络抓包)工具的数据包的捕获与分析功能的进一步了解,才能做到知己知彼,有针对性地获取所需要的信息,利用这些信息进行网络安全分析的网络威胁应对。
因此对网络嗅探(网络抓包)技术的研究具有重要的意义。
本程序通过分析网络上常用的抓包软件Ethereal,在了解其功能和原理的基础上,以Vc6.0为开发平台,使用Windows环境下的网络数据包捕获开发库WinPcap,按照软件工程的思想设计了一个网络嗅探(网络抓包)程序。
1.2需求规定
1.2.1用户需求
网络嗅探(网络抓包)时一种利用计算机的网络接口截获其它计算机数据报文的工具。
使用网络嗅探(网络抓包)工具的主要人群是黑客或网络安全技术人员,从攻击的角度,黑客可以使用网络嗅探(网络抓包)程序非法获取网络中传输的大量敏感信息,如账号和口令等,对网路安全极具威胁;
从防守的角度,网络嗅探(网络抓包)技术是居于网络的入侵检测系统的最底层环节,是整个系统的数据来源,为技术人员提供重要的依据。
无论是黑客还是安全人员,他们对抓包技术的利用途径都是一样的,即对网络上传输的数据包进行捕获与分析,获取不要的信息,但是他们的目的是不一样的,前者是专门利用计算机网络搞破坏或恶作剧,而后者是通过对这些信息的分析利用。
维护网络安全与稳定。
因此用户提出了以下要求:
能够捕获网络数据包,并能对数据包进行简单的分析;
精确的设置捕捉规则和灵活的过滤策略,能使用户方便、准确地捕获所需要的信息;
界面友好,操作简单。
1.2.2功能需求
尽管网络嗅探(网络抓包)工具作为网络安全方面最常见的工具被广泛使用,但是它的基本原理其实很简单,就是先把同卡设备设为混杂模式,然后直接接收链路层的数据。
为了实现用户所提出的各种需求,抓包工具必需达到以下功能:
(1)运行于数据链路层,监视网络状态,对数据帧进行捕捉和统计,为优化网络性能、增强系统安全性提供充分有效的依据。
此时的工作网卡处于混杂模式;
(2)能够对网络中捕捉的数据包解码,用于故障分析。
如数据包的编号、长度、硬件地址类型、协议地址类型、MAC地址长度、IP地址长度、操作代码、发送者硬件地址、目标硬件地址、源IP、目的IP等相关信息;
(3)友好的图形化界面,不需要复杂的命令,大部分功能通过鼠标点击就可达到,操作简单、方便;
(4)用户能够自定义过滤规则,使数据包的捕获更加精准和具有灵活性,增强了软件功能以及与用户的交互能力;
1.2.3性能需求
一个程序除了能正常运行并且达到相应的功能外,对程序性能也有严格的要求,性能需求决定了整个系统的性能档次、所采用的技术和设备档次,本程序除了达到常用软件对响应时间以及差错控制的要求外,还提出以下要求:
(1)数据精确性。
捕获到的数据包并不仅仅是单纯的数据信息,而是包含有IP头、TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌,为分析网络信息提供了重要资料。
(2)适应范围。
优秀的抓包工具能够分析几百种协议。
一般情况下,大多数的抓包工具至少能够分析下面的协议:
IP、TCP、UDP、ICMP、ARP、等。
1.3运行环境
本系统运正常行的硬件环境需求如下:
标准X86PC一台;
CPU:
PIII800MHZ及其以上;
内存:
128MB及其以上;
本系统运正常行的软件环境需求如下:
操作系统:
WindowsXP/7;
动态链接库和驱动程序:
WinPcap4_1_2.exe;
2、概要设计
2.1开发环境
开发系统选用Windows7操作系统,并且采用Visualc++6.0(绿色版)编译系统,具体环境是微软基础类库MFC,这个类库便于我们构造基于Windows操作系统的窗口程序。
本系统是一个基于对话框的应用程序,并对该对话框添加了按钮控件、示例编辑框、列表框控件等,使得程序操作简单。
2.2系统结构
2.2.1结构描述
由前面提到的,一个完整的抓包工具必需有数据包捕获及分析、数据存储等基本功能。
2.2.2系统结构图
系统结构图如下:
2.3设计思路
根据前面的网络抓包技术的原理以及利用WinPcap设计程序的一般步骤,本次设计抓包工具的思路如下:
首先获取网络设备,在程序中显示设备名称;
选择需要抓取的数据包类型;
通过在过滤器对话栏的中输入过滤字符串来确定过滤器,默认情况不进行过滤;
然后单击【开始抓包】,程序开始进行数据包的获取;
抓包结束后显示出包得原数据;
程序自动分析所获取的数据包的类型并显示分析结果的文本数据;
2.4程序流程
根据前一节的设计思路,可以相应地得到这个程序的设计流程,通过采用程序的顺序、选择和循环三种基本的控制流程,可以提高程序质量和编程效率,使程序具有良好的可读性、可靠性、可维护性以及良好的结构,有利于后面程序的编写。
开始
是
否
结束
3、详细设计与实现
网络数据包抓取技术的关键技术在于监听网络数据流,并将接收到的数据包,经过重组分析,成为用户可见的应用层信息。
本节主要讨论系统核心部分的具体实现,即利用WinPcap开发网络抓包工具,包括了数据包的捕获和分析两大主要部分。
3.1总体设计思路
通过对照前面的设计流程,以及参考了WinPcap的相关函数功能,初步构造了利用WinPcap进行网络数据包的捕获和过滤的方法,其设计步骤如下:
(1)获得适合的网络接口的列表,得到设备的基本信息(如设备名称和设备描述),利用pcap_findalldevs函数实现,该函数不仅能打开本地设备,也可以打开远程设备进行远程的抓包控制;
(2)WinPcap最强大的特点之一就是数据流的过滤引擎。
它提供一种高效的方法来只捕。
过滤数据包是通过pcap_compile()相pcap_setfilter()函数来实现的;
(3)然后打开一个接口并捕捉流量,使用函数pcap_open()来打开一个捕捉设备。
接口打开后,使用pcap_dispatch()或pcap_loop()函数将会开始捕捉数据包,其中,pcap_dispatch()将会在超时后直接返回,pcap_loop()则一定要等到一定数量的数包被处理了以后才会返回。
(4)最后通过pcap_freealldevs()函数来释放接口列表;
3.2数据结构
在分析数据包时需要定义合适的数据结构来帮助我们分析
我们按照TCP/IP中协议的头信息的定义设定了如下的结构体
typedefstruct_ETHeader//14字节的以太头
{
unsignedchardhost[6];
//目的MAC地址destinationmacaddress
unsignedcharshost[6];
//源MAC地址sourcemacaddress
unsignedshorttype;
//下层协议类型,如IP(ETHERTYPE_IP)、ARP(ETHERTYPE_ARP)等
}ETHeader,*PETHeader;
//ARP协议opcodes
#defineARPOP_REQUEST1//ARP请求
#defineARPOP_REPLY2//ARP响应
typedefstruct_ARPHeader//28字节的ARP头
unsignedshorthrd;
//硬件地址空间,以太网中为ARPHRD_ETHER,0x0001
unsignedshorteth_type;
//以太网类型,ETHERTYPE_IP,0x0800
unsignedcharmaclen;
//MAC地址的长度,为6
unsignedchariplen;
//IP地址的长度,为4
unsignedshortopcode;
//操作代码,ARPOP_REQUEST为请求(0x0001),ARPOP_REPLY为响应(0x0002)
unsignedcharsmac[6];
//源MAC地址
unsignedlongsaddr;
//源IP地址
unsignedchardmac[6];
//目的MAC地址
unsignedlongdaddr;
//目的IP地址
}ARPHeader,*PARPHeader;
//协议,IP首部中的ipProtocol字段,标明上层协议
#definePROTO_ICMP1
#definePROTO_IGMP2
#definePROTO_TCP6
#definePROTO_UDP17
typedefstruct_IPHeader//20字节的IP头
unsignedchariphVerLen;
//版本号和头长度(各占4位)
unsignedcharipTOS;
//服务类型
unsignedshortipLength;
//封包总长度,即整个IP报的长度
unsignedshortipID;
//封包标识,惟一标识发送的每一个数据报
unsignedshortipFlags;
//标志
unsignedcharipTTL;
//生存时间,就是TTL
unsignedcharipProtocol;
//协议,可能是TCP、UDP、ICMP等
unsignedshortipChecksum;
//校验和
unsignedlongipSource;
//源IP地址
unsignedlongipDestination;
//目标IP地