文档详情

计算机网络设计与安全技术 课件9 网络抓包程序设计.pptx

发布:2025-04-18约8.2千字共10页下载文档
文本预览下载声明

《计算机网络设计与安全技术》

第9章网络抓包程序设计

学习内容:

(1)网络抓包软件体系结构分析;

(2)基于WinPcap的抓包程序设计;

(3)基于sharpCap的抓包程序设计;

(4)基于原始套接字的抓包程序设计。学习目标:

(1)了解网络抓包方法;

(2)学会选用WinPcap或SharpCap进行抓包编程;

(3)学会利用原始套接字进行网络抓包程序设计。

2

9.1网络抓包软件体系结构分析

网络抓包是对网络上收发的各层数据包进行捕获,以便进行协议分析。在结构上涉及到网络层、核心技术和用户交互层次,内容丰富。

9.1.1网络抓包技术分析

(1)基于WinPcap:在Windows平台下访问数据链路层,能够应用于网络数据包的构造、捕获和分析。该开源组件已经达到了工业标准的应用要求,便于程序员进行开发。

(2)基于SharpCap:SharpCap是把WinPcap用C#重新封装而来的。在C#编程时,需要先安装Winpcap组件,再引用以上SharpPcap的2个库文件

PacketDotNet.dlI,SharpPcap.dll。

/proiects/sharppcap/files/SharpPcap/4.2.0/。

(3)基于原始套接字技术

3

9.1.2WinPcap的体系结构

其他协议栈

核心缓冲区

转储引擎

日志程序

用户层

磁盘

NPF

4

9.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(pcapift*alldevsp);

在文件wpcap\libpcaplremote-ext.h中:

intpcap_findalldevs_ex(char*source,structpcap_rmtauth

*auth,pcap_if_t**alldevs,char*errbuf);

5

功能函数的调用关系图:

应用程序

wpcap.dl1

pcap_open_offline

packet.dll

PacketGetAddressesFromRegistry

系统调用

释放网络适配器列表

pcap_freealldevs

rpcap_remoteact_getsock

pcap_add_if_win32

add_or_find_if

PacketGetNetInfoEx

PacketUpdateAdInfo

PacketFindAdInfo

PacketGetLinklayerFromRegistry

获得网络适配器列表

pcap_findalldevs_ex

pcap_findalldevs

PacketGetAdapterNames

PacketPopulateAdaptersInfoList

PacketGetAdaptersNPF

PacketAddAdapterNPF

PacketRequest

DeviceloControl

NPF

NPF_IoControl6

WinPcap

9.2.2WinPcap应用实例

下面给出几个实例,分别是获取网卡、抓包和发包程序。

(1)获取网卡信息

通过获取适配器列表,并在屏幕上显示出来,如果没有找到适配器,

将打印错误信息。并在程序结束时释放设备列表。

(2)抓包

本程序俘获局域网内UDP报文。

(3)发包

要在命令行下运行,给与参数:网卡描述符。或者添加代码findalldevs()。

7

{

示例用于显示本地网卡信息。classProgram

staticvoidMain(string[]args)

stringver=SharpPcap.Version.VersionString;

Console.WriteLine(SharpPcap{0

显示全部
相似文档