网络嗅探器的设计与实现论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 引言 (1)
1.1 开发背景 (1)
1.2 开发意义 (1)
2 系统分析 (2)
2.1 设计概述 (2)
2.1.1 实现目标 (2)
2.1.2 开发环境 (2)
2.2 开发相关技术简介 (2)
2.2.1 C#语言简介 (2)
2.2.2 嗅探技术简介 (3)
2.2.3 TCP/IP协议 (4)
2.2.4 数据包简介 (6)
2.3 可行性分析 (8)
3 详细设计 (9)
3.1 设计原理 (9)
3.2 功能说明 (12)
3.3 系统实施 (12)
3.4 系统测试 (14)
4 论文总结 (19)
5 参考文献 (20)
6 致谢 (21)
1 引言
1.1 开发背景
随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。Internet的安全已经成为亟待解决的问题。多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。嗅探器是一种常用的收集有用数据的方法,可以作为分析网络数据包的设备。网络嗅探器就是利用计算机的网络接口截获其他计算机的数据报文的一种工具,而且它与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器捕获的则是真实的网络报文.如果把网络嗅探器放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权。当然嗅探器的正当用处主要是网络管理人员分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分析问题的所在。[1]
1.2 开发意义
本次毕业设计是基于C#的网络嗅探器的设计与实现,由于本人能力上的限度,只是对抓取到的本机在网络中的通信数据,比如说协议类型,源、目的地址和端口、数据包的大小等加以分析,而无法做到像Sniffer或者影音神探那种成熟的嗅探器所拥有的强大功能。作为从事网络技术方面的人员来说,要想有效地利用它、防范它,就得深入地学习、分析网络嗅探技术。最为重要的是,对于网络嗅探器的设计与实现,使我对网络通信,数据传输和网络信息安全等有了切身的体会与融入,同时也是对大学四年的学以致用,不断提高自我的一种有效途径。
2 系统分析
2.1 设计概述
基于C#的网络嗅探器的设计与实现,首先就是要设定好实现的目标,确定开发的环境。有个合理的设计目标使得在设计过程中不茫然,思路更清楚。而一个好的开发环境对提高开发的效率同样起着很重要的作用。
2.1.1 实现目标
实现一个简单的网络嗅探器。具备以下功能:
1、实现一个简洁的易操作的计算机操作用户界面
2、实现抓取数据包的功能
3、实现暂停抓取数据包的功能
4、实现清空列表的功能
5、实现显示数据包详细信息的显示功能
2.1.2 开发环境
Microsoft Visual Studio 2010,Windows 7
2.2 开发相关技术简介
本节将对本设计中用到的一些主要技术进行简单的介绍。
2.2.1 C#语言简介
C#是微软于2000年提出的一种源于C++、类似于Java的面向对象编程语言,适合于分布式环境中的组件开发。C# 是专门为.NET设计的,也是.NET编程的首选语言。C#的产生是因为微软在.NET上需要一种类Java的语言,而Java本身却不能胜任这一需求。C#太像C++了,以至于它很难给人带来体验新事物时的那种兴奋。不过,绝大部分的C++开发者将会因为C#保留了C++中大部分其喜欢的、强大的、令人激动的功能而选择使用它。C#通过避免一般的编程错误和自动资源管理,使得C#的稳定性得到了极大的增强。另外,C#语言
功能强大且可以实现对象之间的转换,轻松实现各种对象转换成字符串。鉴于以上种种,我选用C#作为我本次设计的开发语言。[2]
2.2.2 嗅探技术简介
数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,存在安全方面的问题。
每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。[3]
图示:一个简单的局域网组成
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单地忽略这些数据)。
嗅探器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,网卡内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:
a)广播方式:该模式下的网卡能够接收网络中的广播信息。