问题标签 [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 投票
2 回答
1521 浏览

c++ - 是否可以在 WFP(Windows 过滤平台)中实现用户模式标注?

是否可以在 WFP(Windows 过滤平台)中实现用户模式标注?如果是这样,请分享一些相关链接或示例代码。

0 投票
1 回答
1168 浏览

windows - 使用 Windows 过滤平台按进程 ID 阻止流量

我想通过进程 ID 阻止互联网流量。

我可以使用特定的过滤器吗?

FWPM_CONDITION_ALE_PACKAGE_ID 看起来很接近,但我不想阻止程序的所有实例,只是其中一些。

我认为另一种选择是拦截所有流量并以某种方式吃掉来自我想要沙盒的进程的数据包。

任何指导都会很棒。

谢谢

0 投票
1 回答
4252 浏览

windows - WinDivert 重定向到代理

我正在尝试将所有 tcp 数据包重定向到我的本地代理以修改 html 内容(类似广告拦截器)。我想使用 WinDivert 但它似乎不起作用。

我像这样启动驱动程序:

然后在捕获和修改数据包时:

但是在代理端,我看不到任何传入的流量,并且页面没有在网络浏览器中加载。

0 投票
1 回答
1437 浏览

python - WinDivert: changing GET request in tcp packet

I'm trying to change simple GET request with pydivert (WinDivert for python)

What i seem to encounter is problem with packet lenght.
when i rewrite url so it has same amount or less of letters it works:
ie. GET /?a=asdf => GET /?a=z

But when i add more letters to the request, browser loops and ends up without showing anything

Below is example code i use

and

Is there somewhere a MAX packet size setted. If yes then how to increase it?

If that would be a hint for you then if i will print all packets in console then i clearly see that request was responded by server because see packet.payload with gfdsazzz

0 投票
1 回答
1286 浏览

c++-cli - 使用 WinDivert 时 DLL 导入失败

我将设计一个使用 WinDivert 来操纵网络流量的程序。我使用的语言是 C++,程序是在 Visual Studio 2008 下设计的。首先我在 Visual C++ CLR(Windows 窗体应用程序)中创建了一个项目,这样我就可以简单地实现 UI。

为了导入 WinDirvert 库,我在项目属性中做了如下设置:

  1. 配置属性:通用
    公共语言运行时支持:公共语言运行时支持(/ctr)
  2. 配置属性:链接器
    附加依赖项:WinDivert.lib
    模块定义文件的链接:windivert.def 的链接

在我创建的项目中,我还在头文件中添加了 windivert.h。

此外,windivert.h 包含在我的项目 (ProjectG.cpp) 的主入口点中:

最后我把{WinDivert.dll, windivert.h, WinDivert.lib, WinDivert32.sys}放到了项目目录下。

但是,显示以下错误:

附加:(警告)

问题:我该如何解决这种情况?

0 投票
1 回答
2292 浏览

c# - Windows 过滤平台 - 如何阻止基于本地端口的传入连接?

我正在尝试使用 WFP 设置一些过滤器来阻止与本地服务器的入站连接(例如,侦听端口 8080 的网络服务器)。

我有一个可以基于远程端口阻止的过滤器,因此我可以阻止我的机器上的进程建立与端口 8080 的任何连接,但我不知道如何根据本地阻止来自另一台机器的传入连接8080端口?

这是我的代码,它可以基于远程端口进行阻塞:(它是使用 P/invoke 的 C#,但它与用 C++ 编写的几乎相同)

如上所述,此代码确实可以阻止与远程端口 8080 的连接。为了阻止与本地端口 8080 的连接,我将代码修改如下:

MSDN 暗示这FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4是阻止入站连接的正确位置,但这根本不起作用。我已经尝试FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_V4了其他一些层,但无论我尝试了什么,我总是能够建立从另一台机器到我机器上端口 8080 上的服务器的连接。

任何帮助将非常感激

0 投票
1 回答
485 浏览

security - 在 WFP 的 FwpmFilterAdd 函数中使用安全描述符添加过滤器

我想防止任何人删除我注册的过滤器,但我的帐户除外。我想知道如果我在 FwpmFilterAdd 函数中设置安全描述符是可能的。您能否向我展示示例的源代码,该示例为我的目的添加了使用安全描述符的过滤器?

我在 WFP msdn 中阅读了“阻碍过滤器删除”和“强制过滤器删除”。有什么方法可以防止任何人强制删除过滤器吗?先感谢您。

0 投票
2 回答
1744 浏览

windows - 调试 WFP 标注驱动程序的选项有哪些

我是内核模式 Windows 驱动程序开发的新手,并且在从 WFP 标注示例中获取调试信息时遇到问题。我正在寻找更多选项或提示我对我一直在尝试的选项做错了什么。

首先,我下载了WFP 采样器并按照说明中的说明进行操作。我正在使用通过模拟串行电缆连接的 Windows 8.1 x64 主机和 Windows 7 x64 目标。它们都是 VirtualBox 虚拟机。

我正在调试的主要命令是

其中 10.0.2.15 是不同网络接口的 IP 地址,而不是路由表是 endign 流量的目标。我还按照说明使用了以下检查命令:

“netsh wfp show state”显示与预期层关联的标注和过滤器

但是,按照这些说明的最后一步,我从未从 traceview 收到任何消息。Tracelog 也有类似的输出不足。无论是否在驱动程序项目上启用了 WPP 跟踪,情况都是如此。我还尝试了更高的详细程度,但都没有效果。

此外,Visual Studio 中的远程调试器在“驱动程序安装后操作(x64)(可能重新启动):通过”或“等待重新连接...”处停止,重新启动目标不会导致调试器立即窗口中的更多输出(输出窗口从未得到任何输出)。重新启动目标虚拟机没有得到任何异常提示(我读到的一些内容暗示它应该)。设置调试器时的重新连接复选框有时会导致它通过“等待重新连接...”提示,其他时候不需要它。我设置了许多应该命中的断点,包括每个分类函数顶部的一个断点,但没有一个被命中。

我尝试使用 WinDbg 进行调试,但坦率地说,我找不到有关如何使用此工具的文档。我在目标机器上启动它并选择内核调试,本地。然后我得到一个提示,告诉我符号搜索路径无效并且不知道我应该将其设置为什么。如果它允许我调试这些标注驱动程序,则有关如何使用此工具而不是仅安装它的任何文档都可能会有所帮助。

最后,当然,我尝试根据症状对其进行调试,但我发现检查标注没有任何作用,而代理标注只是吃掉来自目标应用程序的所有流量,但有一点需要注意。需要注意的是,当我使用代理标注定位 firefox 或 chrome 并尝试启动该应用程序时,它无法启动 UI,并且无法从任务管理器中终止部分启动的进程。

我认为该行为可能是样本未能检查 FwpsQueryPacketInjectionState 的结果,但尽我所能进行修改似乎不会改变行为。

所以简而言之,我被卡住了,需要指导吗?

0 投票
1 回答
81 浏览

sample - 运行 WFP msdn 示例时遇到问题

我无法从 msdn 运行 wfp 示例。我已按照 msdn 站点上的说明进行操作,在 cmd 中输入“net start inspect”后,我不知道自己会看到什么。在视觉上它仍然说“等待重新连接”。我是这个 WFP api 的新手,我试图通过这个 sapmle 来学习它。感谢您的帮助!

0 投票
1 回答
135 浏览

dispatch - FwpmEngineOpen 在调度级别失败

我试图在持有 NDIS RW 锁的同时添加 WFP 过滤器,但 FwpmEngineOpen 或 FwpmTransactionBegin 函数失败。是否存在阻止这些功能在调度级别工作的限制?

谢谢!