折腾:
【未解决】安卓游戏永恒纪元支付页面弹框显示空白不显示内容
期间,给安卓游戏永恒纪元加了mitmdump代理后,在弹框显示支付页面时,显示空白。
其中mitmdump的log中显示:
192.168.31.177:50670: CONNECT 6ib5h.com:443 << Cannot establish TLS with client (sni: 6ib5h.com): TlsException("SSL handshake error: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert certificate unknown')])")
TlsException SSL handshake error Error SSL routines ssl3_read_bytes sslv3 alert certificate unknown
这个错误可以理解为mitmproxy缺少https的证书,继而导致mitmproxy解析ssl协议出错。
解决办法: 把tls_passthrough.py中的代码整合进我们的监听脚本即可。
mitmproxy -s tls_passthrough.py
->我没记错的话,之前就已经实现了此步骤了
【已解决】mitmproxy代理抓包安卓app数据访问出错:Cannot establish TLS with client sni TlsException
【已解决】提取自动抓包工具中的mitmdump自动保存代理抓包出来的url链接保存到文件
但是现在问题依旧。
不过突然发现,竟然忘了加上,之前加的-k参数了。因为之前整理过了
/Users/crifanli/dev/DevRoot/appcrawler/README.md
注:后续加上`-k`=`--ssl-insecure`: * `mitmdump -k -p 8081 -s middleware/Save1.py` * 可以避免问题:`Cannot establish TLS with 123.126.37.206:443 (sni: None): TlsException('Cannot validate certificate hostname without SNI’)`
所以去加上:
mitmdump -k -p 8081 -s middleware/Save1.py
结果:
192.168.31.177:50820: CONNECT data.mistat.xiaomi.com:443 << Cannot establish TLS with client (sni: data.mistat.xiaomi.com): TlsException("SSL handshake error: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert certificate unknown')])") 192.168.31.177:50820: clientdisconnect 192.168.31.177:50826: clientconnect 192.168.31.177:50826: POST http://m-api.37.com.cn/sdk/enter/ << 200 OK 47b 192.168.31.177:50810: clientdisconnect 192.168.31.177:50828: clientconnect 192.168.31.177:50828: CONNECT openapi.baidu.com:443 << Cannot establish TLS with client (sni: openapi.baidu.com): TlsException("SSL handshake error: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert certificate unknown')])")
期间也注意到,对于其他ssl的域名,也会出现同样问题
问题依旧。
所以,-k对此问题无影响。
好像很复杂。不适用于此处。
Cannot establish TLS with client: TlsException(“SSL handshake error”)_学海无涯-CSDN博客
找到了windows的处理方法了, 我是因为没有安装证书 才会出现这样的错误,手机端和电脑端都要安卓证书,然后就可以了,证书安装百度有很多
-》好像是这个意思?
此处的macOS中,没有安装mitmdump的证书?
那换个电脑,之前(应该安装过mitmdump的证书的)公司的Mac,去测试看看
不过,去找找之前公司Mac中安装mitmproxy时的过程,看看是否有证书安装了
【已解决】Mac中安装Mitmdump和启动服务
其中只是
brew install mitmproxy
即可。没有所谓的PC端也要 也有安装证书的
而对于设备端的证书,是有的,且之前弄过:
【未解决】用安卓9的红米Note8Pro测试自动抓包工具正常抓包
中的:
【已解决】红米Note8Pro中安装mitmproxy的SSL代理证书
mac mitmproxy 证书
mitmdump Error SSL routines ssl3_read_bytes sslv3 alert certificate unknown
Custom certifaicate used for *.facebook.com – help – mitmproxy
【总结】
mitmdump访问部分url出错:
192.168.31.177:50670: CONNECT 6ib5h.com:443 << Cannot establish TLS with client (sni: 6ib5h.com): TlsException("SSL handshake error: Error([('SSL routines', 'ssl3_read_bytes', 'sslv3 alert certificate unknown')])")
原因:app内部做了certificate pinning 证书固定 的技术
app内部给证书做了指纹,只允许来自服务器的证书,匹配后才认为是合法的有效的,否则就拒绝
即拒绝那些指纹不匹配的证书
如何解决:修改app的逻辑和规则,允许你(的非法)的证书
很明显:是别人的app,自己无法修改。所以:无解
除非你能破解app,重新编译和运行破解后的app,把证书的限制去掉。
此处:被测app是一个安卓游戏app
此处没有时间去折腾破解app
以及也没必要:因为最终方案是希望支持无限多的安卓游戏app,所以一个个破解,也不现实不可行
总之:无解,且放弃
相关:
(1)安卓破解 Certificate pinning:
作者提到了一些关于逆向工程安卓app方面的资料
需要给app打包,用于跳过证书验证,换成自己证书
其相关资料:
-》
Bypassing SSL Pinning on Android via Reverse Engineering.pdf
转载请注明:在路上 » 【无法解决】安卓游戏加了代理后支付页面时mitmdump报错:TlsException SSL handshake error Error SSL routines ssl3_read_bytes sslv3 alert certificate unknown