Win10Pcap驱动部分学习

Win10Pcap驱动部分学习

Win10Pcap简介

win10Pcap在win10下运行。Win10Pcap与winPcap的动态库兼容,安装Win10Pacp的动态库之后,可以支持Wireshark 以及其它的依赖于winpcap的程序。

Win10Pcap特性

1.在win10 x86以及x64系统下运行稳定
2.通过NDIS6.x驱动模型实现
3.同样支持win8.1,8,7,Server 2012 R2,Server 2012以及Server 2008 R2的32位与64位系统。
4.是基于GPLv2许可的开源程序
5.支持IEEE802.1Q协议
6.支持最多10000字节的超长帧
7.与winpcap底层二进制兼容

与winpcap的区别

WinPcap是基于NDIS 5.x驱动模型开发的。Win10Pcap就是将WinPcap使用NDIS 6.x实现,以此达到在win10上稳定运行。同时添加了代码来支持IEEE802.1Q。

一些结构体

win10pcap使用的是NDIS_PROTOCOL_DRIVER_CHARACTERISTICS结构体,说明它是一个协议驱动。

NDIS_PROTOCOL_DRIVER_CHARACTERISTICS结构体

typedef struct _NDIS_PROTOCOL_DRIVER_CHARACTERISTICS {
  NDIS_OBJECT_HEADER                     Header;
  UCHAR                                  MajorNdisVersion;
  UCHAR                                  MinorNdisVersion;
  UCHAR                                  MajorDriverVersion;
  UCHAR                                  MinorDriverVersion;
  ULONG                                  Flags;
  NDIS_STRING                            Name;
  SET_OPTIONS_HANDLER                    SetOptionsHandler;
  BIND_HANDLER_EX                        BindAdapterHandlerEx;
  UNBIND_HANDLER_EX                      UnbindAdapterHandlerEx;
  OPEN_ADAPTER_COMPLETE_HANDLER_EX       OpenAdapterCompleteHandlerEx;
  CLOSE_ADAPTER_COMPLETE_HANDLER_EX      CloseAdapterCompleteHandlerEx;
  NET_PNP_EVENT_HANDLER                  NetPnPEventHandler;
  UNINSTALL_PROTOCOL_HANDLER             UninstallHandler;
  OID_REQUEST_COMPLETE_HANDLER           OidRequestCompleteHandler;
  STATUS_HANDLER_EX                      StatusHandlerEx;
  RECEIVE_NET_BUFFER_LISTS_HANDLER       ReceiveNetBufferListsHandler;
  SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler;
#if (NDIS_SUPPORT_NDIS61)
  DIRECT_OID_REQUEST_COMPLETE_HANDLER    DirectOidRequestCompleteHandler;
#endif 
} NDIS_PROTOCOL_DRIVER_CHARACTERISTICS, *PNDIS_PROTOCOL_DRIVER_CHARACTERISTICS;

Header
NDIS_OBJECT_HEADER 结构体。设置其Type成员为NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS

通过将Revision成员设置为以下之一来指定版本:
NDIS_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_2,为NDIS6.1版本添加了DirectOidRequestCompleteHandler成员。

设置size成员为NDIS_SIZEOF_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_2.

NDIS_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_1,NDIS6.0的原始版本。
设置size成员为NDIS_SIZEOF_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_1.

MajorNdisVersion
协议驱动使用的NDIS库的主版本。当前值为0x06。

MinorNdisVersion
NDIS的子版本。以下是可用的值以及其含义
0 NDIS 6
20 NDIS 6.20
30 NDIS 6.30

MajorDriverVersion
为协议驱动的主版本号保留。可以指定为任意值

MinorDriverVersion
为子版本号保留。可以指定为任意值

Flags
NDIS保留成员。驱动程序要设置为0

Name
驱动服务的宽字节字符串名字

SetOptionsHandler
ProtocolSetOptions函数指针

BindAdapterHandlerEx
ProtocolBindAdapterEx 函数指针.

UnbindAdapterHandlerEx
ProtocolUnbindAdapterEx函数指针

OpenAdapterCompleteHandlerEx
ProtocolOpenAdapterCompleteEx 函数指针.

CloseAdapterCompleteHandlerEx
ProtocolCloseAdapterCompleteEx函数指针。

NetPnPEventHandler
ProtocolNetPnPEvent 函数指针。

UninstallHandler
ProtocolUninstall 函数指针, 可以为NULL.

OidRequestCompleteHandler
ProtocolOidRequestComplete 函数指针.

StatusHandlerEx
ProtocolStatusEx 函数指针,可以为NULL

ReceiveNetBufferListsHandler
ProtocolReceiveNetBufferLists 函数指针.

SendNetBufferListsCompleteHandler
ProtocolSendNetBufferListsComplete 函数指针.

DirectOidRequestCompleteHandler
ProtocolDirectOidRequestComplete 函数指针.可选函数,如果驱动不支持direct OID请求接口,设置为空。

注意:
驱动调用NdisRegisterProtocolDriver 来注册特性,包括默认的驱动函数指针。协议驱动初始化一个NDIS_PROTOCOL_DRIVER_CHARACTERISTICS 结构体并将指针作为ProtocolCharacteristics 参数传入NdisRegisterProtocolDriver函数。

使用需求:
支持NDIS6.0或之后的版本

头文件:
Ndis.h

什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets。 这是一种简单的实现方式,因为操作系统已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并且提供了一个与读写文件类似的,令人熟悉的接口。 然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网络中的数据包。也就是说,那些应用程序需要访问原始数据包,即没有被操作系统利用网络协议处理过的数据包。 WinPcap产生的目的,就是为Win32应用程序提供这种访问方式; WinPcap提供了以下功能 捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的 在数据包发送给某应用程序前,根据用户指定的规则过滤数据包 将原始数据包通过网络发送出去 收集并统计网络流量信息 以上这些功能需要借助安装在Win32内核中的网络设备驱动程序才能实现,再加上几个动态链接库DLL。 所有这些功能都能通过一个强大的编程接口来表现出来,易于开发,并能在不同的操作系统上使用。这本手册的主要目标是在一些程序范例的帮助下,叙述这些编程接口的使用。 如果您现在就想开始摸索这些功能,您可以直接进入 WinPcap用户手册. 哪些程序在使用WinPcap WinPcap可以被用来制作许多类型的网络工具,比如具有分析,解决纷争,安全和监视功能的工具。特别地,一些基于WinPcap的典型应用有: 网络与协议分析器 (network and protocol analyzers) 网络监视器 (network monitors) 网络流量记录器 (traffic loggers) 网络流量发生器 (traffic generators) 用户级网桥及路由 (user-level bridges and routers) 网络入侵检测系统 (network intrusion detection systems (NIDS)) 网络扫描器 (network scanners) 安全工具 (security tools) 什么是WinPcap做不到的 WinPcap能 独立地 通过主机协议发送和接受数据,如同TCP-IP。这就意味着WinPcap不能阻止、过滤或操纵同一机器上的其他应用程序的通讯:它仅仅能简单地"监视"在网络上传输的数据包。所以,它不能提供类似网络流量控制、服务质量调度和个人防火墙之类的支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值