问题标签 [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 - 如何编写一个函数来阻止或防火墙阻止访问 Windows 中具有多个 IP 地址的网站的流量?
问题:
我想编写一个具有以下伪代码签名的函数:
但是,我希望有以下限制:
- 网站/域可以类似于 reddit.com,它的一个域名有多个 IP 地址。
- 阻塞方法应该是客户端或桌面解决方案。它不应该依赖于使用您的路由器。这个问题的上下文不是网络管理,我希望这个功能在我的个人 Windows 机器上执行。
见解:
内容过滤可能发生在网络的不同阶段。使用 Windows 防火墙的解决方案工作在第 4 层,即传输层。其他解决方案可能会使用第 7 层,即应用层。Cold Turkey是一个在第 7 层上工作的商业应用程序,要求在每个浏览器上安装一个插件并通过插件过滤内容。
扩展阻止站点复杂性的一项挑战是共享 Web 托管。例如,某些网站(例如 youtube.com)与 google.com 等网站共享同一组 IP 地址。为了简单起见,满足共享虚拟主机的问题可以忽略。我只是希望有问题的网站被阻止,而不管其他附属网站被它阻止。
共享虚拟主机问题的解决方案是使用基于 DNS 的过滤(而不是基于 IP 的过滤)。为阻止站点的任务提出的常见解决方案是使用 hosts 文件c:\windows\system32\drivers\etc\hosts
。考虑以下用 powershell 编写的函数,作为实现此目的的解决方案:
上述解决方案的问题在于它有许多简单的解决方法。例如,一种解决方法是只用谷歌搜索网站的名称,然后点击谷歌的网站。因此,我对解决方案不是很满意,因为它实际上并没有阻止或防火墙关闭流量。
更新:我相信Windows 过滤器平台可能是最全面的解决方案。我正在研究它的潜力,并为它添加一个标签。
这项研究:
我已经检查了我能找到的所有相关的 stackoverflow 和超级用户问题,但没有一个足以提供答案。看:
堆栈溢出:
- 有没有办法让 youtube 的所有 IP 地址用 Windows 防火墙阻止它?
- 具有高级安全性的 Windows 防火墙中的命令行 IP 阻止/取消阻止
- 如何在托管许多网站的服务器中通过 IP 地址访问网站?
超级用户:
visual-studio - 在选项对话框中导航页面(Visual Studio 扩展)
Visual Studio 扩展
我在选项对话框中有一个自定义页面。我想在该对话框的同一实例中导航到另一个页面(通过链接)。我该怎么做呢?
我正在使用MenuCommandService
打开打开选项页面的调用命令。我可以对另一个页面做同样的事情,但这会打开一个新的选项对话框实例
谢谢
windows - 非提升进程能否使用 Windows 筛选平台 (WFP)?
我找不到有关 Windows 进程需要什么样的权限才能使用 WFP(Windows 过滤平台)的任何信息。我认为它需要管理员权限,因为 WFP 允许进程阻止整个系统中的数据包,并且还可以干扰其他进程的网络流量。这个对吗?或者非提升的流程也可以使用 WFP?
c++ - FwpmFilterAdd0 失败 (-2144206813)
我从 WFP 文档中复制了示例程序。
https://docs.microsoft.com/en-us/windows/win32/api/fwpmu/nf-fwpmu-fwpmtransactionbegin0
我正在使用 VS 2015。
这是输出:
有人可以帮忙找出原因吗?
c - Windows WFP 驱动程序:在 ClassifyFn 回调中处理数据包时出现 BSOD
我正在尝试编写一个简单的防火墙应用程序,它可以允许或阻止来自用户级进程的网络连接尝试。
为此,按照WFPStarterKit教程,我创建了一个 WFP 驱动程序,该驱动程序设置为在 FWPM_LAYER_OUTBOUND_TRANSPORT_V4 层拦截数据。
ClassifyFn 回调函数负责拦截连接尝试,并允许或拒绝它。
一旦 ClassifyFn 回调被命中,数据包的 ProcessID 以及一些其他信息就会通过FltSendMessage函数发送到用户级进程。
用户级进程接收消息,检查 ProcessID,并向驱动程序回复布尔允许/拒绝命令。
虽然这种方法在阻止第一个数据包时有效,但在某些情况下(特别是在允许多个数据包时),代码会生成带有INVALID_PROCESS_ATTACH_ATTEMPT错误代码的 BSOD。该错误在调用 FltSendMessage 时触发。
虽然我仍然无法查明确切的问题,但似乎让调用线程等待(通过 FltSendMessage)来自用户级别的回复可能会在某些情况下生成此 BSOD 错误。
如果您能指出正确的方向,我将不胜感激。
这是我注册标注的函数:
这是标注功能:
winapi - 获取套接字创建,接受回调
我正在尝试获取启动与远程系统/网站的连接的客户端的进程 ID。
是否可以编写获取套接字创建/接受事件回调的 wfp 驱动程序!如果不通过粮食计划署,还有哪些其他可用选项?
windows - WFP 驱动程序将 0.0.0.0 作为连接的本地 IP 地址
我正在为 WFP 驱动程序执行连接重定向的标注例程。我已经在FWPS_LAYER_ALE_CONNECT_REDIRECT_V4层注册了。一切正常。当我尝试获取连接的本地 IP 地址时,我总是将其设为 0。这是预期的吗?我正在将连接重定向到本地服务。
IN const FWPS_INCOMING_VALUES *inFixedValues 作为调用例程的参数接收。
用户 sid 也是如此。它总是像 s-1-0-0 这基本上是无效的 sid
我正在获取用户的 sid blob 作为
需要帮助理解是这种预期的行为还是我在这里遗漏的东西!
谢谢
vpn - 使用 WFP 的 VPN 客户端
我正在探索使用 WFP 框架为 Wireguard 创建 VPN 客户端的可能性。我看到很多使用 NDIS 库开发的 VPN 客户端示例。我有兴趣使用 WFP 做同样的事情。但我不确定这种可能性,也找不到使用 WFP 的任何示例代码。能否请您给出一些明确的方向。
windows-10-iot-core - Windows IoT Core 是否支持 Windows 过滤平台 (WFP)
我无法找到说明 Windows 10 IoT Core 是否支持任何容量的 WFP 的文档。我对 IoT Core 是否支持 WFP 标注驱动程序特别感兴趣。
c - Windows 过滤平台:在 DISPATCH_LEVEL 的 ClassifyFn BSOD
我正在尝试实现一个简单的防火墙来过滤 Windows 进程建立的网络连接。
防火墙应该允许/阻止连接。
为了拦截任何进程的连接,我创建了一个使用Windows Filtering Platform的内核驱动程序。
我在过滤层 FWPM_LAYER_ALE_AUTH_CONNECT_V4注册了一个ClassifyFn (FWPS_CALLOUT_CLASSIFY_FN1)回调:
关于连接允许/阻止的决定应由用户级别决定。
我使用FltSendMessage与 Userlevel 通信,它不能在 IRQL DISPATCH_LEVEL 中使用。
按照 Microsoft 文档中有关如何异步处理标注的说明,我确实在调用FltSendMessage之前调用了 FwpsPendOperation0。
在调用 FltSendMessage 之后,我通过调用FwpsCompleteOperation0来恢复数据包处理。
FwpsPendOperation0 文档指出调用此函数应该可以在 PASSIVE_LEVEL 操作调用:
当调出必须对这些层之一执行处理时,调出可以挂起数据包上的当前处理操作,这可能需要很长时间才能完成,或者如果当前 IRQL > PASSIVE_LEVEL 则应该在 IRQL = PASSIVE_LEVEL 处发生。
但是,当在 DISPATCH_LEVEL 调用 ClassifyFn 回调时,有时我仍然会在 FltSendMessage (INVALID_PROCESS_ATTACH_ATTEMPT) 上收到 BSOD。
我不明白出了什么问题。
提前感谢您提供任何可以为我指明正确方向的建议。
下面是 ClassifyFn 回调的相关代码: