当前位置:文档之家› 网络嗅探器的设计与实现论文要点

网络嗅探器的设计与实现论文要点

目录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 72.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)广播方式:该模式下的网卡能够接收网络中的广播信息。

b)组播方式:设置在该模式下的网卡能够接收组播数据。

c)直接方式:在这种模式下,只有目的网卡才能接收该数据。

d)混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。

首先,在以太网中是基于广播方式传送数据的,也就是说,所有的物理信号都要经过我的机器。

其次,如果某个工作站的网络接口处于混杂模式,那么它就可以捕获网络上所有的数据包和帧。

Sniffor程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包,而不管该数据是否传给它的。

[4]2.2.3 TCP/IP协议因特网是一个发展非常活跃的领域。

在1968年,它的早期研究成果开始崭露头角,后来便出现了它的前身ARPANET,ARPANET为表现因特网特性的试验平台做出了重大贡献,1973年,因特网正式面世。

从那时起,关于因特网的研究和努力就一直没有间断过,其中大部分努力都是围绕着被称为网络的一个新型赛博空间所需要的标准而进行的。

因特网协议及其标准与世界上任何其他事物的结构不同,它总是由一些机构或专业人士中的个人首先提出的。

为了了解新的协议是如何出现并最终成为标准的,应该首先熟悉缩写词RFC,即Request for Comment。

它的发展变迁过程要追溯到1 9 6 9年,起因是由于因特网的成员过于分散。

正如这个词的字面意思所示,这些文档是一些实用文档、方法、测试结果、模型甚至完整的规范。

因特网社会的成员可以阅读,也可以把意见反馈给RFC,如果这些想法(或基本原理)被社会接受,就有可能成为标准。

在因特网社会中关于R F C的用法(M O)以及如何操作并没有太大的变化。

1969年,当时只有一个网络,整个社会不超过一百位专业人员;随着因特网的飞速发展,因特网不但需要一个机构来集中和协调这些成果,并且需要制定一个最低要求的准则,至少能在成员之间进行有效的通信并取得相互了解。

1974年前后,摆在ARPANET面前的形势很清晰了,通信联络需要进一步扩展,它需要的不仅是要能容纳成倍增加的通信媒体,而且要了解早已存在于群组中的许多领域的意义。

这个领域需要一个管理者。

大约在1977年,随着作为因特网实验备忘录(IEN)一部分的许多实验的进行,著名的T C P / I P协议获得了发展的动力。

没过多久(1986年),为了RFC讨论的需要,需要建立一个由工程技术人员组成的、对标准的发展负责的工作机构,以便有效地引导因特网的发展成长,这样,因特网工程工作组(INENG)成立了。

今天,因特网工程部(IETF)和因特网研究部(TRTF)成为对因特网近期工程需求和远期研究目标负责、并担负重任的两个工作组。

这两个组织曾直接隶属于国际网络执行委员会(IAB),现在属于因特网协会(1992年成立),这个协会最终也是为因特网技术的发展负责的。

但是,如果你是一个因特网上的常客,可能对缩略词IAB并不满意,的确,在IAB的逐步发展并走向成熟过程中,IAB将它的名字改为“Internet Architecture Board”(由“Activities”改为“Architecture”),因为I A B在因特网发展的运作方面并没起多大作用。

谈到RFC标准,那么首先考虑到的应该是RFC733。

如果有关于标准的想法或对因特网有益的新技术,可以把它作为RFC提交给因特网社会。

作为IAB成员之一的RFC编辑,决定着RFC的发表,对任一正式文档,RFC都有一种确定的风格和格式。

[5]现今因特网上用到的主要协议有:用户数据报协议(UDP),次要文件传输协议(TFTP),网际协议(IP),因特网控制报文协议(ICMP),传输控制协议(TCP),地址转换协议(ARP),虚终端协议(Telnet),反向地址转换协议(RARP),外部网关协议(EGP)版本2,引导协议(BootP),路由信息协议(RIP),距离向量多播路由协议(DVMRP)。

下面对其中的4个协议做一些简单的介绍:① IP :网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。

IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP 或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。

IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。

IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。

也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。

IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。

相关主题