Loading... ### Linux + Android #### 方法一 > 该方法确保 `Linux` 以及 `Android` 都在同一个局域网 1. 在 `Linux` 中运行 `Charles`  2. 在 Android设备将 `WIFI`设置 代理 1. 进入 `WIFI` 详情页,点击 `无`  2. 点击 `手动`  3. 填写第一步看到的 `ip`,和默认端口 `8888`  > 默认端口在以下选项中可以看到 > >  > >    3. 在 Android设备中使用浏览器访问 `chls.pro/ssl`  4. 点击下载 crt证书 > 小米手机使用 `默认浏览器`,需要在 `我的下载` > `右上角的三个点` > `设置` > > 然后将 `使用迅雷下载引擎` 关闭。  5. 然后将 下载的`crt`证书 `pull` 下来 `adb pull /sdcard/Download/downloadfile.crt ./`  6. 然后进行 将抓包软件的证书 用命令计算出 Hash 值: `openssl x509 -subject_hash_old -in ./downloadfile.crt`  > 不是每次执行上面 `openssl` 命令输出都是一样的,根据实际情况操作即可 `mv ./downloadfile.crt ./a58ee09d.0`  > 如上的操作完成后,`a58ee09d.0` 该文件 在后面的操作 使用到 > > 此时可以将 `WIFI代理` 设置成 `无` 7. 将 `a58ee09d.0` 文件拷贝到 Android系统证书目录下,但在这之前需要修改 system分区的权限 - 读写模式挂载 1. 挂载命令一:`mount -o remount,rw /system` (`Android 8.0及以上?`) 2. 挂载命令二:`mount -o rw,remount /system` (`Android 7.0及以下?`) - 只读模式挂载 1. 挂载命令一:`mount -o remount,ro /system` 2. 挂载命令二:`mount -o ro,remount /system` <div class="tip inlineBlock error"> **注意:以上 两种模式,要么同时执行 挂载命令一,要么同时执行 挂载命令二,不可以交叉搭配使用** </div> 1. 进入 `adb shell` 2. 然后执行 `读写模式中的挂载命令一` > 若执行后出现 以下错误信息 > >  > > `mount: '/dev/block/bootdevice/by-name/system'->'/system': Device or resource busy` > > 则执行 `读写模式中的挂载命令二` > >  3. 将 `a58ee09d.0` 文件拷贝到 Android系统证书目录下 > `adb push ./a58ee09d.0 /etc/security/cacerts/` > >  > > 然后出现如下错误 > > `adb: error: failed to copy './a58ee09d.0' to '/etc/security/cacerts/a58ee09d.0': remote couldn't create file: Permission denied` > >  > > 先执行 `adb root` > > 然后再次执行 > > `adb push ./a58ee09d.0 /etc/security/cacerts/` 8. 执行以上命令 成功将证书导入 系统,然后无需重启 `任何软硬件` 直接配合`Postern` 测试抓包即可   9. 最后 修改system分区权限。 > 最后执行成功的是 `读写模式中的挂载命令二` > > 这里就执行 `只读模式中的挂载命令二` #### 方法二 > 方法一有时候不可用,`强烈推荐方法二` > > 该方法确保 `Linux` 以及 `Android` 都在同一个局域网 1. 在 `Linux` 中运行 `Charles`,将 `charles`证书导出 1. 点击 `Save Charles Root Certificate`  2. 选中 保存的路径,然后点击 `Save`  3. 点击 `Save` 后,保存的路径在 `选中的保存目录的上一级` > 原先选中的保存路径 `/root/Desktop/charles/certs/` > > 证书最终保存在 `/root/Desktop/charles/`  4. 那就手动将 证书文件 移动到 `/root/Desktop/charles/certs/` 2. 将 `certs.pem` 将抓包软件的证书用 命令计算出 Hash 值 `openssl x509 -subject_hash_old -in ./certs.pem`  > 计算的 `hash`值同方法一。 3. 将 `certs.pem` 重命名 `mv ./certs.pem ./a58ee09d.0` > 不是每次执行上面 `openssl` 命令输出都是一样的,根据实际情况操作即可 > > 如上的操作完成后,`a58ee09d.0` 该文件 在后面的操作 使用到 4. 后续的步骤 从 `方法一中的第7步` 开始 ### Win + Android > 与 Linux + Android 方法 大同小异 最后修改:2022 年 04 月 08 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏