- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
《计算机网络设计与安全技术》第9章网络抓包程序设计1
学习内容:(1)网络抓包软件体系结构分析;(2)基于WinPcap的抓包程序设计;(3)基于sharpCap的抓包程序设计;(4)基于原始套接字的抓包程序设计。学习目标:(1)了解网络抓包方法;(2)学会选用WinPcap或SharpCap进行抓包编程;(3)学会利用原始套接字进行网络抓包程序设计。2
9.1?网络抓包软件体系结构分析网络抓包是对网络上收发的各层数据包进行捕获,以便进行协议分析。在结构上涉及到网络层、核心技术和用户交互层次,内容丰富。39.1.1网络抓包技术分析(1)基于WinPcap:在Windows平台下访问数据链路层,能够应用于网络数据包的构造、捕获和分析。该开源组件已经达到了工业标准的应用要求,便于程序员进行开发。(2)基于SharpCap:SharpCap是把WinPcap用C#重新封装而来的。在C#编程时,需要先安装Winpcap组件,再引用以上SharpPcap的2个库文件PacketDotNet.dll,SharpPcap.dll。/projects/sharppcap/files/SharpPcap/4.2.0/。(3)基于原始套接字技术
49.1.2WinPcap的体系结构
59.2?基于WinPcap的抓包程序设计9.2.1WinPcap编程基础一般采用C++语言调用WinPcap功能函数。wpcap.dll为了获得与释放已连接的网络适配器设备列表,提供了下列函数:在文件\wpcap\libpcap\pcap\pcap.h中:structpcap_if;structpcap_addr;intpcap_findalldevs(pcap_if_t**alldevsp,char*errbuf);voidpcap_freealldevs(pcap_if_t*alldevsp);在文件wpcap\libpcap\remote-ext.h中:intpcap_findalldevs_ex(char*source,structpcap_rmtauth*auth,pcap_if_t**alldevs,char*errbuf);
6WinPcap功能函数的调用关系图:
79.2.2WinPcap应用实例下面给出几个实例,分别是获取网卡、抓包和发包程序。(1)获取网卡信息通过获取适配器列表,并在屏幕上显示出来,如果没有找到适配器,将打印错误信息。并在程序结束时释放设备列表。(2)抓包本程序俘获局域网内UDP报文。(3)发包要在命令行下运行,给与参数:网卡描述符。或者添加代码findalldevs()。
9.3?基于sharpCap的抓包程序设计8usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSharpPcap;namespacecapExample1{classProgram{staticvoidMain(string[]args){stringver=SharpPcap.Version.VersionString;Console.WriteLine(SharpPcap{0},capExample1.cs,ver);vardevices=CaptureDeviceList.Instance;//获取网卡列表if(devices.Count1){Console.WriteLine(本机没有网卡);return;}......}}}9.3.1SharpPcap应用入门示例用于显示本地网卡信息。
运行结果:9
109.3.2常用数据结构和函数PcapDevice类是整个操作的核心。(1)获得网络设备一个系统的网络设备可能不止一个,因而使用了一个列表类来保存所有的设备。这里使用了一个静态方法进行操作:PcapDeviceListdevices=SharpPcap.GetAllDevices();
11(2)抓包过程1)打开设备:device.PcapOpen(true,1000);2)抓包操作:有3种方法:F1device.PcapStartCapture(); 异步方式,调
文档评论(0)