问题标签 [wfp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1036 浏览

windows - 全局强制使用 HTTP 代理

我们这里有一个任务 - 将所有运行在 Win7 和 Win8 计算机上的应用程序的所有 http 流量重定向到某个代理。所以我想到的唯一一件事就是使用 WFP 标注驱动程序来检查传出的数据包并相应地修改它们。所以问题是——这是对 Windows 计算机上运行的所有应用程序全局强制使用 HTTP 代理的唯一方法吗?谢谢。

0 投票
1 回答
617 浏览

c - WinDivert发送自建ICMP包失败

每个人。我已经使用 WinDivert 开发了一个 ICMP 数据包发送器。192.168.1.232 是我的机器,192.168.1.158 是远程机器。所有函数都返回成功,但我在使用 Wireshark 的远程机器上看不到 ICMP 数据包。这段代码有什么问题吗?谢谢。

0 投票
1 回答
795 浏览

c# - WinDivert 1.0.5 DivertRecv() 方法获取最后一个错误 998

我一直在为 WFP(Windows 过滤平台)编写我的 c# 包装器,我使用 WinDivert 1.0.5,这个导入语法

这个函数调用语法

但是该函数每次调用都返回 false ,并且 GetLastWin32Error() 得到错误代码 998 。请帮助我。

0 投票
1 回答
390 浏览

c++ - 如何让 WinDivert 在 Windows 8 上运行

我正在将开源 WFP 驱动程序 WinDivert 用于 Web 过滤器。它适用于 Windows Vista 和 Windows 7,但不适用于 Windows 8。DivertSend 函数失败并显示以下消息:警告:无法重新注入数据包 (1237)。有没有人知道WinDivert是否可以与Windows 8一起使用?如果是这样,我该怎么做才能解决这个问题。感谢您的任何建议。

0 投票
1 回答
430 浏览

c++ - 使用 Dev C++ 开发 WFP

我想运行这个示例 WFP 应用程序,但是当我尝试使用 Dev C++ (5.5.3) 编译它时,编译器说

所有 WFP API 函数和结构都相同。我怀疑我需要在标头中包含一些内容或/并添加一些编译器参数,但我不知道在哪里可以找到有关它的任何信息。

0 投票
1 回答
139 浏览

java - 捕获网络数据包并根据它们的进程(程序)名称对其进行分组

我正在做一些研究,我需要捕获每个数据包离开我的计算机并确定它来自哪个进程。在其他世界中,诸如 Microsoft 网络监视器之类的东西。请指导我正确的开始方式。

0 投票
1 回答
1622 浏览

c - 如何使用预编译的驱动程序模块制作 WinDivert 程序?

我需要使用WinDivert来制作程序。我很困惑如何制作和编译使用预编译的 WinDivert.dll、WinDivert.sys、WinDivert.inf 和 WdfCoInstaller*.dll 文件的 C 程序。

例如,如果我想通过一些修改来编译passthru示例,我该怎么做?

预编译的驱动程序模块似乎工作正常,预编译的示例也是如此,但我需要自己制作一个程序。

注意:我使用的是 Windows 8.1。我安装了 Visual Studio 2013 Ultimate 和 WDK 8.1。我认为它不适用于 Visual Studio,或者如果可以,我不知道如何。

0 投票
1 回答
4532 浏览

c - 什么是阻止在 Windows 中安装驱动程序?

我在 Windows 中编写了一个 C 程序,它使用了一些来自WinDivert的预编译文件。我的程序使用来自 WinDivert 的 .dll 并且 .dll 中的一些函数安装 WinDivert.sys 驱动程序。还有一些来自 WinDivert 的文件是其中的一部分(一个 .lib、一个 .inf 和另一个 .dll)。

问题是在我的一台计算机(Windows 8.1 64 位)上,一切正常。但是,当我尝试在我的笔记本电脑 (Windows 8.1 64)、我朋友的笔记本电脑 (Windows 7 64) 或另一个 Windows 7 64 台式机上使用该程序时,某些东西会阻止驱动程序的安装。我不确定是什么阻止了它或如何阻止它被阻止,因为在所有计算机上:

+我正在使用管理员配置文件

+在管理员命令提示符下运行程序

+尝试禁用防火墙、防病毒等(尽管在正常工作的计算机上运行良好)

+据我所知,我所有的安全设置都是一样的

+注意:驱动程序确实有一个有效的签名。

为什么驱动程序可以完美地安装在一台计算机上,而不能安装在其他三台计算机上?可能是什么问题?

0 投票
1 回答
3851 浏览

c# - 用于从托管代码中过滤 HTTPS 的 Windows 过滤平台

我想为 Windows 开发一个基于主机的防火墙,主要用于过滤以 HTTPS 开头的 URL!我知道微软正在展示 WFP 来替代已弃用的旧技术,例如防火墙/过滤器挂钩、NDIS、TDI、WSA 和 Winsock 2 (LSP)。但 WFP 目前不支持带有主机名或 URL 的过滤器。此外,WFP 仅在 C/C++ 中,并且在 .NET 中没有可用的 C# 包装器。

我尝试了@basil 的WinDivert演示应用程序 webfilter,它解析 TCP 端口 80(默认 HTTP)上 IPv4 的出站流量中的数据包,重置服务器连接(TCP RST)并向客户端(浏览器)发送 HTML 响应,然后是 TCP FIN如果 URL 与文本文件中作为命令行参数给出的任何列入黑名单的条目匹配,否则重新注入它们......

我的问题是:我可以更改此代码以支持 HTTPS(将端口更改为默认 443)以及 IPv6 吗?如果是这样,我愿意编写一个 P\Invoke 包装类来从托管 C# 代码中调用它。

额外:可以使用 SSH 隧道绕过此解决方案,还有其他方法可以绕过它吗?

0 投票
1 回答
815 浏览

networking - WFP 过滤器:通过 FwpsInjectNetworkSendAsync 发送时丢弃的原始 TCP 数据包

我在 FWPM_LAYER_OUTBOUND_IPPACKET_V4 注册了一个内核 WFP 过滤器,在其中我将每个 IPv4 NET_BUFFER_LIST 复制到一个缓冲区,并从工作线程中重新注入它而不进行修改。我使用 FWPM_SUBLAYER_UNIVERSAL 作为子层。基本上:

从 sendComplete 回调返回 0 以及 NET_BUFFER_LIST_STATUS()。

这适用于 UDP 和 ICMP(我得到回复),但不适用于 TCP 数据包。我可以从我正在测试的虚拟机中看到 SYN 在 NetMon 中发出,但 NetMon 没有看到外部数据包(在主机中)。当然,远程主机也没有回复。

我尝试更新IP校验和(我在classifyFn中得到0)并且它没有改变任何东西。当我的classifyFn 收到TCP 校验和时(据NetMon 所知),TCP 校验和已经正确。我查看了原始的 nbl、我的平面缓冲区和 WinDBG 中新创建的 nbl,它们都包含 IP 数据包(以 0x45 等开头)。

我必须为过滤器创建一个新的子层吗?是否因为我从与系统进程关联的工作线程调用 sendAsync 而丢弃了数据包?