我想为Windows开发基于主机的防火墙,主要用于过滤以HTTPS开头的URL!我知道微软将把WFP作为替代旧式的技术,例如防火墙/过滤器挂钩,NDIS,TDI,WSA和Winsock 2(LSP)。但是WFP目前不支持使用主机名或URL的过滤器。此外,WFP仅在C/C++中,.NET中没有可用的C#包装器。Windows过滤平台从托管代码过滤HTTPS
我尝试了@basil的WinDivert演示应用程序webfilter,它在TCP端口80(默认HTTP),重置服务器连接(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(例如,在工作中,我们通过仅通过HTTPS提供的外部门户网站发送webmail,而且我们的许多内部站点也都是HTTPS) –