Charles 抓包 Https

拷贝自原文链接,超级实用,十分感谢,防止失效。

场景:

用于抓取 7.0 以上任意应用的网络请求。

简单原理:

利用 Https 对证书的溯源校验。系统内会预置一些根证书,默认这些证书都是可信安全的。Root 后,按照既定的规则,将电脑 Charles 证书放到此目录下,这样,电脑中间代理后,读取到的中间代理证书也被认为是 CA 颁发的安全证书,并信任。

具体步骤:

0. 必须先 Root 手机

1. 下载证书

根据Charles的help浏览chls.pro/ssl下载证书,你可以在设备上下载后adb pull到电脑上,也可以直接用电脑浏览器下载。

2. 证书重命名

系统证书在目录/system/etc/security/cacerts/下,我们看到


系统内置证书

每个证书的命名规则是.,文件名是一个Hash值,而后缀是一个数字。后缀名的数字是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话,那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1.
我们用下面的命令计算出证书文件的Hash值 openssl x509 -subject_hash_old -in


示例图

也有在线工具,可以直接上传获取即可

3. 上传证书

我们将重命名好的证书adb push/sdcard/Download,然后将其复制到/system/etc/security/cacerts/文件夹。

image.png

如果出现上面问题,那么我们就需要使用mount -o rw,remount /system命令将system分区挂在为可读写。
也可以直接 cd 到 cacerts 目录使用 mount -o rw,remount / 只挂在 cacerts 目录(我挂载 system 就失败了)

还是失败请依次执行下面命令:

adb root
adb disable-verity
adb reboot
adb remount
adb shell
mount -o rw,remount /system

复制好后将文件权限更改为644,并重启设备

image.png

4. 验证结果

设置》安全》信任的凭证,我们可以看到


image.png

5. 最后抓包

正常设置代理即可,不会的话,可以参考Charles - Windows,Mac 和 Windows 方法大同小异。设置后,就可以拦截到所有接口了,并且都被解析为明文。

你可能感兴趣的:(Charles 抓包 Https)