网络嗅探器的设计与实现课案

上传人:我** 文档编号:114743754 上传时间:2019-11-12 格式:DOCX 页数:22 大小:653.55KB
返回 下载 相关 举报
网络嗅探器的设计与实现课案_第1页
第1页 / 共22页
网络嗅探器的设计与实现课案_第2页
第2页 / 共22页
网络嗅探器的设计与实现课案_第3页
第3页 / 共22页
网络嗅探器的设计与实现课案_第4页
第4页 / 共22页
网络嗅探器的设计与实现课案_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《网络嗅探器的设计与实现课案》由会员分享,可在线阅读,更多相关《网络嗅探器的设计与实现课案(22页珍藏版)》请在金锄头文库上搜索。

1、 计算机网络课程设计报告网络嗅探器的设计与实现目录第一章 设计目的、任务与要求11.1设计的目的11.2设计的任务与要求1第二章 系统分析设计12.1需求分析12.2 原理分析12.3网络中数据传送过程以及数据包结构22.3.1信息传送过程22.3.2 数据包的结构2第三章 系统实现43.1 Winpcap技术43.2系统主要模块73.3 实现界面9第四章 心得体会104.1 程序总结104.2 个人总结10参考文献10附录11第一章 设计目的、任务与要求1.1设计的目的编写程序实现捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。1.2设计的任务与要求IP

2、数据包的捕获与分析,程序能够自动的收集局域网中的IP数据包,能在程序运行时进行显示。 实现在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。程序的具体要求如下:1)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。2)形成记录结果的日志文件。第二章 系统分析设计2.1需求分析 在通常情况下,网络通讯的Socket程序只能响应与自己硬件地址想匹

3、配的或者是以广播形式发出的数据桢,对于其他形式的数据桢,比如已到达网络接口但却不是发给此地址的数据桢,网络接口在验证目的MAC并非自身地址之后,将不进行响应,也就是说应用程序无法收取与自己无关的数据包。所以,我们要想实现截获流经网络设备的所有数据包,都要采取一点特别的手段了:将网卡设置为混杂模式,这样以来,该主机的网卡就可以捕获所有流经其网卡的数据包和帧。利用基于Win32的捕获数据包和网络分析的Winpcap可以实现从网卡捕获以及分析IP数据包。2.2 原理分析Winpcap所包含的packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。 Wpcap.dll提供了

4、更加友好、功能更加强大的函数调用。WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。2.3网络中数据传送过程以及数据包结构2.3.1信息传送过程计算机网络将要传输的报文分割成一个个小的数据片段,称为“分组”,在每一个分组的数据前加上传输数据所必需的信息“报头”,就构成了网络数据传输的基本部件“数据包”。在计算机网络中,传输的信息是以数据包为基本传输单位的,数据包的内容是被分割后的信息

5、块,在每个数据包上附加了多层包头。在一个数据包里,信息内容往往是不完整的,而在每一个数据包头部,完整地包含了传送此数据包所需的全部来源及目标的地址信息。在一个数据包最里层是被传输的数据。在数据的外面首先由处理此数据的应用程序将数据片断外包裹上应用层的协议,然后交给网络通信系统软件,网络通信系统软件根据此数据包的传输方式,为数据包裹上传输层协议,交给下一层协议。下面的网络层协议根据数据包的路由地址,为其包裹上网络层协议,并交给下一层协议。下面的链路层协议为数据包加上来源和目标物理地址的链路层协议后交给下一层协议。在物理层,由网络通信硬件系统按照通信设备的要求将数据包转换成一个个符合物理层协议的电

6、脉冲,通过网络接口电路发送的网络传输媒介上。这一串串电脉冲沿着传输媒介到达下一个网络节点。在每一个网络节点上,节点设备将收到的电脉冲还原为数字信号,并对数字信号进行判读和分析,了解此数据包的最终目的地,并根据节点上的路由表为此数据包选择一个到达目的地的最佳路由,并对此数据包进行必要的修改和签章后再次发送到网络传输媒介上。数据包就这样通过一个个网络节点,最终到达了信息传输的目的地。在目标主机上,依据网络协议,逐层地对数据包进行签收和校验,如果数据包未出现差错,则剥除此层的协议,将数据向上层递交。通过如此逐层剥除与递交,最终在应用层由应用软件系统将一个个还原后的数据包拼接还原为原始的状态,完成了数

7、据的传输过程。2.3.2 数据包的结构捕获的网络数据包的结构如图所示:DLC数据帧头IP数据包结构UDP/TCP/ICMP/IGMP数据报结构数据其中DLC数据帧头:目的MAC(6字节)源MAC(6字节)以太网类型(2字节)IP数据包结构:UDP数据包结构:TCP数据包结构:ICMP数据包结构: IGMP数据包结构: 第三章 系统实现3.1 Winpcap技术 winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。Winpcap是一个Win32平台下用于抓

8、包和分析的系统。包括一个内核级别的packet filter,一个底层的DLL(packet.dll)和一个高级的独立于系统的DLL(Wpcap.dll)。它用于windows系统下的直接的网络编程。Winpcap特别适用于下面这几个经典领域: 网络及协议分析 网络监控 通信日志记录 Traffic generators 用户级别的桥路和路由 网络入侵检测系统(NIDS) 网络扫描 安全工具通过安装winpcap组件,即可在win32程序上调用winpcap所提供的函数,来截获经过网卡的所有数据包。Winpcap配置过程如下:在winpcap官网(http:/www.winpcap.org/i

9、nstall/default.htm)上下载安装winpcap 驱动和 DLL组件,如图9所示,然后进行安装。再到http:/www.winpcap.org/devel.htm.下载winpcap开发包,解压到任意目录,可以看到里面包含了:Lib,Include,文档和实例程序。手动添加相关库文件。如果不添加,运行程序时会出现这样的错误:fatal error C1083: Cannot open include file: pcap.h: No such file or directory。第一步,在VC6.0的菜单栏上工具选项目录下面添加将winpcap的include,lib目录添加进V

10、C6.0的环境变量,如图12所示,最后点击确定。第二步,在工程设置连接中,导入wpcap.lib和Packet.lib库,如图13。在C/C+中,添加WPCAP,HAVE_REMOTE。经过以上步骤,Winpcap就配置好了。3.2系统主要模块数据包的捕获和分析模块流程图如下:开始扫描网卡选择网卡并设置为混杂模式监听网卡捕获和解析IP数据包输出解析信息并存入日志结束IP数据包捕获的重要代码分析:if (adhandle = pcap_open_live(d-name, /* 设备名称*/65536, /* portion of the packet to capture.*/* 65536 g

11、rants that the whole packet will be captured on allthe MACs.*/1, /* 混杂模式*/1000, /* 读超时为1秒*/errbuf /* error buffer*/) = NULL)fprintf(stderr, nUnable to open the adapter. %s is not supported by LibPcapn);/* Free the device list */pcap_freealldevs(alldevs);return -1;printf(n正在监听%s.n, d-description);/ A

12、t this point, we dont need any more the device list. Free it pcap_freealldevs(alldevs);/ 开始捕获包 pcap_loop(adhandle, 0, ethernet_protocol_analysis, NULL);mylog.close();/关闭文件 3.3 实现界面第四章 心得体会4.1 程序总结 在这次课程设计中,主要犯的错误主要有以下几种: 不知道如何添加头文件。C+的有些库文件比如WSOCK32.LIB,wpcap.lib,Packet.lib都不是VC6.0所自带的库文件,所以在编译前都应该提

13、前添加进去。关于IP数据包的捕获这一方面,由于了解不深,不知道如何开始编程。后来通过查阅资料,了解到了有好几种捕获IP数据包的方法,后来选取了基于Winpcap系统的捕获方法,winpcap提供了一系列相关的函数进行了扫描网卡,捕获数据包的方法,解决了这个问题。4.2 个人总结 这次我选取的是网络嗅探器的设计与实现,即IP数据包的捕获分析,为此我将上个学期所学的计算机网络这门课的教材又捧起来重新浏览了几次,重点学习了网络层中几个重要的协议内容以及应用场所。考虑到这是比较基本的知识应用,所以我选择了C+作为程序实现的语言,并且C+对我来说也比较顺手。 我借助winpcap技术,利用它提供的函数来

14、扫描本机的网卡,选择网卡并设置为可以接收所有数据包的混杂模式,来捕获和分析经过该网卡的所有数据包。 这次最大的收获应该是利用在计算机网络课程上学到的相关知识,实现了端口扫描以及IP数据包的捕获问题,大大加深了我对网络相关协议的了解程度,其中对于几个协议的数据包的结构更是印象深刻,同时也提高了我解决问题的能力。 最后感谢一直陪伴我们的老师,在课程设计过程中辛勤回答着我们各种各样的问题。 参考文献1严伟,潘爱民译,计算机网络,2012年3月2360个人图书馆,常见的端口扫描类型及原理,http:/ 新浪博客,Windows下IP数据包捕获http:/ 源代码如下:#include pcap.h#include #pragma comment(lib,wpcap.lib)#include stdio.h#include /*下边是以太网的协议格式 */stru

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号