




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Winpcap使用介绍1.Winpcap 简介Winpcap(windowspacketcapture)是在 Win32 平台上的强大的、 有较好扩展性的底层网络分析体系结构,是 Unix 下的 lipbcap 移植到 windows 下的产物,是 Win32 环境下数据包捕获的开放代码函数库。Winpcap 是第一个 Win32 开放式的捕获包的体系结构,能够支持大多数应用程序的需要。如图 A-1 所示, Winpcap 包含了一个内核级的数据包过滤器 NPF(NetgroupPacketFilter)一个底层动态链接库(Packet.dll)和一个高层的独立于系统的库(Wpcap.dll)
2、。这三个模块中,NPF 属于内核级,其他两模块属于用户级。p回画Wpcap.dll级-数据就路星驱动程序I-U网络层数据包图 A-1Winpcap 的结构图NPF 模块过滤数据包,将数据包不做任何改动的传递给用户,它还包含了一些操作系统专用代码(如:时间戳管理)。Packet.dll 模块提供了 Win32 平台下的捕获包的驱动接口。实际上,不同版本的 Windows都提供了不同的内核模块和应用程序之间的接口函数,Packet.dll 有一套独立于系统的 API来处理这些差异。基于 Packet.dll 编写的程序可以不经过重新编译就在各种 Win32 平台下实现捕获数据包。Packet.dl
3、l 还包含了其他一些函数。它可以进行一些底层的操作,Packet.dll和 NPF 都依赖于操作系统,并且由于 Windows95/98 和 WindowsNT/2000 之间操作系统结构的不同而在不同版本的操作系统上有所不同。Wpcap.dll 库不依赖于操作系统,并且它包含了一些其它高层的函数,比如:过滤器生成器、用户定义的缓冲区和高层特性(数据统计和构造数据包)。包截获程序网络检测程序数据转储程序Packet.dll其他程序;1.直接访问NPF2,调用Packet.dll3.调用Wpcap.dll内核级其他协议栈Winpcap 提供的功能包括四个方面:1)捕获原始数据包,包括在共享网络上
4、各主机发送/接收的以及相互之间交换的数据包;2)在数据包发往应用程序之前,按照自定义的规则将某些特殊的数据包过滤掉;3)在网络上发送原始的数据包;4)收集网络通信过程中的流量信息。Winpcap 的主要功能在于独立于主机协议(如 TCP-IP)而发送和接收原始数据包。也就是说,Winpcap 不能阻塞、过滤或控制其他应用程序数据包的收发,它只是监听共享网络上传送的数据包。因此,它不能用于 QoS 调度程序或个人防火墙。2,使用 Winpcap 编程的一般步骤使用 Winpcap 编程的准备工作如下:1)下载 Winpcap 驱动程序和相应版本的 WpdPack 包(DevelopersPack
5、)。WpdPack包中含有 Winpcap 编程所需的头文件和 lib 库文件以及一些示例程序和帮助文档。下载地址:http:/install/default.htm。当前 Winpcap 的最新版本是 WinPcap4.0。2)根据屏幕提示安装 Winpcap 驱动程序,安装后重启机器。3) 将 WpdPack 包解压到某个自定义的目录,在该目录中会看到 docs、Include、lib、Examples 等文件夹。4) 在 VC 中 设 定 Include 目 录 及 Library 目 录 。 具 体 做 法 是 : 打 开 VC 后 , 点 击“Tools
6、-Option-Directories”,在 includefiles 中添力口,,wpdpackInclude 目录(”,,”为步骤 3 中自定义的目录);在 Libraryfiles 中添加,,wpdpackLib 目录。5) ,点击Project-settings-Link,在 Object/librarymodules 中添力口 wpcap.lib。基于 Winpcap 的应用程序一般按照下面几个步骤:1) 获取网络设备列表;2) 选择网卡并打开;3) 当捕获数据包时,可能需要设置过滤器;4) 捕获数据包或者发送数据包。3.Winpcap 动态库前面已经介绍过,Winpcap 提供了两
7、个动态链接库:Packet.dll 和 Wpcap.dll。因此,程序员可以使用两类 API:一套是直接映射到内核调用的原始函数,包含在 Packet.dll 中;另一套是 Wpcap.dll 提供的高层函数,这些函数更强大,用户更容易掌握。1) Packet.dll 相关的主要数据结构及函数Packet.dll 提供了一些实现如下功能的底层函数:安装、启动和停止 NPF 设备驱动从 NPF 驱动模块接收数据包向 NPF 驱动模块发送数据包获取可用网络适配器列表获得适配器各种各样信息,比如适配器描述、查询和设置适配器的底层参数主要数据结构typedefstruct_ADAPTERADAPTER
8、typedefstruct_PACKETPACKETstructbpf_hdrstructbpf_stattypedefstructNetTypeNetTypeIP 地址列表和子网掩码/描述一个网络适配器/描述一组网络数据包的结构/数据包头部/当前捕获数据包的统计信息/描述网络类型的数据结构/描述一个网络适配器的 IP 地址typedefstructnpf_if_addrnpf_if_addr主要函数PCHARPacketGetVersion()返回关于 dll 的版本信息。BOOLEANPacketSetNumWrites(LPADAPTERAdapterObject,intnwrites)
9、设置调用 PacketSendPacket()函数发送一个数据包副本所重复的次数。BOOLEANPacketSetReadTimeout(LPADAPTERAdapterObject,inttimeout)设置在接收到一个数据包后“休息”的时间。BOOLEANPacketSetBpf(LPADAPTERAdapterObject,structbpf_program*fp)设置内核级的数据包过滤器。一BOOLEANPacketGetStats(LPADAPTERAdapterObject,structbpf_stat*s)返回几个关于当前捕获报告的统计信息。其中 bpf_stat 结构包含 bs
10、_recv,bs_drop,ps_ifdrop 和 bs_capt4 个参数。bs_recv 表示从网络适配器捕获数据包开始所接收到的所有数据包的数目,包括丢失的数据包;bs_drop 表示丢失的数据包数目。在驱动缓冲区已经满时,就会发生数据包丢失的情况。BOOLEANPacketSetBuff(LPADAPTERAdapterObject,intdim)设置与数据包捕获相关的内核级缓冲区大小。BOOLEANPacketGetNetType(LPADAPTERAdapterObject,NetType*type)返回某个网络适配器的 MAC 类型。NetType 结构里包含了 LinkSpee
11、d(速度)和 LinkType(类型)。其中 LinkType 包含以下几种情况:NdisMedium802_3:Ethernet(802.3)NdisMediumWan:WANNdisMedium802_5:TokenRing(802.5)NdisMediumFddi:FDDINdisMediumAtm:ATMNdisMediumArcnet878_2:ARCNET(878.2)LPADAPTERPacketOpenAdapter(LPTSTRAdapterName)打开一个网络适配器。BOOLEANPacketSendPacket(LPADAPTERAdapterObject,LPPACK
12、ETlpPacket,BOOLEANSync)发送一个或多个数据包的副本。INTPacketSendPackets(LPADAPTERAdapterObject,PVOIDPacketBuff,ULONGSize,BOOLEANSync)发送 PacketBuff 所指缓冲区中的数据包。LPPACKETPacketAllocatePacket(void)如果运行成功,返回一个_PACKET 结构的指针,否则返回 NULL。成功返回的结果将会传送到PacketReceivePacket()函数,PacketReceivePacket()函数将接收来自驱动的网络数据包。VOIDPacketInit
13、Packet(LPPACKETlpPacket,PVOIDBuffer,UINTLength)初始化一个_PACKET 结构。VOIDPacketFreePacket(LPPACKETlpPacket)释放参数提供的_PACKET 结构。BOOLEANPacketReceivePacket(LPADAPTERAdapterObject,LPPACKETlpPacket,BOOLEANSync)从 NPF 驱动程序读取网络数据包及统计信息。数据包编码结构:|bpf_hdr|data|Padding|bpf_hdr|data|Padding|BOOLEANPacketSetHwFilter(LPA
14、DAPTERAdapterObject,ULONGFilter)为接收到的数据包设置硬件过滤规则。以下为一些典型的过滤规则:NDIS_PACKET_TYPE_PROMISCUOUS:设置为混杂模式,接收所有经过的数据包NDIS_PACKET_TYPE_DIRECTED:只有目的地为本地主机网络适配器的数据包才会被接收NDIS_PACKET_TYPE_BROADCAST:只有广播数据包才会被接收NDIS_PACKET_TYPE_MULTICAST:只有与本地主机网络适配器相对应的多播数据包才会被接收NDIS_PACKET_TYPE_ALL_MULTICAST:所有多播数据包均被接收NDIS_PA
15、CKET_TYPE_ALL_LOCAL:所有本地数据包均被接收BOOLEANPacketGetAdapterNames(LPSTRpStr,PULONGBufferSize)返回可以得到的网络适配器列表及描述。BOOLEANPacketGetNetInfo(LPTSTRAdapterName,PULONGnetp,PULONGmaskp)返回某个网络适配器的 IP 地址和子网掩码。BOOLEANPacketGetNetInfoEx(LPTSTRAdapterNames,npf_if_addr*buff,PLONGNEntries)返回某个网络适配器的全面地址信息。其中 npf_if_addr
16、结构包含 PAddress、SubnetMask 和 Broadcast3 个参数。IPAddress 表示 IP地址;SubnetMask 表示子网掩码;Broadcast 表示广播地址。VOIDPacketCloseAdapter(LPADAPTERlpAdapter)关闭参数中提供的网络适配器,释放相关的 ADAPTER 结构。BOOLEANPacketRequest(LPADAPTERAdapterObject,BOOLEANSet,PPACKET_OID_DATAOidData)指定适配器上运行的询问/设置函数的类型。BOOLEANPacketSetDumpName(LPADAPTE
17、RAdapterObject,void*name,intlen)设置适配器处于 dump 模式时接收数据包的文件。BOOLPacketStopDriver()停止并卸载 Winpcap 设备驱动器。2) Wpcap.dll 相关的主要数据结构及函数主要数据结构typedefstructpcappcap_ttypedefstructpcap_dumperpcap_dumper_ttypedefstructpcap_ifpcap_if_ttypedefstructpcap_addrpcap_addr_tstructpcap_file_headerstructpcap_pkthdrstructpca
18、p_stat主要函数intpcap_findalldevs_ex(char*host,char*port,SOCKETsockctrl,structpcap_rmtauth*auth,pca/捕获数据包的网络接口的描述符/数据包存储文件的描述符/接口链表中某个接口的信息/描述接口地址信息/数据包存储文件的头部/捕获数据包的头部结构/捕获数据包的统计信息p_if_t*alldevs,char*errbuf)枚举系统所有网络设备的信息。取代旧的函数 pcap_findalldevs()。pcap_t*pcap_open(constchar*source,intsnaplen,intflags,intread_timeout,structpcap_rmtauth*auth,char*errbuf)为捕获/发送数据包打开一个网络接口。pcap_open()能够替代所有的 pcap_ope
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兰州博文科技学院《文化项目案例解读》2023-2024学年第一学期期末试卷
- 山东省淄博市恒台县2025届三年级数学第二学期期末联考模拟试题含解析
- 云南省曲靖市马龙县2025届四下数学期末经典模拟试题含解析
- 华北水利水电大学《文学改编影视研究》2023-2024学年第二学期期末试卷
- 山西传媒学院《汽车美容与装饰》2023-2024学年第二学期期末试卷
- 天津石油职业技术学院《测试技术与信号处理》2023-2024学年第二学期期末试卷
- 长春电子科技学院《高级日语听力I》2023-2024学年第二学期期末试卷
- 江西省宜春市四校2025年高三下期中考试(物理试题文)试题含解析
- 银川第二中学2024-2025学年高三下学期总复习阶段测试生物试题试卷含解析
- 2024北京五中分校初二(下)期中数学试题及答案
- 浙江空气盒子新材料有限责任公司年产20000吨功能性塑料薄膜及多用途包装制品项目环境影响报告
- 电工学(第8版)(上册 电工技术) 课件全套 秦曾煌 第1-14章 电路的基本概念与基本定律- 传感器
- 正念减压疗法的神经机制及应用研究述评
- 2023年成都市金牛区社区工作者招聘考试真题
- 教师发展营造积极学习环境的策略与方法
- 【原创】23祖先的摇篮(第一课时)
- 值日生表格模板
- 胆源性胰腺炎教学查房记录
- 连锁酒店采购成本控制问题及对策研究-以如家酒店为例
- 全国水利ABC证单选题六
- 管道支架重量计算表-2
评论
0/150
提交评论