我想为Windows开发一个基于主机的防火墙,主要是从HTTPS开始过滤URL!我知道微软正在将WFP作为对旧技术的替代,例如防火墙/过滤器挂钩、NDIS、TDI、WSA和Winsock 2 (LSP)。但是WFP目前不支持带有主机名或URL的过滤器。此外,WFP只使用C/C++,而.NET中也没有可用的.NET包装器。
我尝试了@basil的WinDivert演示应用程序webfilter,它在TCP端口80 (默认HTTP)上解析IPv4出站流量中的数据包,重置服务器连接(TCP RST),并向客户端(浏览器)发送一个HTML (浏览器),然后再发送一个TCP FIN,以防IPv4匹配文本文件中任何作为命令行参数给出的黑名单条目,然后重新注入它们。
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隧道绕过,还有其他方法可以绕过它吗?
发布于 2014-04-20 02:12:29
HTTPS使用加密来阻止第三方拦截和修改HTTP流。因此,简短的回答是“不”。
原则上,您可以使用WinDivert发起中间人攻击,以访问未加密的HTTP流。然而,这将被检测到,网络浏览器将严厉警告用户,他们正在遭受攻击,不能继续。
https://stackoverflow.com/questions/23151135
复制相似问题