Windows过滤平台,用于从托管代码中过滤HTTPS

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

我尝试了@basil的WinDivert演示应用程序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流的访问权限。 但是,这将被检测到,并且Web浏览器将严厉警告用户他们受到攻击而不是继续。