windows基于WFP捕获raw socket 报文

windows基于WFP捕获raw socket 报文的几种方案


初步列举一些方案,可行性待验证:

1.Windows Filtering Platform 的网络驱动框架可以通过重载 NDIS 驱动中的 NdisFRegisterDevice() 回调函数来捕获 raw socket 报文,网络驱动框架会使用此回调函数捕获在 NDIS 驱动程序中过滤到的原始套接字报文,并将其发送给 WFP 以进行高级数据包处理。驱动回调函数甚至可以捕获 WAN 外壳报文,以便为 WAN 增加可靠数据流服务(RDS)层提供自定义外壳,这也是实现 RDS 层复杂工作流的一种方法。

2.WFP网络驱动框架可以使用ODR框架的反向路由解析功能来捕获raw socket报文。ODR在处理TCP/UDP/RAW协议时可以解析对端的IP地址和端口号,并根据收发报文的IP地址或端口号进行匹配和路由,以此获取raw socket报文。

3.WFP网络驱动框架是一个构建数据协议处理器和其他网络驱动程序的Windows抽象层,可以为多层网络应用提供高子级的网络堆叠。使用WFP驱动框架可以捕获内核态缓冲区中的raw socket报文。和以往一样,raw socket会被放入数据链中,但是WFP会使用一种特殊的处理过程,称为内核缓冲区捕获。这一过程使用一个专门的中间缓冲区,和处理RAW socket局限使用的某些特殊后端数据链,而这一缓冲区会提供一个存储应用层所需的报文传输层所需的报文,以便进行处理。此外,该缓冲区还可以被设置为非中断模式,以在报文实际发送时被读取,以捕获整个帧(包括MAC类型/标签/帧等),并进行额外的分析。

4.Windows Filtering Platform网络驱动框架可通过使用网络过滤器驱动程序(NDF)实现raw socket报文的捕获。网络过滤器驱动程序能够在应用程序和网络驱动程序之间共享报文的信息,从而使应用程序能够搜索和改变网络数据。网络过滤器驱动程序可以拦截并捕获raw socket报文,并调用Windows Filtering Platform网络驱动框架以便在raw socket报文上应用过滤条件和策略。

5.Windows Filtering Platform网络驱动框架可以通过实现相应的函数回调函数来捕获raw socket报文。需要实现的回调函数有NdisFCallbackReceiveNetBufferLists针对NDIS数据链路层类型,FwpsCompleteOperation0等对于针对WFPS网络报文流类型。在这些函数回调中,WFPS可以获得raw socket报文,并进行特定的处理 判断,决定最终的动作。

6.Windows Filtering Platform通过使用NDIS(网络驱动接口)Filter驱动来捕获raw socket报文。NDIS FILTER驱动会装载在系统核心中,它充当一个传输层组件,在网络协议栈中捕获所有网络流量,并对其进行过滤。NDIS过滤器驱动可以捕获的raw socket报文中的各种高级报文,包括UDP数据,TCP数据等。

你可能感兴趣的:(网络,网络协议,tcp/ip,wpf,raw,socket)