计算机毕业论文Word格式文档下载.docx
- 文档编号:20603315
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:32
- 大小:204.86KB
计算机毕业论文Word格式文档下载.docx
《计算机毕业论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机毕业论文Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。
5.3.3网络接口函数5.4网络适配器的设计
5.4.1函数调用关系
5.4.2适配器的获取与释放
5.4.3适配器的打开与关闭5.5多线程设计
5.6过滤模块设计
5.7捕获模块设计
5.8分析模块设计
5.9其它模块设计
6程序调试及测试
6.1程序调试
6.2程序测试
7结束语
7.1成果
7.2展望
参考文献
第页共47页3
正文
摘要:
随着网络技术的飞速发展,网络安全问题越来越被人重视。
嗅探技术作为网络安全攻防中最基础的技术,既可以用于获取网络中传输的大量敏感信息,也可用于网络管理。
通过获取网络数据包的流向和内容等信息,可以进行网络安全分析和网络威胁应对。
因此对网络嗅探器的研究具有重要意义。
本毕业设计通过分析网络上常用的嗅探软件,在了解其功能和原理的基础上,以VC为开发平台,使用Windows环境下的网络数据包捕获开发库WinPcap,按照软件工程的思想进行设计并实现了一个网络嗅探工具。
该嗅探工具的总体架构划分为5个部分,分别是最底层的数据缓存和数据访问、中间层的数据捕获、协议过滤、协议分析和最顶层的图形化用户界面。
本嗅探工具完成了数据包捕获及分析、协议过滤的主要功能,实现了对网络协议、源IP地址、目标IP地址及端口号等信息的显示,使得该程序能够比较全面地分析出相关信息以供用户参考决策。
关键词:
网络嗅探;
WinPcap编程接口;
数据包;
网络协议;
多线程
第页共47页4
嗅探器是一种利用计算机网络接口监视网络数据运行、截获网络数据的工具,可用
[1][2]于网络管理、网络协议分析以及网络安全等众多方面。
在网络攻防技术中,嗅探技术是最为基础的一种技术。
从攻击的角度,黑客可以利用嗅探器程序非法获取网络中传输的大量敏感信息,如帐号和口令等,对网络安全极具威胁;
从防守的角度,嗅探技术
[3]是基于网络的入侵检测系统的最底层环节,是整个系统的数据来源。
1.1背景及意义
随着网络技术的迅速发展,加速了全球信息化进程,各种重要数据在网上的传播日
[4]益普遍,使得网络安全问题越来越为人们所关注。
网络嗅探工具作为一种网络数据监听程序,在网络安全攻防方面扮演了很重要的角色,目前已经有不少的嗅探工具,譬如在Windows环境下,最富盛名的工具是Netxray、Snifferpro,在UNIX环境下是Sniffit和Snoop,以及同时支持Linux和windows平台的Ethereal等工具都是比较常见的。
网络嗅探器实际是一把双刃剑,通过使用网络嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析,此分析结果可供网络安全分析之用,也可为黑客发动进一步的攻击提供有价值的信息。
而在网络安全方面,目前使用最广泛的TCP/IP
[5]~[8]协议存在很多安全缺陷,网络嗅探器可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。
我们通过对网络嗅探器的数据包捕获与分析功能的进一步了解,才能做到知己知彼,有针对性地获取所需要的信息,利用对这些信息进行网络安全分析和网络威胁应对。
根据《网络安全技术发展分析》一文中的数据,2007年以来网络监听技术出现了新的重要特征,传统的Sniffer技术是被动地监听网络通信、用户名和口令,而新的Sniffer技术则主动地控制通信数据。
因此,对网络嗅探器的研究具有重要意义。
第页共47页5
[9][10]本课题的任务是设计并编程实现一个基本的网络嗅探工具,能实现Sniffer、Ethereal等常用网络嗅探工具的基本功能,包括:
侦听所有进出本主机的数据包,解析显示数据包;
能够侦听来源于指定IP地址的数据包,能够侦听指定目的IP地址的数据包,显示捕获数据包的内容;
能够根据指定的协议类型过虑包等等。
[11]~[14]我将结合自己熟悉的Windows系统平台,使用WinPcap软件包在VC下进行API编程,开发一个带图形界面的网络嗅探工具,该工具除了具备上述功能外,应具有友好的操作界面、良好的可扩充性,此外我认为还应该设置数据包统计功能和通俗易懂的帮助文档,更好地为用户服务。
1.3章节安排
作为本论文的主要部分,论文正文的安排如下:
第一部分提出技术背景,剖析网络嗅探的作用和危害的同时提出论题,并介绍了实现网络嗅探工具的原理及方法,以及本次设计中用到的Winpcap技术;
第二部分是程序需求分析,讨论了用户类及其特征、用户需求、功能需求、性能需求、运行环境等因素,对嗅探工具开发的思想和过程作初步的分析和论证。
第三部分是系统的设计与实现,详细介绍了使用WinPcap开发程序的一般流程及相关功能函数,以及数据包捕获、分析、过滤等各个模块的具体实现。
第页共47页6
嗅探是一种常用的收集有用数据的方法,嗅探器是利用计算机的网络接口截获目的地为其它计算机的数据报文的一种工具。
由于组网方式不同,嗅探器的工作原理也有所不同,总共可以分为三类:
(1)基于网卡混杂模式的嗅探原理;
基于ARP欺骗的网络嗅探原理;
(2)
(3)基于中间人攻击的嗅探原理。
本次毕业设计就是利用第一种方式来实现嗅探器的功能,可以监听到所有流经同一
[15]以太网网段的数据包,这是一种被动嗅探方式。
从以太网的工作原理来看,数据传
[16]输是基于“共享”的,所有的同一本地网范围内的计算机共同接收到相同的数据包,这意味着计算机直接的通讯都是透明可见的。
正是因为这样的原因,以太网卡都构造了硬件的“过滤器”,这个过滤器将忽略掉一切和自己无关的网络信息,事实上是忽略掉了与自身MAC地址不符合的信息。
从网卡原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据包,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。
对于网卡来说一般有四种接收模式:
(1)广播方式:
该模式下的网卡能够接收网络中的广播信息;
(2)组播方式:
设置在该模式下的网卡能够接收组播数据;
(3)直接方式:
在这种模式下,只有目的网卡才能接收该数据;
(4)混杂模式:
在这种模式下的网卡能够接收一切通过它的数据。
而本次设计嗅探工具正是利用了这个特点,把网卡设置为“混杂模式”。
因此,嗅探程序就能够接收到整个以太网内的网络数据信息了,而不管该数据是否是传给它的。
正常模式和混杂模式的两者对比如图2.1所示:
第页共47页7
合法数据包所有数据包
YES传输层
NO合法端口丢弃合法端口不判断
YES网络层
NO合法IP地址丢弃合法IP地址不判断
YES链路层
NO合法MAC地址合法MAC地址丢弃不判断
物理层
数据包数据包
(a)正常模式(b)混杂模式
图2.1网卡对数据包的处理方式
很多网络安全系统最首要的任务就是捕获网络上的数据信息,而网路数据包捕获技术就解决了这个问题。
网络数据包捕获技术是从网络上捕获所有的或特定的网络数据包信息,供其他网络安全系统使用。
不同的网络有不同的捕获技术,不同的操作系统其捕获机理也有所不同。
以太网采用了CSMA/CD技术,它使用了广播机制,所有与网络连接的机器都可以看到网络上传播的数据,操作系统提供的捕获机制主要有以下三种:
(1)SOCK_PACKET类型套接口;
(2)数据链路提供者接口((DataLinkProviderInterface,DLPI);
(3)伯克利数据包过滤器(BerkeleyPacketFilter,BPF)。
BFP主要由两部分组成:
网络转发部分和数据包过滤部分。
网络转发部分是从链路层中捕获数据包并把它们转发给数据包过滤部分,数据包过滤部分是从接收到的数据包中接受过滤规则决定的网络数据包,其他数据包就抛弃。
捕获数据包和过滤数据包都是
第页共47页8
在操作系统内核中完成的,而且使用了数据缓存机制。
从效率上来讲,BPF在三种机制中是性能最高的,而SOCK_PACKET是最弱的。
在实际应用中,实现网络数据包捕获技术的代表是Libpcap。
它是一个专业的跨平台的网络数据包捕获开发包。
使用Libpcap可以很轻松地实现网络数据包的捕获功能,它的捕获机制就是BPF捕获机制。
在Windows平台下有与Libpcap兼容的WinPcap开发包,它是专门针对Windows平台而开发的,本次程序的开发就是利用WinPcap库函数实现的。
WinPcap(WindowsPacketCapture)是Windows平台下一个免费、公共的专业网络数据包捕获开发包,也是其它一些安全工具的应用基础。
使用该开发包的软件主要有:
Windump、Analyzer、Ethereal、Dsniff等。
WinPcap包括三部分,即数据包捕获和过滤块NPF、较低层的网络编程接口packet.dll、较高层的编程接口wpcap.dll。
使用该开发包可以提高应用效率,WinPcap充分考虑了各种性能和效率的优化,在内核层实现了数据包的捕获和过滤,这是由NPF来实现的,NPF是WinPcap的核心部分,它实现了内核的统计功能,对于设计网络流量的程序很有好处。
WinPcap是Libpcap在Windows平台下的版本,在设计WinPcap时参照了Libpcap,对Windows进行了优化处理和扩展,主要功能:
(1)数据包捕获。
跟Libpcap一样,WinPcap主要的功能还是完成了对网络数据包的捕获,它可以捕获在共享网络上传输的各种网络数据包。
(2)数据包过滤。
WinPcap也具备数据包的过滤功能,在接收网络数据包和发送个应用程序之前在内核层对数据包进行过滤,其过滤规则与BPF过滤规则兼容。
(3)数据包发送。
使用WinPcap可以实现数据包的发送功能,可以发送原始的网络数据包,网络数据包的内容可以由开发者自己确定。
(4)流量统计。
在WinPcap中还实现了流量统计功能,这也是在内核层实现的。
(5)数据包存储。
使用WinPcap可以在内核中将捕获到的数据包直接存储到磁盘中。
第页共47页9
前一节提到了WinPcap的三个模块,它们分别是NPF、packet.dll、wpcap.dll,其体系结构如下图2.2所示:
其它应用程序:
包截获网络监测数据转储
应用层应用程序应用程序应用程序
1,直接访问
NPF
2,调用用户态wpcap.dll缓冲区packet.dll用户态3,调用
wpcap.dll
packet.dll
核心态
缓冲区
其
它核心态协
议内核态过滤器统计引擎转储引擎缓冲区栈
转储到硬盘
网络数据入口NPF
数据链路层驱动程序
网络层数据包
图2.2WinPcap体系结构
这个三个模块组成了有较好扩展性的底层网络分析体系结构,下面对三个模块作详细说明。
NPF是WinPcap的组件,用来处理网络上传输的数据包,并对用户层导出数据包捕获、发送与分析的能力。
它是运行于操作系统内核中的驱动程序,它直接与网卡驱动程序进行交互,获取在网
第页共47页10
络上传输的原始数据包。
在WindowsXP系统中,它以SYS文件形式存在。
该模块提供了抓取数据包以及发送数据包的基本功能,此外还提供了一些高级功能,如数据包过滤系统和检测引擎。
Pactet.dll用于在Windows平台上为数据包驱动程序提供一个公共的接口。
不同的Windows版本在用户态和内核态之间提供互不相同的接口,而Pactet.dll可以屏蔽这些接口区别,提供一个与系统无关的API。
Pactet.dll开发的数据包截获程序可以运行于不同的Windows平台而不必重新进行编译。
Pactet.dll可以执行如获取适配器名称、动态驱动器加载以及获得主机掩码及以太网冲突次数等低级操作。
Wpcap.dll模块提供了一组功能强大且垮平台的函数,利用这些函数,可以不去关心适配器和操作系统的类型。
Wpcap.dll含有诸如产生过滤器、定义用户缓冲以及包注入等高级功能。
Wpcap.dll的函数调用会自动调用Pactet.dll中的低级函数,并且可能被转换成若干个系统调用。
第页共47页11
网络嗅探器是一种利用计算机的网络接口截获其它计算机数据报文的工具。
使用网络嗅探工具的主要人群是黑客或网络安全技术人员,从攻击的角度,黑客可以利用嗅探器程序非法获取网络中传输的大量敏感信息,如帐号和口令等,对网络安全极具威胁;
从防守的角度,嗅探技术是基于网络的入侵检测系统的最底层环节,是整个系统的数据来源,为技术人员提供重要的依据。
无论是黑客还是安全人员,他们的对嗅探技术的利用途径都是一样的,即对网络上传输的数据包进行捕获与分析,获取必要的信息,但是他们的目的不一样,前者是专门利用计算机网络搞破坏或恶作剧,而后者则是通过对这些信息的分析利用,维护网络安全与稳定。
因此用户提出了以下要求:
(1)能够捕获网络数据包,并能对数据包进行简单的分析;
(2)对数据包进行简单的统计,例如数据包的长度、截获的数目等;
(3)精确的设置捕捉规则和灵活的过滤策略,使用户能够方便、准确地捕获所需要的信息;
(4)界面友好,兼容多种操作系统平台,方便用户操作。
尽管嗅探器作为网络安全方面最常见的工具被广泛使用,但是它的基本原理其实很简单,就是先把同卡设备设为混杂模式,然后直接接收IP层的数据。
为了实现用户所提出的各种需求,嗅探器必需达到以下功能:
(1)运行于数据链路层,监视网络状态,对数据帧进行捕捉和统计,为优化网络性能、增强系统安全性提供充分有效的依据。
此时的工作网卡处于混杂模式;
(2)能够对网络中捕捉的数据包解码,用于故障分析。
如数据包的编号、时间戳、数据包长度、协议类型、源IP地址、目的IP地址、源端口号、目的端口号源、MAC地址、目的MAC地址等相关信息;
(3)友好的图形化界面,不需要复杂的命令,大部分功能通过鼠标点击就可达到,
第页共47页12
操作简单、方便,并附带帮助文档;
(4)用户能够自定义过滤规则,使数据包的捕获更加精准和具有灵活性,增强了软件功能以及与用户的交互能力;
程序带有导出功能,使截获的数据包信息以XML格式导出到指定文件夹。
(5)
一个程序除了能正常运行并且达到相应的功能外,对程序性能也有严格的要求,性能需求决定了整个系统的性能档次、所采用的技术和设备档次,本程序除了达到常用软件对响应时间以及差错控制的要求外,还提出以下要求:
(1)数据精确性。
捕获到的数据包并不仅仅是单纯的数据信息,而是包含有IP头、
TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌,为分析网络信息提供了重要资料。
(2)适应范围。
优秀的嗅探器能够分析几百种协议。
一般情况下,大多数的嗅探器至少能够分析下面的协议:
标准以太网、TCP/IP、IPX、HTTP、SMTP和无线网。
3.4运行环境
本系统运正常行的硬件环境需求如下:
CPU:
P41.4G以上;
内存:
256MB以上;
硬盘:
20G以上。
本系统运正常行的软件环境需求如下:
操作系统:
WindowsXP;
动态链接库和驱动程序:
WinPcap4_0_2.exe;
开发包文件:
WpdPack_4_0_2.zip。
第页共47页13
本系统选用WindowsXP操作系统,并且采用MicrosoftVisualC++6.0编译系统构造而成,具体环境是微软基础类,这个类库便于我们构造基于Windows操作系统的窗口程序。
本系统是一个基于对话框的应用程序,并对该对话框添加了按钮控件、树状控件、列表框控件等,同时使用多线程设计,提高程序运行效率。
由前面任务与目标一节中所提到的,一个完整的嗅探工具必需有数据包捕获及分析、数据存储等基本功能,此外,本系统加入了帮助模块,通过调用帮助文档给用户提供程序使用帮助。
系统结构如下图4.1所示:
网络嗅探系统
数据包捕数据包分数据帮助
获析保存文档
图4.1系统结构图
根据前面的网络嗅探技术的原理以及利用WinPcap设计程序的一般步骤,本次设计嗅探工具的思路如下:
(1)首先获取网络设备,然后打开设备,并设置网卡处于混杂模式,启动捕获线程,不断地接收数据包和分析数据包;
(2)通过在对话栏的组合框中输入过滤串来确定监听某种协议(TCP,UDP,ICMP)的数据包,默认情况下是不进行过滤的;
(3)通过菜单或工具栏按钮来控制监听线程的开始和结束;
(4)单独创建一个线程用于进行数据包的接收,以提高界面的反应能力;
第页共47页14
(5)监听的结果显示于列表控件中,包括以下各项,接收时间、数据包长度、源MAC地址、目的MAC地址、协议类型、源IP地址及端口、目标IP地址及端口。
4.3程序流程
根据前一节的设计思路,可以相应地得到这个程序的设计流程,通过采用程序的顺序、选择和循环三种基本的控制流程,可以提高程序质量和编程效率,使程序具有良好的可读性、可靠性、可维护性以及良好的结构,有利于后面程序的编写。
程序流程图如4.2所示:
得到网卡设备句柄
选择监听的网卡
打开网卡设备、置为混杂模式
建立缓冲区
定位及初始化设备
分析数据包接收网络数据包
显示、统计数据
否停止从缓冲区读取数据包接收
是
释放网卡句柄、缓冲区
退出
图4.2程序流程图
第页共47页15
网络数据包嗅探技术的关键技术在于监听网络数据流,并将接收到的数据包,经过重组、分析,成为用户可见的应用层信息。
本章主要讨论系统核心部分的具体实现,即利用WinPcap开发网络嗅探工具,包括了数据包的捕获和分析两大主要部分。
5.1WinPcap设计步骤
通过对照前面的设计流程,我参考了WinPcap的相关函数功能,初步构造了利用WinPcap进行网络数据包的捕获和过滤的方法,其设计步骤如下:
(1)获得适合的网络接口的列表,得到设备的基本信息(如设备名称和设备描述),利用pcap_findalldevs()函数实现;
(2)然后打开一个接口并捕捉流量,使用函数pcap_open_live()来打开一个捕捉设备。
接口打开后,pcap_dispatch()或pcap_loop()函数将会开始捕捉数据包,其中,pcap_dispatch()将会在超时后直接返回,pcap_loop()则一定要等到一定数量的数据包被处理了以后才会返回;
(3)WinPcap最强大的特点之一就是数据流的过滤引擎。
它提供一种高效的方法来只捕。
过滤数据包是通过pcap_compile()和pcap_setfilter()函数来实现的;
(4)最后通过pcap_freealldevs()函数来释放接口列表,pcap_close()函数来关闭和返回。
5.2WinPcap的安装
本网络嗅探程序需要用到两个文件,他们都可以从WinPcap官方网站下载。
第一个文件是WinPcap4_0_2.exe,它包括了重要的动态链接库(DLL)和驱动程序,它是所有基于WinPcap的应用程序运行所必须的;
第二个文件是WpdPack_4_0_2.zip,他是WinPcap开发包文件,是设计基于WinPcap的应用程序的开发文件。
该文件包括开发用的头文件和静态链接库文件,是开发者要用到的。
如果不需要开发基于WinPcap的程序,而只是运行基于WinPcap的软件,就不需要此文件。
然后在VC6.0菜单中,选择[工具Tolls]|[选
第页共47页16
项Options]|[目录Directories],在[Includefiles]和[Libraryfiles]中添加安装后的include和library的路径,如图5.1所示:
(a)Includefiles目录中的路径(b)Libraryfiles目录中的路径
图5.1VC路径设置
本嗅探系统的设计涉及到许多重要函数,与程序的功能息息相关,例如设置缓冲区、查找网卡设备、捕获数据包等功能,现将涉及到的主要函数的数据结构、函数原型及相关参数做简要介绍。
5.3.1数据结构
(1)pcap_addr描述的是网络接口的地址,是一个包含相对于addr指向的地址,其数据结构定义如下:
typedefstructpcap_addr{
structpcap_addr*next;
//指向链表中下一个节点的指针
structsockaddr*addr;
//指向包含一个地址的sockaddr的结构的指针
structsockaddr*netmask;
//地址掩码
structsockaddr*broadaddr;
//广播地址
structsockaddr*dstaddr;
//目的地址
};
第页共47页17
(2)pcap_file_header数据结构用来描述一个WinPcap存储文件类型,其数据结构
的定义如下:
structpcap_file_header{bpf_u_int32magic;
//文件类型
u_shortversion_major;
//主版本号
u_shortversion_minor;
//次版本号
bpf_int32thiszone;
//区域时间
bpf_u_int32sigfigs;
//时间戳
bpf_u_int32snaplen;
//捕
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 毕业论文