网络嗅探器的设计与实现-毕业设计_第1页
网络嗅探器的设计与实现-毕业设计_第2页
网络嗅探器的设计与实现-毕业设计_第3页
网络嗅探器的设计与实现-毕业设计_第4页
网络嗅探器的设计与实现-毕业设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 毕业论文题目: 网络嗅探器的设计与实现 学院: 数学与信息工程学院 专业: 计算机科学与技术 此毕业设计还包括以下文件,需要的下载后留下邮箱方便发给大家网络嗅探器的设计与实现摘要:嗅探器,英文可以翻译为Sniffer,是一种基于被动侦听原理的网络分析方式。使用这种技术方式,可以监视网络的状态、数据流动情况以及网络上传输的信息。实际上Sniffer技术被广泛地应用于网络故障诊断、协议分析、应用性能分析和网络安全保障等各个领域。本次设计完成了一个较为简单的嗅探器,它实现了对本机的网络监控的作用,对IP包进行了分析,获得其运行的信息。信息包括了源IP地址,目标IP地址,协议,时间,吞吐量,识别码,

2、校验码,长度等等。也可以保存所需要的包信息,也可选择所要嗅探的协议类型,以便获得要想的信息。同时,通过POP3服务器设置端口的值来获取数据包,得到登入邮箱的帐号和密码。关键词:嗅探器;协议;数据包;监听;吞吐量Design and Implementation of snifferZhang yin(College of Mathematics and Information Engineering, Jinxing University)Abstract: Sniffer, can be translated into English Sniffer,is a passive network

3、 analysis method based on the principle of listener. The use of such technology, can monitor the status of networks, data flows and information of network transmission. In fact Sniffer technology is widely used in network diagnosis, analysis of the agreement, performance analysis of the application

4、and network security, and other fields.The design complete a relatively simple sniffer, it realized that the local network monitoring role, analysis the information of IP packet and get their information about the running system. Information includes the source address,destination address, protocol,

5、 time, throughput, identification, checking code, length and so on. It can save the information of required packet, and can choose the type of protocol to be sniffing, in order to get to the information.Meanwhile,it can get the Emails log-mail account and password by analysis the port valu of the PO

6、P3 Server.Keywords:Sniffer; Protocol; Data packet; Monitor; Throughput目 录1 绪论41.1 课题背景41.2 网络嗅探器的概述51.2.1 网络嗅探器的概念与原理51.2.2 网络嗅探的检测和防范61.2.3 网络嗅探器软件需要解决的问题72 网络嗅探器设计相关技术简述72.1 在交错环境下的嗅探技术72.1.1 ARP欺骗72.1.2 交换机MAC地址表溢出82.1.3 MAC地址伪造82.1.4 ICMP路由器发现协议欺骗82.1.5 ICMP重定向攻击82.2 C#语言编程92.3 网络协议92.3.1 IP92.3

7、.2 TCP102.3.3 UDP103 系统需求分析113.1 系统性能要求113.2 软件实现的功能114 网络嗅探器的相关拓展13总 结15致 谢15参考文献16附 件171 绪论嗅探器,Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。Sniffer可以作为能够捕获网络报文的设备,IIS是这样给Sniffer定义的:Sniffer是利用计算机的网络接口截获目的地为其他计算机的数据报文的一种工具。1Sniffer的正当用处主要是分析网络的流量,以便找出所关心的网络中潜在的问题。在合理的网络中,Sniffer的存在对系统管理员是致关重要

8、的,系统管理远通过它可以诊断出大量的不可见模糊问题,这些问题涉及两台乃至多台计算机之间的异常通讯有些甚至牵涉到各种的协议,借助于Sniffer系统管理员可以方便的确定出多少的通讯量属于哪个网络协议、占主要通讯协议的主机等等,这些信息为管理员判断网络问题、管理网络区域提供了非常宝贵的信息。计算机网络与电话电路不同,计算机网络是共享通讯通道的。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。1.1 课题背景Sniffer网络嗅探器,它与当前的网络生活有很大的关系,一些网络管理员普遍应用它,也有很多黑客通过使用它来获得他们想要的信息资料。与

9、电话线路不同,计算机网络是共享通信通道的,着就意味着计算机能够接收到发送给其他计算机的信息。捕获在网络中传输的数据信息就称为Sniffing(窃听)。在内部网上,黑客要想迅速获得大量的帐号(包括用户名和密码),最有效的手段是使用 Sniffer程序。这种方法要求运行Sniffer程序的主机和被监听的主机必须在同一个以太网段上。以太网Sniffing则是对以太网设备上传送的数据包进行侦听,来探测感兴趣的包。如果发现符合条件的包,就把它存到一个LOG文件中去。通常设置的这些条件是包含username或者password字的包。Sniffer通常运行在路由器或有路由器功能的主机,这样就能对大量的数据

10、的进行监控。Sniffer属于第二层次的攻击,通常是攻击者已经进入了目标系统后,再使用Sniffer这种攻击手段,以便得到更多的信息。2信息革命正在改造我们的生活,这场革命早在工业化进程中就开始孕育。20世纪50年代前的电报电话等基础通信技术和计算机技术的出现,为20世纪60年代计算机联网实验提供了最初的条件,20世纪70年代半导体微电子技术的飞跃以及数字花技术的成熟为计算机网络走出军事的封锁环境、研究所和校园的象牙之塔奠定了技术基础。美国著名的未来学家阿尔温.托夫勒很早就预感到信息革命的巨大影响,出版了他的“第三次浪潮”等名著。他深刻地指出:“电脑网络的建立与普及将彻底地改变人类的生存及生活

11、模式,而控制与掌握网络的人就是人类未来的主宰。谁掌握了信息,控制了网络,谁就拥有整个世界。”sniffers(嗅探器)几乎和internet有一样久的历史了。Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。随着Internet及电子商务的日益普及,Internet的安全也越来越受到重视。在Internet安全隐患中扮演重要角色之一的Sniffer以受到越来越大的关注。31.2 网络嗅探器的概述1.2.1 网络嗅探器的概念与原理通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬

12、件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:1、帧的目标区域具有和本地网络接口相匹配的硬件地址。2、帧的目标区域具有广播地址。在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。而sniffer就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种混杂方式时,该nc具备广播地址,它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具

13、备置成promiscuous方式的能力)可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为杂乱(promiscuous)模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。普通的情况下,网卡只接收和自己的地址有关的信息包,即传输到本地主机的信息包。要使Sniffer能接收并处理这种方式的信息,系统需要支持BP

14、F,Linux下需要支持SOCKET一PACKET。但一般情况下,网络硬件和TCPIP堆栈不支持接收或者发送与本地计算机无关的数据包,所以,为了绕过标准的TCPIP堆栈,网卡就必须设置为我们刚开始讲的混杂模式。一般情况下,要激活这种方式,内核必须支持这种伪设备Bpfilter,而且需要root权限来运行这种程序,所以sniffer需要root身份安装,如果只是以本地用户的身份进入了系统,那么不可能唤探到root的密码,因为不能运行Sniffer。也有基于无线网络、广域网络(DDN, FR)甚至光网络(POS、Fiber Channel)的监听技术,这时候略微不同于以太网络上的捕获概念,其中通常

15、会引入TAP (测试介入点)这类的硬件设备来进行数据采集。41.2.2 网络嗅探的检测和防范网络监听是很难被发现的,因为运行网络监听的主机只是被动地接收在局域局上传输的信息,不主动的与其他主机交换信息,也没有修改在网上传输的数据包。51. 对可能存在的网络监听的检测(1)对于怀疑运行监听程序的机器,用正确的IP地址和错误的物理地址ping,运行监听程序的机器会有响应。这是因为正常的机器不接收错误的物理地址,处理监听状态的机器能接收,但如果他的IP stack不再次反向检查的话,就会响应。(2)向网上发大量不存在的物理地址的包,由于监听程序要分析和处理大量的数据包会占用很多的CPU资源,这将导致

16、性能下降。通过比较前后该机器性能加以判断。这种方法难度比较大。(3)使用反监听工具如antisniffer等进行检测2. 对网络监听的防范措施(1)从逻辑或物理上对网络分段网络分段通常被认为是控制网络广播风暴的一种基本手段,但其实也是保证网络安全的一项措施。其目的是将非法用户与敏感的网络资源相互隔离,从而防止可能的非法监听。(2)以交换式集线器代替共享式集线器对局域网的中心交换机进行网络分段后,局域网监听的危险仍然存在。这是因为网络最终用户的接入往往是通过分支集线器而不是中心交换机,而使用最广泛的分支集线器通常是共享式集线器。这样,当用户与主机进行数据通信时,两台机器之间的数据包(称为单播包U

17、nicast Packet)还是会被同一台集线器上的其他用户所监听。因此,应该以交换式集线器代替共享式集线器,使单播包仅在两个节点之间传送,从而防止非法监听。当然,交换式集线器只能控制单播包而无法控制广播包(Broadcast Packet)和多播包(Multicast Packet)。但广播包和多播包内的关键信息,要远远少于单播包。(3)使用加密技术数据经过加密后,通过监听仍然可以得到传送的信息,但显示的是乱码。使用加密技术的缺点是影响数据传输速度以及使用一个弱加密术比较容易被攻破。系统管理员和用户需要在网络速度和安全性上进行折中。(4)划分VLAN运用VLAN(虚拟局域网)技术,将以太网通

18、信变为点到点通信,可以防止大部分基于网络监听的入侵。1.2.3 网络嗅探器软件需要解决的问题1、学习C#语言,了解网络数据报的详解。实现各种功能的编程。2、了解网络嗅探器的工作原理。还有之前需要一定的准备知识,如:HUB工作原理,网卡工作原理,局域网工作原理等等。3、网络报文的解析和协议解析问题。本次设计中主要的问题是TCP和UDP的嗅探已经针对使用OutLook Express时的用户名和密码的嗅探。2 网络嗅探器设计相关技术简述2.1 在交错环境下的嗅探技术2.1.1 ARP欺骗在基于IP通信的内部网中,我们可以使用 ARP欺骗的手段,ARP欺骗攻击的根本原理是因为计算机中维护着一个 AR

19、P高速缓存,并且这个ARP高速缓存是随着计算机不断的发出ARP请求和收到ARP响应而不断的更新的,ARP高速缓存的目的是把机器的IP地址和MAC地址相互映射。你可以使用 arp命令来查看你自己的 ARP高速缓存。假设机器A:IP地址为 ,MAC地址为 20-53-52-43-00-01 ,机器B:IP地址为 ,MAC地址为20-53-52-43-00-02,机器C:IP地址为 ,MAC地址为20-53-52-43-00-03 。现在机器B向机器A发出一个 ARP Reply(协议没有规定一定要等ARP Request出现才能发送ARPRepl

20、y,也没有规定一定要发送过ARP Request才能接收ARPReply),其中的目的IP地址为,目的MAC地址为20-53-52-43-00-01 ,而源IP地址为,源MAC地址为20-53-52-43-00-02 ,好了,现在机器A更新了他的 ARP高速缓存,并相信了IP地址为的机器的MAC地址是20-53-52-43-00-02 。当机器A发出一条FTP命令时-ftp,数据包被送到了Switch,Switch查看数据包中的目的地址,发现MAC为20-53-52-43-00-02,于是,他把数据包发到了机器B上。你可以同时欺骗

21、他们双方,完成中间人欺骗攻击 。 当然,在实际的操作中你还需要考虑到一些其他的事,比如某些操作系统在会主动的发送ARP请求包来更新相应的ARP入口等。62.1.2 交换机MAC地址表溢出Switch之所以能够由数据包中目的MAC地址判断出他应该把数据包发送到那一个端口上是根据他本身维护的一张地址表。对于动态的地址表,并且地址表的大小是有上限的,可以通过发送大量错误的地址信息而使SWITCH维护的地址表“溢出”,从而使他变成广播模式来达到我们要sniff 机器A与机器C之间的通信的目的。2.1.3 MAC地址伪造伪造MAC地址也是一个常用的办法,不过这要基于你网络内的Switch是动态更新其地址

22、表,这和ARP欺骗有些类似,只不过现在你是想要Switch相信你,而不是要机器A相信你。因为Switch是动态更新其地址表的,你要做的事情就是告诉Switch你是机器C。换成技术上的问题你只不过需要向Switch发送伪造过的数据包,其中源MAC地址对应的是机器C的MAC地址,现在Switch就把机器C和你的端口对应起来了。不过同时你需要DOS掉主机C。2.1.4 ICMP路由器发现协议欺骗这主要是由ICMP路由器发现协议(IRDP)的缺陷引起的,在Windows95、98、2000及SunOS、Solaris2.6等系统中,都使用了IRDP协议,SunOS系统只在某些特定的情况下使用该协议,而

23、Windows95,Windows95b, Windows98, Windows98se, 和Windows2000都是默认的使用IRDP协议。IRDP协议的主要内容就是告诉人们谁是路由器,设想一下,一个攻击者利用IRDP宣称自己是路由器的情况会有多么的糟糕!所有相信攻击者的请求的机器把他们所有的数据都发送给攻击者所控制的机器。2.1.5 ICMP重定向攻击所谓ICMP重定向,就是指告诉机器向另一个不同的路由发送他的数据包,ICMP重定向通常使用在这样的场合下,假设A与B两台机器分别位于同一个物理网段内的两个逻辑子网内,而A和B都不知道这一点,只有路由器知道,当A发送给B的数据到达路由器的时候

24、,路由器会向A送一个ICMP重定向包,告诉A直接送到B那里就可以了。设想一下,一个攻击者完全可以利用这一点,使得A发送给B的数据经过他。2.2 C#语言编程为适应未来社会的发展,Microsoft推出了.NET战略,以此作为下一代的网络应用基础。Microsoft的所有产品包括操作系统、办公软件和开发工具等都将转移到.NET平台撒谎能够来。.NET所包含的技术全面而先进,必将对今后的软件开发和应用形式产生巨大的影响,因此,及时地了解与掌握.NET技术,对于大多数开发人员说都是必要的。为了促进.NET应用程序的开发,Microsoft推出了Visual Studio.NET集成开发环境。这个集成

25、环境中包含了许多强大的工具,并且支持多种编程语言,如:C+托管扩展,JAVASCRIPT,DHTML,C#等,其中C#就是Microsoft为适应未来网络技术的发展而推出的新一代的编程语言,它专为.NET战略所开发的语言。C#本身作为一种功能强大的编程语言,它从著名的C+进化而来,并综合了C+和JAVA的优点,是.NET的主推语言,在.NET中起着不可或缺的作用。72.3 网络协议2.3.1 IP网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它定义了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,每一层都建立在它的下层之上

26、,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。一台设备上的第 n层与另一台设备上的第n层进行通信的规则就是第n层协议。在网络的各层中存在着许多协议,接收方和发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息。网络协议使网络上各种设备能够相互交换信息。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。在局域网中用得的比较多的是IPX/SPX.。用户如果访问Internet,则必须在网络协议中添加TCP/IP协议。TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文

27、译名为传输控制协议/互联网络协议)协议, TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTE

28、RNET中几乎可以无差错地传送数据。 对普通用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信。82.3.2 TCP该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。而使用TCP协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。传输控制协议(Tra

29、nsmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的RFC 793说明。在简化的计算机网络OSI模型中,它完成运输层所指定的功能。92.3.3 UDP用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 UDP 协议基本上是 IP 协议与上层协议的接口。 UDP 协议适用端口分别运行在同一台设备上的多个应用程序。由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通

30、过使用 UDP 的“端口号”完成的。例如,如果一个工作站希望在工作站 上使用域名服务系统,它就会给数据包一个目的地址 ,并在 UDP 头插入目标端口号 53 。源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。 UDP 端口的详细介绍可以参照相关文章。与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。UDP 适用于不需要 TCP 可靠机制的情形,比如,当高层协议或应用程序提供错

31、误和流控制功能的时候。 UDP 是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。103 系统需求分析3.1 系统性能要求1准确性和及时性软件处理的准确性和及时性是软件的必要性能。在软件设计和开发过程中,要充分考虑软件当前和将来可能承受的工作量,使软件的处理能力和响应时间能够满足企业对信息处理的需求。2标准性如规范的界面、作为业界标准的TCP/IP网络协议所要求的质量规范等;同时,在自主开发本软件时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。3开放性

32、和可扩充性网络嗅探软件在开发过程中,应该充分考虑以后的可扩充性。例如增添其它功能,用户的需求也会不断的更新和完善。所有这些,都要求软件提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过软件的开放性来完成,既软件应是一个开放软件,只要符合一定的规范,可以简单的加入和减少软件的模块。通过软件的修补、替换完成软件的升级和更新换代。4易用性和易维护性由于网络嗅探软件是面向的使用人员广泛,这些使用人员不一定对计算机非常熟悉。这就要求软件能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求软件应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的帮助,缩短

33、用户对软件熟悉的过程。113.2 软件实现的功能如今的电子信息市场上已经有很多种类的嗅探软件,所以可以说是五花八门的功能都已经有了,而这次毕业设计我选择这个课题是因为想了解更多网络安全方面的知识。在制作程序的语言上选择了从未接触过的C#,所以有一定的难度存在。因此在功能上就实现了IP数据包的截取,分析他们的截获时间,源地址,目标地址,协议类型,生存时间,版本,优先级,头长度,总长度,校验码,识别码,吞吐量,可靠性等信息。而本设计设置了TCP,UDP的识辨,同时为了方便信息的筛选,提供了UDP和TCP的选择监听。由于这些信息有可能一时间比较难处理,所以又设置了一个保存功能,用户可以选择你想要留下

34、的信息。为了真正意义上实现嗅探器,我还设置了POP监控,就是说在本机上的用户一旦使用了OutLook Express,那么登入的帐号和密码就会被嗅探出来,从而实现攻击。软件图示如下:图1、嗅探器的主界面图2、选择后的IP包的详细信息4 网络嗅探器的相关拓展网络监听是黑客们常用的一种方法。当成功地登录进一台网络上的主机,并取得了这台主机的超级用户的权限之后,往往要扩大战果,尝试登录或者夺取网络中其他主机的控制友。而网络监听则是一种最简单而且最有效的方法,它常常能轻易地获得用其他方法很难获得的信息。在网络上,监听效果最好的地方是在网关、路由器、防火墙一类的设备处,通常由网络管理员来操作。使用最方便

35、的是在一个以太网中的任何一台上网的主机上,这是大多数黑客的做法。在电话线路和无线电、微波中监听传输的信息比较好理解,但是人们常常不太理解为什么局域网中可以进行监听。甚至有人问:能不能监听不在同一网段的信息。下面就讲述在以太网中进行监听的一些原理。在令牌环中,道理是相似的。 对于一个施行网络攻击的人来说,能攻破网关、路由器、防火墙的情况极为少见,在这里完全可以由安全管理员安装一些设备,对网络进行监控,或者使用一些专门的设备,运行专门的监听软件,并防止任何非法访关。然而,潜入一台不引人注意的计算机中,悄悄地运行一个监听程序,一个黑客是完全可以做到的。监听是非常消耗CPU资源的,在一个担负繁忙任务的

36、计算机中进行监听,可以立即被管理员发现,因为他发现计算机的响应速度令人惊奇慢。 对于一台连网的计算机,最方便的是在以太网中进行监听,只须安装一个监听软件,然后就可以坐在机器旁浏览监听到的信息了。以太网协议的工作方式为将要发送的数据包发往连在一起的所有主机。在包头中包含着应该接收数据包的主机的正确地址。因此,只有与数据包中目标地址一致的那台主机才能接收信包。但是,当主机工在监听模式下,无论数据包中的目标物理地址是什么,主机都将接收。 在Internet上,有许多这样的局域网。几台甚至十几台主机通过一条电缆一个集线器连在一起。在协议的高层或用户看来,当同一网络中的两台主机通信时,源主机将写有目的主

37、机IP地址的数据包发向网关。但是,这种数据包并不能在协议栈的高层直接发送出去。要发送的数据包必须从TCP/IP协议的IP层交给网络接口,即数据链路层。 网络接口不能识别IP地址。在网络接口,由IP层来的带有IP地址的数据包又增加了一部分信息:以太帧的帧头。在帖头中,有两个域分别为只有网络接口才能识别的源主机和目的主机的物理地址,这是一个48位的地址。这个48位的地址是与IP地址对应的。也就是说,一个IP地址,必然对应一个物理地址。对于作为网关的主机,由于它连接了多个网络,因此它同时具有多个IP地址,在每个网络中,它都有一个。发向局域网之外的帧中携带的是网关的物理地址。在以太网中,填写了物理地址

38、的帧从网络接口中,也就是从网卡中发送出去,传送到物理的线路上。如果局域网是由一条粗缆或细缆连接机而成,则数字信号在电缆上传输,信号能够到达线路上的每一台主机。当使用集线器时,发送出去的信号到达集线器,由集线器再发向连接在信线器上的每一条线路。于是,在物理线路上传输的数字信号也能到达连接在集线器上的每一主机。 数字信号到达一台主机的网络接口时,在正常情况下,网络接口读入数据帧,进行检查,如果数据帧中携带的确良物理地址是自己的,或者物理地址是广播地址,则将数据帧交给上层协议软件,也就是IP层软件,否则就将这个帧丢弃。对于每一个到达网络接口的数据帧,都要进行这个过程。然而,当主机工作在监听模式下,则

39、所有的数据帧都将被交给上层协议软件处理。 局域网的这种工作方式,一个形象的例子是,大房间就像是一个共享的信道,里面的每个人好像是一台主机。人们所说的话是信息包,在大房间中到处传播。当我们对其中某个人说话时,所有的人都能听到。但只有名字相同的那个人,才会对这些话语做出反映,进行处理。其余的人听到了这些谈话,只能从发呆中猜测,是否在监听他人的谈话。当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网时,如果一台主机处于监听模式下,它还能接收到发向与自己不在同一子网(使用了不同的掩码、IP地址和网关)的主机的那些信包。也就是说,在同一条物理信道上传输的所有信息都可以被接收到。另外,要说明的是,In

40、ternet中使用的大部分协议都是很早设计的,许多协议的实现都是基于一种非常友好的,通信的双方充分信任的基础之上。因此,直到现在,网络安全还是非常脆弱的。在通常的网络环境下,用户的所有信息,包手户头和口令信息都是以明文的方式在网上传输。因此,对于一个网络黑客和网络攻击者进行网络监听,获得用户的各种信息并不是一件很困难的事。只要具有初步的网络和TCP/IP协议知识,便能轻易地从监听到的信息中提取出感兴趣的部分。12首先,网络监听软件运行时,需要消耗大量的处理器时间,如果在此时,就详细地分析包中的内容,许多包就会来不信接收而漏掉。因此,网络监听软件通常都是将监听到的包存放在文件中,待以后再分析。其

41、次,网络中的数据包非常复杂,两台主机之间即使连续发送和接受数据包,在监听到的结果中,中间必然会夹杂了许多别的主机交互的数据包。监听软件将同一TCP会话的包整理到一起,已经是很不错了。如果还希望将用户的详细信息整理出眯,需要根据协议对包进行大量的分析。面对网络上如此众多的协议,这个监听软件将会十分庞大。总 结本文主要研究了网络嗅探器的基本原理,相关技术,探讨了网络嗅探器的实现方法。在此基础上,设计并实现了这个网络嗅探器。主要工作包括:(1)掌握网络嗅探器的出现与发展、概念与基本原理。(2)在掌握C# 编程基础上,进行IP数据包的截取和分析,同时对TCP和IP进行不同分析。(3)利用上述知识,研究

42、并开发了网络嗅探器,经实践证明,其能有效地工作。致 谢论文完成之际,首先向我尊敬的导师郭步老师表示衷心的感谢。郭步老师在我的毕业设计研究过程中不断的给予帮助和耐心的指导毕业设计的注意点,对我的学习进程和研究方向提出了可贵的建议,并在百忙之中对课题研究给予了指导和帮助,使我顺利完成论文并实现了网络嗅探器的功能要求。同时我也要衷心的感谢给我们任课的各位老师,谢谢你们在大学四年的时间里耐心的细心教学,让我在计算机方面有很大的进步,把我完全的洗脑了,使我成功的从“电脑”跨越到“计算机”,再次谢谢所有老师,谢谢!参考文献1小彭.网络窃听器嗅探器J.电脑爱好者.2002年,24期:32页2戴英侠,许剑卓等

43、.计算机网络安全M.北京:清华大学出版社.2005.13哈顿.穆格(译). 网络安全手册(黑客札记) M,2004 4石志国,薛为民,尹浩. 计算机网络安全教程M. 清华大学出版社. 2007.02.5刘文涛.络安全开发包详解M.北京:电子工业出版社.2005.106蔡开裕.范金鹏. 计算机网络M.北京: 机械工业出版社.7胡道元. 网络设计师M.北京:清华大学出版社,2001.58小高知宏著,叶明译.TCPIP数据包分析程序篇M.北京:科学出版社.20039井口信和著,吴松芝等译 .TCPIP网络工具篇M.北京:科学出版社.200310谢希仁.计算机网络(第四版)M.北京:电子工业出版社.2

44、003.611武新华.翟长霖. 黑客攻防秘技大曝光 M.清华大学出版社,2006.1112蔡勇,钱兆丰,何正宏等.防毒反黑,就这么几招M.北京:中国电力出版社.200513 R. Agrawal and R. Srikant. Fast algorithms for mining association rules in large databasesM. In Research Report RJ 9839, Almaden. San Jose, CA, June 199414 Bernadette Schell. Webster's New World Hacker Diction

45、aryJ.2006.12.15 W.Richard Stevens. TCP/IP Illustracted Volum 1:The ProtocolsM. Addison Wesley/Pearson. 1999.11附 件主界面代码部分:using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Net;namespace PacketMonitor public

46、 class PacketMonitormForm : System.Windows.Forms.Form private delegate void UpdatePacketList(Packet p); private ArrayList users; private string user; private MenuItem popMonitor; private string pass; public PacketMonitormForm() InitializeComponent();Initialize(); users = new ArrayList();protected ov

47、erride void Dispose( bool disposing ) if( disposing ) if (components != null) components.Dispose();base.Dispose( disposing );static void Main() try Application.Run(new PacketMonitormForm(); catch (Exception e) MessageBox.Show(e.Message, "M Packet Monitor", MessageBoxButtons.OK,

48、MessageBoxIcon.Error);private void Initialize() / get all interfaces on this computer and list themIPAddress hosts = Dns.Resolve(Dns.GetHostName().AddressList;if (hosts.Length = 0)throw new NotSupportedException("This computer does not have non-loopback interfaces installed!");for(int i =

49、0; i < hosts.Length; i+) MonitorMenuItem.MenuItems.Add(hostsi.ToString(), new EventHandler(this.OnHostsClick);HostsMenu.MenuItems.Add(hostsi.ToString(), new EventHandler(this.OnHostsClick);m_PacketMonitors = new PacketMonitorHostsMenu.MenuItems.Count;for(int i = 0; i < m_PacketMonitors.Length;

50、 i+) m_PacketMonitorsi = new PacketMonitor(hostsi);m_PacketMonitorsi.NewPacket += new NewPacketEventHandler(this.OnNewPacket); m_PacketMonitorsi.NewPacket += new NewPacketEventHandler(this.EmailSniffer);m_Packets = new ArrayList();private void PacketMonitormForm_Closing(object sender, CancelEventArg

51、s e) OnToolBarClick(this, new ToolBarButtonClickEventArgs(StopButton);public void OnToolBarClick(object sender, ToolBarButtonClickEventArgs e) if (e.Button = StopButton) / stop listening on all interfacesfor(int i = 0; i < m_PacketMonitors.Length; i+) m_PacketMonitorsi.Stop();HostsMenu.MenuItemsi

52、.Checked = false;MonitorMenuItem.MenuItemsi.Checked = false;StatusBar.Text = "Stopped monitoring" else if (e.Button = StartButton) / start listening on all interfacesfor(int i = 0; i < m_PacketMonitors.Length; i+) try m_PacketMonitorsi.Start(); catch (Exception ex) MessageBox.Show(this,

53、 "There was a problem starting the packet monitor for interface " + m_PacketMonitorsi.IP.ToString() + "rnrn" + ex.Message + "", "M Packet Monitor", MessageBoxButtons.OK, MessageBoxIcon.Error);HostsMenu.MenuItemsi.Checked = true;MonitorMenuItem.MenuI

54、temsi.Checked = true;StatusBar.Text = "Monitoring all interfaces" else if (e.Button = ClearButton) / clear the packet listPacketList.Items.Clear();m_Packets.Clear();StatusBar.Text = "Cleared packet list" else if (e.Button = AboutButton) AboutForm af = new AboutForm();af.ShowDialog(this);public void OnHostsClick(object sender, EventArgs e) / start or stop listening on the specified interfaceint index = (MenuItem)sender).Index;HostsMenu.MenuItemsindex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论