cloudflare 关于tls 检测,发送未知message type字节
当我尝试使用伪造chrome tls 指纹发送给cloudflare保护站点的时候,他返回给我一个未知的服务器握手数据报文,查找文档后发现RFC 5246 serverhello 中没有对这个message type定义:https://tools.ietf.org/html/rfc5246#section-7.4.1.3
总结出来可能存在一些问题,chrome tls 欺骗不完整?或者是tcp窗口检测?但是使用okhttp ios这些tls模拟是可以pass过的,目前尚未对整个握手进行完整数据包分析,需要上wireshake,关注后续,
后续
关于这个key的类型找到了:https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml 也就是说目前golang的tls不支持压缩证书的消息,所以接收到type=25没有对这个信息进行处理,解决方式有2种,
- 1.cloudflare目前好像没有做强制性的tls检测,所以我们可以把底层fake id 中的支持压缩算法更改删除:
brotli
算法的支持或者改成zlib - 2.在clientMsgTls1.3 中直接解压算法让底层支持brotli算法
参考实现可以:https://github.com/kyawmyomin/fizz/tree/master