我想为Windows开发一个基于主机的防火墙,主要是过滤以HTTPS开头的URL!我知道 Microsoft 正在将 WFP 作为已弃用的旧技术的替代品,例如防火墙/过滤器挂钩、NDIS、TDI、WSA 和 Winsock 2 (LSP)。但 WFP 目前不支持使用主机名或 URL 的过滤器。此外,WFP 仅采用 C/C++ 语言,.NET 中没有可用的 C# 包装器。
我试过@basil 的风转 http://reqrypt.org/windivert.html演示应用程序 webfilter,它在 TCP 端口 80(默认 HTTP)上解析 IPv4 出站流量中的数据包,重置服务器连接 (TCP RST) 并向客户端(浏览器)发送 HTML 响应,后跟 TCP FIN(如果 URL 与以下任意一项匹配)文本文件中作为命令行参数给出的黑名单条目,否则重新注入它们......
handle = WinDivertOpen(
"outbound && " // Outbound traffic only
"ip && " // Only IPv4 supported
"tcp.DstPort == 80 && " // HTTP (port 80) only
"tcp.PayloadLength > 0", // TCP data packets only
WINDIVERT_LAYER_NETWORK, priority, 0
);
我的问题是:我可以更改此代码以支持 HTTPS(将端口更改为默认 443)和 IPv6 吗?如果是这样,我愿意编写一个 P\Invoke 包装类来从托管 C# 代码中调用它。
额外:可以使用 SSH 隧道绕过此解决方案,是否有其他方法可以绕过它?
HTTPS 使用加密来阻止第三方拦截和修改 HTTP 流。所以简短的回答是“不”。
原则上,您可以使用 WinDivert 发起中间人攻击,以获得对未加密 HTTP 流的访问权限。然而,这将会被检测到,并且网络浏览器将严厉警告用户他们受到攻击并且不要继续。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)