问题标签 [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.
windows - 全局强制使用 HTTP 代理
我们这里有一个任务 - 将所有运行在 Win7 和 Win8 计算机上的应用程序的所有 http 流量重定向到某个代理。所以我想到的唯一一件事就是使用 WFP 标注驱动程序来检查传出的数据包并相应地修改它们。所以问题是——这是对 Windows 计算机上运行的所有应用程序全局强制使用 HTTP 代理的唯一方法吗?谢谢。
c - WinDivert发送自建ICMP包失败
每个人。我已经使用 WinDivert 开发了一个 ICMP 数据包发送器。192.168.1.232 是我的机器,192.168.1.158 是远程机器。所有函数都返回成功,但我在使用 Wireshark 的远程机器上看不到 ICMP 数据包。这段代码有什么问题吗?谢谢。
c# - WinDivert 1.0.5 DivertRecv() 方法获取最后一个错误 998
我一直在为 WFP(Windows 过滤平台)编写我的 c# 包装器,我使用 WinDivert 1.0.5,这个导入语法
这个函数调用语法
但是该函数每次调用都返回 false ,并且 GetLastWin32Error() 得到错误代码 998 。请帮助我。
c++ - 如何让 WinDivert 在 Windows 8 上运行
我正在将开源 WFP 驱动程序 WinDivert 用于 Web 过滤器。它适用于 Windows Vista 和 Windows 7,但不适用于 Windows 8。DivertSend 函数失败并显示以下消息:警告:无法重新注入数据包 (1237)。有没有人知道WinDivert是否可以与Windows 8一起使用?如果是这样,我该怎么做才能解决这个问题。感谢您的任何建议。
c++ - 使用 Dev C++ 开发 WFP
我想运行这个示例 WFP 应用程序,但是当我尝试使用 Dev C++ (5.5.3) 编译它时,编译器说
所有 WFP API 函数和结构都相同。我怀疑我需要在标头中包含一些内容或/并添加一些编译器参数,但我不知道在哪里可以找到有关它的任何信息。
java - 捕获网络数据包并根据它们的进程(程序)名称对其进行分组
我正在做一些研究,我需要捕获每个数据包离开我的计算机并确定它来自哪个进程。在其他世界中,诸如 Microsoft 网络监视器之类的东西。请指导我正确的开始方式。
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 台式机上使用该程序时,某些东西会阻止驱动程序的安装。我不确定是什么阻止了它或如何阻止它被阻止,因为在所有计算机上:
+我正在使用管理员配置文件
+在管理员命令提示符下运行程序
+尝试禁用防火墙、防病毒等(尽管在正常工作的计算机上运行良好)
+据我所知,我所有的安全设置都是一样的
+注意:驱动程序确实有一个有效的签名。
为什么驱动程序可以完美地安装在一台计算机上,而不能安装在其他三台计算机上?可能是什么问题?
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 隧道绕过此解决方案,还有其他方法可以绕过它吗?
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 而丢弃了数据包?