搜档网
当前位置:搜档网 › 网络抓包与协议分析软件的设计与开发

网络抓包与协议分析软件的设计与开发

毕业设计(论文)

题目:网络抓包与协议分析软件的设计与开发

毕业论文(设计)原创性声明

本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。

作者签名:日期:

毕业论文(设计)授权使用说明

本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。

作者签名:指导教师签名:

日期:日期:

注意事项

1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订

目录

1 绪论 (1)

1.1 课题来源 (1)

1.2 当今网络数据安全现状 (1)

1.3 网络数据安全的技术研究 (2)

2 主要技术介绍 (3)

2.1 数据包的介绍 (3)

2.2 网络数据包捕获原理 (4)

2.3 网络数据包的捕获方法 (5)

2.3.1 原始套接字 (5)

2.3.2 LibPcap (5)

2.3.3 WinPcap (5)

2.3.4 JPcap (6)

2.4 WinPcap研究 (6)

2.5 WinPcap内部结构 (7)

2.6 WinPcap的主要函数库 (8)

3 系统设计 (10)

3.1 捕获数据的分析与还原 (10)

3.1.1 802.3标准的数据帧分析与还原 (10)

3.1.2 IP报文的分析与还原 (10)

3.1.3 UDP数据包的封装 (12)

3.1.4 TCP数据包的封装 (14)

3.1.5 ICMP数据包的封装 (15)

4 实现与分析 (16)

4.1 WinPcap环境配置 (16)

4.1.1 WinPcap下载 (16)

4.1.2 WinPcap配置 (16)

4.2 程序的实现 (16)

4.2.1 网络数据捕获的基本流程 (16)

4.2.2获取网卡信息 (17)

4.2.3捕获数据包 (18)

4.2.4分析数据包 (20)

4.3 程序编译中出现的问题 (23)

4.4 问题的解决 (23)

4.5 程序功能 (23)

4.5.1 程序主界面 (23)

4.5.2 工具栏 (24)

4.6程序运行结果 (26)

5 总结和展望 (28)

5.1 本文主要工作 (28)

5.2 展望 (28)

致谢语 (29)

参考文献 (30)

网络抓包与协议分析软件的设计与开发

摘要:网络数据包捕获是进行网络分析的基础,通过对Windows操作系统平台下网络数据包捕获模型的论述,重点对基于NDIS的优秀包捕获开发包WinPcap的结构和功能的进行了详细的介绍和分析,实现了如何在VC++ 6.0 环境下借助WinPcap提供的各个接口函数对网卡进行编程进而对网络数据包进行捕获和分析的方法,突出叙述了数据包捕获在网络分析中的应用。

关键字:数据包捕获,数据包,WinPcap

Design and development a packet capture

and protocol analysis software

Abstract:Network packet capture is the precondition for network analysis,through the analysis of the models of network data packet capture in Windows,the structure and function of WinPcap based on NDIS is analyzed and introduced in detail,and how to program on the network adapter and how to capture and analyze the network data packets through WinPcap are realized under the environment of VC 6.0++,the applications of network data capture for network analysis is narrated in detail.

Key words:packet capture,data packet,WinPcap

1 绪论

1.1 课题来源

随着网络技术的飞速发展和网络时代的到来,互联网的影响已经渗透到国民经济的各个领域和人民生活的各个方面,全社会对网络的依赖程度越来越大,整个世界通过网络正在迅速地融为一体,但由于计算机网络具有联结形式多样性、终端分布不均匀性和网络的开放性、互联性等特征,致使网络易受黑客、恶意软件和其他不轨的攻击。广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全所要研究的领域。网络安全涉及的内容既有技术方面的问题,也有管理方面的问题,两方面相互补充,缺一不可。技术方面主要侧重于防范外部非法用户的攻击,管理方面则侧重于内部人为因素的管理。如何更有效地保护重要的信息数据、提高计算机网络系统的安全性已经成为所有计算机网络应用必须考虑和必须解决的一个重要问题。

可以这样来定义网络数据安全:所谓网络数据安全,指的是网络系统的硬件、软件和数据信息能够受到保护,不会因为偶然或恶意的原因而遭到破坏、更改、泄露,同时系统能够连续、可靠地运行,网络服务不被中断。但在现实中,绝对安全的网络是没有的[1]。据IT界企业团体ITAA的调查显示,美国90%的IT企业对黑客攻击准备不足。

目前美国75%一85%的网站都抵挡不住黑客的攻击,约有75%的企业网上信息失窃,其中25%的企业损失在25万美元以上.因此了解网络面临的各种威胁,防范和消除这些威胁,实现真正的网络安全已经成了网络发展中最重要的事情。

1.2 当今网络数据安全现状

计算机网络的核心是网络协议,所以研究协议与网络安全的关系就是至关重要的。现在网络中所使用的协议都是较早前设计的,许多协议的实现都是基于一种非常友好的、通信的双方充分信任的基础。在通常的网络环境之下,用户的信息包括口令都是以明文的方式在网上传输的,只要将网络接口设置成监听模式,便可以源源不断地将网上传输的信息截获,因此进行网络监听从而获得用户信息并不是一件困难的事情。例如目

前使用最广泛的TCP/IP协议就存在很多安全缺陷,而FTP、POP和Telnet协议在本质上也是不安全的,从而很多网络的攻击就是针对这些不安全协议进行的。1994年一个最大的嗅探器(Sniffer,网络数据监听器)攻击被发现,这次攻击被人们普遍认为是记载中最为严重的一次,攻击者处于https://www.sodocs.net/doc/1a4018432.html,,使许多以FTP、Telnet或远程登陆的主机系统都受到了危害。在这件事故中,嗅探器只运行了18个小时。在这段时间里,有几百台主机被泄密。受攻击者包括268个站点,如麻省理工学院、美国海军和空军、SUN 微系统公司、IBM、NASA、CERFNET和加拿大、以色列、荷兰、比利时的一些大学的机器。

协议的安全验证方式也是有弱点的,就是很容易受到“中间服务器”方式的攻击。所谓“中间服务器”攻击方式,就是“中间服务器”冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。服务器和用户之间的数据传送被“中间服务器”转发并做了手脚之后,就会出现很严重的问题。例如:冒充域名服务器的攻击,也就是DNS欺骗。它是攻击者冒充域名服务器的一种欺骗行为,它主要用于向主机提供错误DNS信息,当用户尝试浏览网页,例如IP地址为XXX.XX.XX.XX ,网址为https://www.sodocs.net/doc/1a4018432.html,,而实际上登录的确实IP地址YYY.YY.YY.YY上的https://www.sodocs.net/doc/1a4018432.html, ,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这个网址是攻击者用以窃取网上银行登录证书以及帐号信息的假冒网址。据统计,目前网络攻击手段有数千种之多;美国商业杂志《信息周刊》公布的一项调查报告称,黑客攻击和病毒等安全问题在2000年就造成了上万亿美元的经济损失,在全球范围内每数秒钟就发生一起针对网络的不同形式的攻击事件。

1.3 网络数据安全的技术研究

为了保证网络的安全,防止网络攻击,除了对信息采用加密技术之外,还有就是与网络协议相关的网络安全手段,例如防火墙技术、入侵监测技术、安全扫描技术、协议分析技术和数据包生成技术等。这些技术中,数据包的捕获和分析是最首要的手段,它是诸多网络安全技术实现的基础。

2 主要技术介绍

2.1 数据包的介绍

“包”(Packet)是TCP/IP协议通信传输中的数据单元,一般也称“数据包”。有人说,局域网中传输的不是“帧”(Frame)吗?没错,但是TCP/IP协议是工作在OSI模型第三层(网络层),第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。用一个形象一些的例子对数据包的概念加以说明:我们在邮局邮寄产品时,虽然产品本身带有自己的包装盒,但是在邮寄的时候只用产品原包装盒来包装显然是不行的。必须把内装产品的包装盒放到一个邮局指定的专用纸箱里,这样才能够邮寄。这里,产品包装盒相当于数据包,里面放着的产品相当于可用的数据,而专用纸箱就相当于帧,且一个帧中只有一个数据包。包”听起来非常抽象,那么是不是不可见的呢?通过一定技术手段,是可以感知到数据包的存在的。比如在能上网的情况下,把鼠标移动到任务栏右下角的网卡图标上单击就会弹出一个窗口,如图2-1,就可以看到“发送:××包,收到:××包”的提示。

图2-1 网络连接状态

我们上网打开网页,这个简单的动作,就是我们先发送数据包给网站,网站接收到

了之后,根据发送的数据包的IP地址,返回网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。如果能把数据包捕获,通过分析这些数据,我们就可以知道网络中这些数据包传输的信息。那么如何捕获这些数据包呢?

2.2 网络数据包捕获原理

由于目前用的最多的网络形式是以太网[2],在以太网上,数据是以被称为帧的数据结构为单位进行交换的,而帧(数据包)是用被称为带碰撞检测的载波侦听多址访问即CSMA/CD(carrier sense multiple access wim collision dctection)的方式发送的,在这种方法中,发送到指定地址的帧实际上是发送到所有计算机的,只是如果网卡检测到经过的数据不是发往自身的,简单忽略过去而已。正是这种基于CSMS/CD的广播机制,这就给连接在网络上的计算机捕获来自于其他主机的数据带来了可能,即通过对网络接口的设置可以使网卡能够接收到所有经过该机器的数据,然后将这些数据做相应处理并实时分析这些数据的内容,进而分析网络当前状态和整体布局。这里,通过设置硬路由器的监听端口来捕获数据包的方式不再本文讨论范围内。

从广义的角度上看,一个包捕获机制包含三个主要部分:首先是最底层针对特定操作系统的包捕获机制,然后是最高层针对用户程序的接口,第三部分是包过滤机制。不同的操作系统实现的底层包捕获机制可能是不一样的,但从形式上看大同小异。数据包常规的传输路径依次为网卡、设备驱动层、数据链路层、IP层、传输层、最后到达应用程序。而包捕获机制是在数据链路层增加一个旁路处理,对发送和接收到的数据包做过滤/缓冲等相关处理,最后直接传递到应用程序。值得注意的是,包捕获机制并不影响操作系统对数据包的网络栈处理。对用户程序而言,包捕获机制提供了一个统一的接口,使用户程序只需要简单的调用若干函数就能获得所期望的数据包。这样一来,针对特定操作系统的捕获机制对用户透明,使用户程序有比较好的可移植性。包过滤机制是对所捕获到的数据包根据用户的要求进行筛选,最终只把满足过滤条件的数据包传递给用户程序。

2.3 网络数据包的捕获方法

2.3.1 原始套接字

套接字[3](Sock)是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时候需要自己生成一些定制的数据包或者功能并希望绕开套接字的功能,原始套接字(Raw Socket)就满足了这样的要求。原始套接字能够生成自己的数据报文,包括报送和数据报本身的内容。通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。

原始套接字可以用来发送和接收IP层以上的原始数据包,比如ICMP,TCP,UDP,而且能够对网络底层的传输机制进行控制。原始套接字的作用主要有三个方面:1)接收发向本机的ICMP,IGMP协议包,或者发送这些协议包;

2)接收发向本机的IP包;

3)发送自定义的IP包。

2.3.2 LibPcap

LibPcap[4]是一个广泛应用的系统抓包库。LibPcap是一种与系统无关,采用分组捕获机制的分组捕获函数库,用于访问数据链路层,它在不同的平台上采用统一的编程接口,使用LibPcap编写的程序可以自由地跨平台使用。同时LibPcap是一个独立于系统接口的用户级的抓包库,它为底层网络监听提供了可移植框架。它的应用包括网络统计集合,安全监听,网络调试等。

2.3.3 WinPcap

WinPcap[5]是LibPcap的Windows版本,它是一个基于Win32的捕获数据包和网络分析的体系结构,它包括一个内核级的包过滤器,一个底层的动态链接库(Packet.dll),一个高层并且与系统无关的库(WPcap.dll,基于LibPcap0.6.2版本)。WinPcap是集成于Windows95,98,ME,NT,2000和XP操作系统的设备驱动程序,它可以从网卡捕获或者发送原始数据,同时能够过滤并且仓储数据包。开发WinPcap这个项目的目的在于为Win32应用程序提供访问网络底层的能力。它提供以下四项功能:

1)捕获原始数据报,包括共享网络上各主机发送/接收的以及相互之间交换的数据

报;

2)在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;

3)在网络上发送原始的数据报;

4)收集网络通信过程中的统计信息。

2.3.4 JPcap

JPcap[6]是一个能够捕获,发送网络数据包的Java类库包。这个包用到了LibPcap 和原始套接字API。目前JPcap在FreeBSD 3.x,Linux RedHat 6.1,Solaris和Microsoft Windows 2000/XP系统上已经做过测试,并且支持Ethernet,IPv4,IPv6,ARP/RARP,TCP,UDP,ICMPv4协议。JPcap是一个Java类集合,它为网络数据包的捕获提供接口和系统支持。最初版本是2000年6月发布的JPcap0.01版,此后几经修改,到现在最新的JPcap0.7版。

2.4 WinPcap研究

WinPcap是windows平台下一个免费、公共的网络访问系统,是为Linux下的Libpcap移植到Windows平台下实现数据包捕获而设计的函数库,在设计WinPcap时参照了Libpcap,使用方法也与Libpcap相似,基于Libpcap的程序可以很容易的移植到Windows平台下。这个数据包捕获架构是由加州大学和Lawrence Berkeley实验室及其投稿者联合开发的,他们在1999年3月31日推出了1.0版,提供了用户级BPF过滤;1999年8月21日推出了2.0版,将BPF过滤增加到内核中并增加了内核缓存;2001年3月15日推出了2.1版,该版对libpcap0.5.2进行了升级,并可支持更多的网络类型;2001年1月30日推出了2.2版;2002年3月28日推出了2.3版;2003年1月lO日推出了3.O版,增加了NPF设备驱动的一些新的特性及优化方案,在wpcap.dll 中增加了一些函数等等功能。WinPcap的最新版本是 4.1.4。WinPcap的官方主页是https://www.sodocs.net/doc/1a4018432.html,,可以在其主页上下载这个软件及其源代码,更重要的是,网站上还有很多开发文档,对于利用WinPcap作为工具开发网络安全软件的编程人员有很大帮助。

WinPcap提供了四项功能:

1)捕获原始数据报,包括共享网络上各主机发送/接收的以及相互之间交换的数据报;

2)在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;

3)在网络上发送原始的数据报;

4)收集网络通信过程中的统计信息。

WinPcap的主要功能在于独立于主机协议(如TCP/IP)而发送和接收原始数据包,也就是说,WinPcap不能阻塞,过滤或控制其他应用程序数据包的发收,它仅仅只是监听共享网络上传送的数据包。因此,它不能用于QoS调度程序或个人防火墙。目前,WinPcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用WinPcap的用户中只有一小部分是仅使用Windows 95/98/Me,并且微软也已经放弃了对win9x的开发。有个软件叫sniffer pro可以作网管软件用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以抓包,可对过滤器进行设置,以便只抓取想要的包,比如POP3包,smtp包,ftp 包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码。它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件。还有一个简单的监听软件叫Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在HUB 网络上。著名软件tcpdump及ids snort都是基于libpcap编写的,此外Nmap扫描器也是基于libpcap来捕获目标主机返回的数据包的。

WinPcap提供给用户两个不同级别的编程接口:一个基于libpcap的wpcap.dll,另一个是较底层的packet.dll。对于一般的要与unix平台上libpcap兼容的开发来说,使用wpcap.dll是当然的选择。

2.5 WinPcap内部结构

Winpcap是针对Win32平台上的抓包和网络分析的一个架构,它由内核级的网络组包过滤器(Netgroup Packet Filter,NPF)、用户级的动态链接库Packet.dll和Wpcap.dlI 等 3个模块组成[7]。

1)网络组包过滤器。它是运行于操作系统内核中的驱动程序,它直接与网卡驱动程序进行交互,获取在网络上传输的原始数据包。NPF与操作系统有关,WinPcap开发组针对不同的Windows操作系统提供了不同版本的NPF。在Win95/98/ME系统中,它以VXD文件形式存在,在Windows NT和Windows 2000系统中,它以SYS文件形式存在。该模块提供了抓取数据包以及发送数据包的基本功能,此外还提供了一些高级功

相关主题