- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章Winpcap编程技术.doc
第七章 Winpcap编程技术
7.1 winpcap简介
WinPcap是一个重要的抓包工具,它是libpcap的Windows版本。WinPcap 是由意大利Fulvio Risso 和Loris Degioanni等人提出并实现的应用于Win32 平台的数据包捕获与分析的一种软件包,包括内核级的数据包监听设备驱动程序、低级动态链接库(Packet.dll)和高级系统无关库(Wpcap.dll)。
WinPcap的主页:http://winpcap.polito.it/你可以到这里下载它的驱动、DLLs和开发包。你只需要把下载回来的驱动安装到你的计算机上,用你的程序调用Packet.dll就可以了。Packet.dll在安装的时候会被拷贝到你的系统目录下,也可以用WinRAR打开安装包,可以看到里面的文件,直接提取你想要的Packet.dll。
开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能:捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;在网络上发送原始的数据报;收集网络通信过程中的统计信息。
winpcap的主要功能在于独立于主机协议(如TCP-IP)而发送和接收原始数据报。也就是说,winpcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。目前,winpcap开发的主要对象是windows NT/2000/XP 95/98/Me。Winpcap的结构
Winpcap的结构如图7-1所示。
Winpcap数据包捕获程序将虚拟设备驱动增加在Windows的内核中,可以捕获和发送通过原始套接口的原始数据包(Raw Packet)。它的核心部分是包过滤驱动程序NPF(Netgroup Packet Filter)。NPF过滤器负责将监听到的所有数据包进行过滤,只把用户关心的数据包提交给用户程序。
NPF有两个主要部件Network Tap和Packet Filter。NPF将Network Tap放在了网卡驱动程序和NDIS之上。当一个数据包到达网络接口时,链路层驱动程序将其交给Network Tap,Network Tap会把数据包发送给Packet Filter,Filter将符合过滤条件的数据包过滤掉后,将未过滤掉的数据包提交给与过滤器直接相连的核心缓冲区。然后等待系统缓冲区满后,再将数据包拷到用户缓冲区中。监听程序可以直接从用户缓冲区中读取捕获的数据包。
WinPcap包括三个部分
第一个模块:内核级的包过滤驱动程序
NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件, 是架构的核心(在Win95/98 中是一个VXD文件,在NT/2000 中是一个SYS 文件) ,它的主要功能是过滤数据包,在包上附加时间戳、数据包长度等信息。
第二个模块:低级动态链接库packet.dll
在Win32 平台上提供了与NPF 的一个通用接口。 packet.dll数据包驱动程序库是与libpcap 相兼容的一组用户级的函数库。
图7-1 winpcap的结构
第三个模块:用户级的Wpcap.dll
通过调用packet . dll 提供的函数生成,它包括了过滤器生成等一系列可以被用户级调用的高级函数,另外还有诸如数据包统计及发送功能。
packet.dll和Wpcap.dll:
packet.dll直接映射了内核的调用
Wpcap.dll提供了更加友好、功能更加强大的函数调用
编程人员既可以使用包含在packet . dll 中的低级函数直接进入内核级调用,也可以使用由wpcap. dll 提供的高级函数调用,这样功能更强,使用也更为方便。
wpcap. dll 的函数调用会自动调用packet . dll 中的低级函数,并可能被转换成若干个NPF 系统调用。
7. 3 Packet.dll的相关数据结构及函数
1.相关的数据结构
(1)typedef struct _ADAPTER *LPADAPTER 描述一个网络适配器。
它包含了两个域:
HANDLE hFile
TCHAR SymbolicLink
hFile是一个指向驱动器句柄的指针。通过该句柄,我们可以直接与驱动器进行通信,如接收或发送数据包。SymbolicLink是一个字符串,她包含了当前打开的网络适配器的名称。
(2)typedef struct _PACKET *LPPACKET 描述一组网络数据报的结构。
它包含了以下几个域:
OVERLAPPED OverLapped
PVOID
文档评论(0)