【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

以下教程可能耗费你数小时时间,请注意时间。

 

目标:抓取HTTPS的包

如果你的手机是在Android 7.0+及其以上,想要抓取HTTPS的请求,必须要将证书(*.pem)用系统用户的权限安装,即把这个证书,要放到Android系统的加密与凭据->信任的CA证书。

以下这个是我们要完成的最终目标——把Charles的证书放到系统文件下。

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

前置工作:

1.准备一台已经有ROOT权限的小米手机。(具体步骤就是先去解锁,然后刷开发版的包,然后在安全中心中开启ROOT,开启USB调试)【重要】http://www.miui.com/unlock/index.html,按照步骤即可解锁。

 

2.电脑安装了Charles (https://www.charlesproxy.com/assets/release/4.5.6/charles-proxy-4.5.6-win64.msi
)。

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

然后,紧接着,把这个证书保存到桌面,命名为Charles.pem,我建议是放到和后面用到的安卓adb工具一个路径。

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

3.安装adb(platform-tools)。

打开https://developer.android.google.cn/studio/releases/platform-tools 下载平台工具,你是哪种操作系统就下哪个,我这里是Windows。然后在桌面解压

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

4.安装openssl以及配置环境变量

这里仅展示Windows。下载地址http://slproweb.com/products/Win32OpenSSL.html

选择64位。迅雷可以尝试这个地址: https://slproweb.com/download/Win64OpenSSL-1_1_1g.exe

安装完毕后。配置环境变量,将 openssl的bin目录放到Path环境变量,我的是这个路径 C:\Program Files\OpenSSL-Win64\bin

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

完成这些准备工作后,就和很多的教程一样了。

1.把前面桌面的那个证书charles.pem复制到桌面的文件夹内如图

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

2.紧接着, 使用快捷键将CMD控制台唤出(Shift + 鼠标右键) 

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

3.此时,插入手机,并且确保USB调试已经打开。 

4.在命令行中键入命令

adb devices

可以看到已经检测到手机

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

 5.然后,依次执行下面命令,#后面是注释,关注adb开头即可。

# 以 root 权限执行

adb root

# 解决目录 read only 关键命令行

adb disable-verity

# 重启

adb reboot

# 以 root 权限运行

adb root

# 重新挂载

adb remount

# 设置读写

adb shell mount -o rw,remount /system

这个网上的一般教程,但是我在这块执行到最后一个命令adb shell mount -o rw,remount /system的时候出现的问题。 

这里爆出了一个错。后来查阅后,其实在上一个重新挂载的命令就已经可以有写权限了,因为默认是只读权限。所以这个问题我们根本不用理会!

mount: '/system' not in /proc/mounts

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

6.权限完成后,要准备使用openssl命令了。这里确保前面的openssl的环境变量安装成功,要不然会告诉你openssl命令不存在。

#计算hash,后面会用到,红框中的字符串就是

openssl x509 -subject_hash_old -in charles.pem

 【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

7.修改这个charles.pem文件的名称为 hash值.0 。我这里的hash是bdb7xxx,那么原来的charles.pem文件就改为bdb7xxx.0。

如图

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

 8.最后一步,.把凭据复制到系统凭据目录下

# 安装命令

adb push bdb7xxx.0 /system/etc/security/cacerts

以下如果提示你file pushed不用看。

【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

出现什么权限不足,空间不足的可以看看。 

这个地方,我遇到一个坑,就是提示空间不足,然后又提示权限不足。后来我发现我不能越级复制文件,结果我就先复制到了

/system目录下,然后一步一步复制到最终的那个目录下面。(⊙o⊙)

# 安装命令

adb push bdb7xxx.0 /system

#进入shell

adb shell

# 进入system目录

cd /system 

# 剪切文件到里面的etc目录

mv  bdb7xxx.0 etc

# 进入etc目录,以下类推

cd etc

mv  bdb7xxx.0 security

cd security

mv bdb7xxx.0 cacerts

 

9.最后再进入到具体文件夹中看一下

adb shell

cd /system/etc/security/cacerts

ls -al

 【教程】小米手机Android 7.0+抓取HTTPS请求安装Charles证书主要流程

 完成。最后在回到第一步进入,设置->密码隐私与安全->系统安全->加密与凭据-》信任的凭据,系统栏就可以看到了。

参考:

https://segmentfault.com/a/1190000011573699

https://www.cnblogs.com/Entr0py/p/9675061.html

https://blog.****.net/u013412772/article/details/103251506