计算机网络设计与安全技术 课件9 网络抓包程序设计.pptx
《计算机网络设计与安全技术》第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(); 异步方式,调