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