基于套接字的网络嗅探器及其方法

文档序号:9491726阅读:719来源:国知局
基于套接字的网络嗅探器及其方法
【技术领域】
[0001]本发明涉及一种网络嗅探器,具体地涉及一种基于套接字的网络嗅探器及其方法。
【背景技术】
[0002]随着互联网的普及,越来越多的网络应用和信息资源被放在了互联网上,与此同时,互联网的复杂性和网络犯罪的增长,给网络的稳定和安全带来了巨大的压力,网络安全性和可靠性显得越发重要。因此,对于能够分析、诊断网络、测试网络稳定性和安全性的工具软件的需求也越来越迫切。网络嗅探器作为网络管理、系统稳定与网络安全的基础,始终发挥着至关重要的作用。一方面攻击者可以利用其来监听网络中数据,以达到非法获取信息的目的。另一方面网络管理者也可用其分析网络状况,查找漏洞以供修补。
[0003]目前,大多数操作系统都为应用程序提供了访问数据链路层的手段,它使得应用程序可拥有如下功能:监视数据链路层上所收到的分组。这使得我们可以在普通计算机上通过像Tcpdump这样的程序来监视网络,而无须使用特殊的硬件设备。如果结合网卡的混杂模式,我们甚至可以监听局域网内的所有分组。
[0004]网络嗅探行为就是利用网络嗅探器,在网络的任何一个位置上获取数据,并加以分析整理,得出有关网络状态、数据流动情况等信息,从而达到对网络的管理、攻击以及信息截获等目的,是网络监听的重要手段。而网络嗅探器就是能够捕获网络中数据的工具。
[0005]网络嗅探器一般用于分析网络的流量,以便找出所关心的网络中潜在的问题。假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来做出精确的问题判断。也有出于保密等的需要而用于监听等场合,当然也有不少黑客利用它窃取重要信息来达到自己的目的。
[0006]网络嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而网络嗅探器则捕获真实的网络报文。嗅探器将以太网卡设置成“混杂模式”来达到这个目的。网络嗅探器对网络上主机间的通信,能给出一个详细的,逐包的统计信息。可以选择某一台主机,看看它正在同哪些主机进行通信,使用了哪些协议,传输了一些什么内容。对于这类工具,常常可以设置详细的过滤条件,可以针对信息的源主机、目的主机、使用的协议、使用的端口以及包的长度来设置过滤条件,也可以是这些条件的组合。
[0007]“端口嗅探”通常指用同一信息对目标计算机的所有所需扫描的端口进行发送,然后根据返回端口状态来分析目标计算机的端口是否打开、是否可用。“端口嗅探”行为的一个重要特征,是在短时期内有很多来自相同的信源地址,传向不同的目的端口的包。
[0008]通常进行端口嗅探的工具目前主要采用的是端口嗅探软件,也称之为“端口嗅探器”。端口嗅探器也是一种程序,它可以对目标主机的端口进行连接,并记录目标端口的应答。端口嗅探器通过选用远程TCP/IP协议不同的端口的服务,记录目标计算机端口给予回答的方法,可以收集到很多关于目标计算机的各种有用信息,比如是否有端口在监听,是否允许匿名登录,是否有可写的FTP目录,是否能用Telnet等。
[0009]嗅探器作为一种网络通讯程序,是通过对网卡的编程来实现网络通讯的,对网卡的编程可以使用通常的套接字(Socket)方式来进行。
[0010]套接字有三种类型:流式套接字,数据报套接字及原始套接字。
[0011]流式套接字定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数据传输。数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。
[0012]无连接服务器一般都是面向事务处理的,一个请求一个应答就完成了客户程序与服务程序之间的相互作用。若使用无连接的套接字编程,程序的流程如图1所示。
[0013]面向连接服务器处理的请求往往比较复杂,不是一来一去的请求应答所能解决的,而且往往是并发服务器。使用面向连接的套接字编程,程序的流程如图2所示。
[0014]面向连接服务器的套接字工作过程如下:服务器首先启动,通过调用socket O建立一个套接字,然后调用绑定函数bind O将该套接字和本地网络地址联系在一起,再调用监听IistenO使套接字做好监听的准备,并规定它的请求队列的长度,之后就调用接收函数acc印t()来接收连接。客户在建立套接字后就可调用连接函数connect O和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用读函数readO和写函数write O来发送和接收数据。最后,待数据传送结束后,双方调用关闭函数close O关闭套接字。
[0015]在MFC中Microsoft为套接字提供了相应的类CAsyncSocket和CSocket,CAsyncSocket提供基于异步通信的套接字封装功能,CSocket则是由CAsyncSocket派生,提供更加高层次的功能,例如可以将套接字上发送和接收的数据和一个文件对象(CSocketFile)关联起来,通过读写文件来达到发送和接收数据的目的,此外CSocket提供的通信为同步通信,数据未接收到或是未发送完之前调用不会返回。此外通过MFC类开发者可以不考虑网络字节顺序和更多的通信细节。
[0016]在一次网络通信/连接中有以下几个参数需要被设置:本地IP地址、本地端口号、对方端口号、对方IP地址。左边两部分称为一个半关联,当与右边两部分建立连接后就称为一个全关联。在这个全关联的套接字上可以双向的交换数据。如果是使用无连接的通信则只需要建立一个半关联,在发送和接收时指明另一半的参数就可以了,所以可以说无连接的通信是将数据发送到另一台主机的指定端口。此外不论是有连接还是无连接的通信都不需要双方的端口号相同。因此只需要做很少的工作就可以开发出利用网络进行通信的软件。

【发明内容】

[0017]针对上述技术问题,本发明的目的是:提供一种基于套接字的网络嗅探器,开发工作量小,成本低廉。
[0018]本发明的技术方案是:
一种基于套接字的网络嗅探器,其特征在于,包括数据包捕获模块、数据包解析模块和数据包显示模块;
所述数据包捕获模块用于设置套接字和捕获数据包,所述数据包解析模块用于数据包头解析和子协议解析,所述数据包显示模块包括List输出控件和Edit输出控件,所述List输出控件将数据包头分析结果显示在界面中,所述Edit输出控件用于输出数据包内容分析结果。
[0019]优选的,所述Edit输出控件输出显示行号、十六进制形式数据包内容、ASCII码形式数据包内容。
[0020]本发明还公开了一种使用上述的网络嗅探器的网络嗅探方法,其特征在于,包括如下步骤:
S01:创建原始套接字,并设置其操作选项;
S02:将原始套接字绑定到本地网卡地址上,设置网卡为混杂模式;
S03:初始化数据包接收结构;
S04:当接收到数据包时先解析数据包头,再根据数据包协议进行子协议解析;
S05:解析完以后分别通过List输出控件和Edit输出控件将解析的数据包内容输出。
[0021]优选的,所述数据包内容包括协议、IP源地址、IP目标地址、TCP源端口号、TCP目标端口号、包的数据部分。
[0022]优选的,所述步骤S04包括对捕获的数据包进行拆包分析包括解析源IP、解析目标IP、计算IP头长,通过协议映射模块确定数据包协议类型,将数据包送入子协议解析模块根据不同的协议类型分析其IP地址、数据包大小、端口号。
[0023]本发明又公开了一种基于套接字的TCP端口嗅探方法,其特征在于,包括如下步骤:
Sll:调用扫描Scan方法,读取目的IP、起始端口、目的端口 ;
S12:创建对应的线程,并建立套接字;
S13:向目的端口建立TCP连接,如果收到TCP回复则成功建立连接;将成功建立连接的端口号输出之后关闭连接和线程;如果没有收到TCP回复则连接失败,重新执行步骤S12。
[0024]与现有技术相比,本发明的优点是:
1.基于套接字的网络嗅探器通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制,通过MFC类开发者可以不考虑网络字节顺序和更多的通信细节,开发工作量小,成本低廉。
[0025]2.这种嗅探方式隐蔽,不会对正常的网络传输造成任何影响,同时数据收集也十分丰富。通过网络嗅探技术实现审计跟踪、攻击检测等在网络安全问题上具有重要意义。通过网络嗅探技术收集到网络中传送的数据后对这些数据进行分析可以帮助解决在各种网络上的性能问题并排除网络故障,进一步可以产生报表等数据分析结果以更好的支持网络的运行。
【附图说明】
[0026]下面结合附图及实施例对本发明作进一步描述:
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1