网络嗅探器的设计与实现(共22页).doc
《网络嗅探器的设计与实现(共22页).doc》由会员分享,可在线阅读,更多相关《网络嗅探器的设计与实现(共22页).doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上计算机网络 课 程 设 计题 目 网络嗅探器的设计与实现 系 (部) 姓 名 学 号 指导教师 2015年7月18日专心-专注-专业计算机网络课程设计任务书一、设计题目、内容及要求题目:网络嗅探器的设计与实现内容: 本设计是关于网络嗅探器的设计与实现,功能包括实现网络层抓包,对获得包的源和目的地址、端口、协议等进行分析和实现简单的包嗅探器功能。要求: 1.实现网络嗅探器的界面2. 实现抓取数据包的功能。3. 实现清空列表功能二、要求的设计成果(课程设计说明书、设计实物、图纸等) 1课程设计报告2实现网络嗅探器的程序代码三、进程安排1、设计工作4学时2、实现与调试20学
2、时3、课程设计报告6学时四、主要参考资料 1王群 计算机网络安全技术2吴功宜,董大凡王珺等.计算机网络高级软件编程技术【M】.北京:清华大学出版社,20083谢小特,王勇军.基于winPcap的捕包程序设计【J】.软件特刊,2007(11):71-724胡晓元,史浩山.winpcap包截获系统的分析及其应用【J】.计算机工程,2005(1):96-975赵辉,叶子青.VisualC+系统开发实例精粹【M】,北京:人民邮电出版社,2005网络嗅探器的设计与实现摘要:网络嗅探器是对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法。本设计是关于网络嗅探器的设计与实现,其功能包
3、括实现网络层抓包 ,对获得包的源和目的地址、端口、协议等进行分析和实现简单的包嗅探器功能。关键字:网络嗅探器;数据包捕获; 套接字引言由于网络技术的发展,计算机网络的应用越来越广泛,其作用也越来越重要。计算机网络安全问题更加严重,网络破坏所造成的损失越来越大。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。嗅探器是一种常用的收集有用数据的方法,可以作为网络数据包的设备。嗅探器是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。通常
4、的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。1 基本概念1.1 嗅探器每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址唯一地表示了网络上的机器。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应。嗅探
5、器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,其内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:a)广播方式:该模式下的网卡能够接收网络中的广播信息。b)组播方式:设置在该模式下的网卡能够接收组播数据。c)直接方式:在这种模式下,只有目的网卡才能接收该数据。d)混杂模式:在这种模式下的网卡能够接收一切通过它
6、的数据,而不管该数据是否是传给它的。嗅探程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包,而不管该数据是否传给它的。1.2 相关协议1.2.1 IP协议网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的
7、主机的地址(源地址)和接收它的主机的地址(目的地址)。1.2.2 TCP协议 如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向上传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。1.2.3 UDP协议 UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向
8、连接的服务,UDP主要用于那些面向查询-应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。1.3 数据包“包”(Packet)是通信传输中的数据单位,一般也称“数据包”。 TCP/IP协议是工作在第三层()、第四层()上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。
9、 数据包的结构非常复杂,主要由“目的IP地址”、“源IP地址”、“净载数据”等部分构成。正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。比如说当你上网时打开某个网页,这个简单的动作,就是你先发送数据包给那个网站,它接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。2 网络嗅探器的作用嗅探器是网络的抓包工具,可以对网络中大量数据抓取,从而方便使用者对网络中用户的一些信息进行分析,所以,通常被黑客运用于网络攻击。我们如果也能掌握网络嗅探器的
10、原理和设计,可以将它运用与网络故障检测、网络状况的监视,还可以加强企业信息安全防护。3 网络嗅探器原理嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按
11、通常的正常模式工作,而必须将其设置为混杂模式。具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此
12、时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。下面给出数据包的总体结构:3.1 UDP数据段头 数据在从应用层到达传输层时,将添加TCP数据段头,或是UDP数据段头。其中UDP数据段头比较简单,由source port(源端口号) 、destination port(目的端口号) 、udp length(udp长度) 、udp checksum(udp校验和)组
13、成。UDP报头结构体为:typedef struct udphdr unsigned short sport;/*source port(源端口号)*/unsigned short dport;/*destination port(目的端口号)*/unsigned short len;/*udp length(udp长度)*/unsigned short cksum;/*udp checksum(udp校验和)*/UDP_HDR;3.2 TCP数据段头TCP数据头则比较复杂,以20个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,由source port(源端口号)、destinat
14、ion port(目的端口号) 、顺序号、确认号、TCP头长 、校验和 紧急指针、可选项(0或更多的32位字)、数据(可选项)。组成。TCP报头结构体为:typedef struct tcpheader unsigned short int sport;/*source port (源端口号)*/unsigned short int dport;/*destination port(目的端口号)*/unsigned int th_seq;/*sequence number(包的序列号)*/unsigned int th_ack;/*acknowledgement number(确认应答号)*/
15、unsigned char th_x:4;/*unused(未使用)*/unsigned char th_off:4;/*data offset(数据偏移量)*/unsigned char Flags;/*标志全*/unsigned short int th_win;/*windows(窗口)*/unsigned short int th_sum;/*checksum(校验和)*/unsigned short int th_urp;/*urgent pointer(紧急指针)*/TCP_HDR;3.3 IP数据段头在网络层,还要给TCP数据包添加一个IP数据段头以组成IP数据报。IP数据头以大
16、端点机次序传送,从左到右,版本字段的高位字节先传输(SPARC是大端点机;Pentium是小端点机)。如果是小端点机,就要在发送和接收时先行转换然后才能进行传输。IP数据段头格由版本 IHL 服务类型 总长、标志、 分段偏移、头校验和、源地址、目的地、选项(0或更多)组成。IP数据报头的结构体为:struct ipheader unsigned char ip_hl:4;/*header length(报头长度)*/unsigned char ip_v:4;/*version(版本)*/unsigned char ip_tos;/*type os service服务类型*/unsigned s
17、hort int ip_len;/*total length (总长度)*/unsigned short int ip_id;/*identification (标识符)*/unsigned short int ip_off;/*fragment offset field(段移位域)*/unsigned char ip_ttl;/*time to live (生存时间)*/unsigned char ip_p;/*protocol(协议)*/unsigned short int ip_sum;/*checksum(校验和)*/unsigned int ip_src;/*source addre
18、ss(源地址)*/unsigned int ip_dst;/*destination address(目的地址)*/ ;4 网络嗅探器的设计在以太网中, 信息是以明文的形式在网络上传输 , 当将网络适配器设置为混杂模式时, 由于采用以太网广播信道争用的方式, 使得监听系统与正常通信的网络能够并联连接, 并可捕获任何一个在同一冲突域上传输的数据包。IEEE802. 3 标准的以太网采用的是持续CSMA 的方式, 正是由于以太网采用这种广播信道争用的方式, 使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截我所要的信息, 这是捕获数据包的物理基础。首先,抓包系统必须绕过操作
19、系统的协议栈来访问在网络上传输的原始数据包, 这就要求一部分运行在操作系统核心内部, 直接与网络接口驱动交互。这个部分是系统依赖的, 在W inpcap 的解决方案里它被认为是一个设备驱动, 称作NPF ( NetgroupPacket F ilter) 。W inpcap 提供了两个不同的库: Packet. dll 和W pcap. dll。Wpcap. dll提供了更加友好、功能更加强大的函数调用。W inPcap 的优势在于提供了一套标准的抓包接口, 与libpcap 兼容, 可使得原来许多UN IX 平台下的网络分析工具快速移植过来,便于开发各种网络分析工具, 充分考虑了各种性能和效
20、率的优化, 包括对于NPF 内核层次上的过滤器支持, 支持内核态的统计模式, 提供了发送数据包的能力。前者提供了一个底层AP I, 伴随着一个独立于M icrosoft 操作系统的编程接口, 这些AP I可以直接用来访问驱动的函数; 后者导出了一组更强大的与libpcap 一致的高层抓包函数库( capture prmi itives) 。这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。网络嗅探器工作在网络环境的底层, 拦截所有正在网络上传送的数据, 并且通过相应的解析处理, 可以实时分析这些数据的内容, 进而分析所处的网络状态和整体拓扑布局。含了相应设备的名称和描述。取得网
21、卡列表后就在屏幕上显示出来, 如果网卡没有被发现就显示有关错误, pcap _ findalldevs ( ) 同其他的libpcap函数一样有一个errbuf参数, 当有异常情况发生时,这个参数会被pcap填充为某个特定错误字串。程序功能示意如下:获得网卡的信息后就可以按数据捕获的要求打开网卡。但是 大部分的包捕获程序都将混杂模式设为默认。数据包的过滤通过设置数据流过滤规则来实现,数据包过滤处理时嗅探技术中的难点和重点,WinPcap提供了最强大的数据流过滤引擎。它才用了一种高效的方法来捕获网络数据流的某些数据且常常和系统的捕获机制相集成。过滤数据的函数定 UDP的起始位置,就可以解析出原端
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 嗅探器 设计 实现 22
限制150内