网站大量收购闲置独家精品文档,联系QQ:2885784924

开发基于winPcap的嗅探器.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
开发基于winPcap的嗅探器

网络安全课程设计报告 (2015-2016 第一学期) 题目 开发基于winPcap的嗅探器 专 业 学 号 姓 名 指 导 教 师 日 期 评 分 分 细 则 评分项 优秀 良好 中等 差 遵守机房规章制度 实验原理分析与设计 课题功能实现情况 设计验收与答辩 课程设计报告书写 简 短 评 语 教师签名: 年 月 日 评分等级 备注 开发基于inPcap的嗅探器 开发一个捕获所有流经网卡的数据包,并进行分析。 操作系统:Windows 2000/XP 编程环境:Visual c++6.0 :Winpcap 内容:所开发的程序可以输出本机所有网卡的信息和捕获流经网卡的数据包 并能够过滤出IP、TCP、UDP、ICMP等数据包 WinPcap的网络编程模式。 WinPcap设计并实现网络数据包的捕获与解析。,它是在广播式网络环境下利用计算机网络接口截获目的地为其它计算机的数据报文的一种工具。 在以太网中,信息是以明文的形式在网络上传输 ,当将网络适配器设置为混杂模式时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。 IEEE802.3标准的以太网采用的是持续CSMA的 方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获,这是捕获数据包的物理基础。 首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包,这就要求一部分运行在操作系统核心内部,直接与网络接口驱动交互。这个部分是系统依赖的,在Winpcap的解决方案里它被认为是一个设备驱动,称作NPF(Netgroup PacketFilter)。 Winpcap提供了两个不同的库:Packet.dll和Wpcap.dll。Wpcap.dll提供了更加友好、功能更加 强大的函数调用。WinPcap的优势在于提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来,便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。前者提供了一个底层API,伴随着一个独立于Microsoft操作系统的编程接口,这些 API可以直接用来访问驱动的函数;后者导出了 一组更强大的与libpcap一致的高层抓包函数库 (captureprimitives)。这些函数使得数据包的捕获 以一种与网络硬件和操作系统无关的方式进行。 网络嗅,拦截所有正在网络上传送的数据,并且通过相应的解析处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体拓扑布局。 步骤:程序所实现嗅探器的总体结构 开始嗅探 1.获得本地网络网卡列表 获取一个已经绑定的网卡列表,然后Winpcap对捕获网络数据端口进行设定。 pcap引擎找出并设定监听的网络接口。Winpcap提供了pcap_findalldevs_ex()函数,这个函数返回一个指向pcap_if结构的链表,其中的每一项都包含了一个己经绑定的适配器(网卡)的全部信息。其中name和description这两项分别包,如果网卡没有被发现就显示有关错误,pcap_findalldevs()同其他的libpcap函数一样有一个errbuf参数,当有异常情况发生时,这个参数会被pcap填充为某个特定错误字串。 部分主要程序示意如下: 主函数部分: // 获取网卡列表 if(pcap_findalldevs(alldevs, errbuf) == -1) { fprintf(stderr,pcap_findalldevs发生错误: %s\n, errbuf); exit(1);} // 输出网卡信息 for(i=0,d=alldevs; d; d=d-next,i++) { ifprint(d,i+1)} if(i==0) { printf(\n没有找到任何网卡,请确认Winpcap已经安装.\n); return -1;} ②调用

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档