Linux + Android

方法一

该方法确保 Linux 以及 Android 都在同一个局域网
  1. Linux 中运行 Charles

    20220405204307

  2. 在 Android设备将 WIFI设置 代理

    1. 进入 WIFI 详情页,点击

      20220405230329

    2. 点击 手动

      20220405230451

    3. 填写第一步看到的 ip,和默认端口 8888

      20220405230625

      默认端口在以下选项中可以看到

      20220405230800

      20220405230841

      20220405231154

      20220405231218

  3. 在 Android设备中使用浏览器访问 chls.pro/ssl

    20220405231713

  4. 点击下载 crt证书

    小米手机使用 默认浏览器,需要在 我的下载 > 右上角的三个点 > 设置

    然后将 使用迅雷下载引擎 关闭。

    20220405231854

  5. 然后将 下载的crt证书 pull 下来

    adb pull /sdcard/Download/downloadfile.crt ./

    20220405234534

  6. 然后进行 将抓包软件的证书 用命令计算出 Hash 值:

    openssl x509 -subject_hash_old -in ./downloadfile.crt

    1

    不是每次执行上面 openssl 命令输出都是一样的,根据实际情况操作即可

    mv ./downloadfile.crt ./a58ee09d.0

    20220405235037

    如上的操作完成后,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

    注意:以上 两种模式,要么同时执行 挂载命令一,要么同时执行 挂载命令二,不可以交叉搭配使用

    1. 进入 adb shell
    2. 然后执行 读写模式中的挂载命令一

      若执行后出现 以下错误信息

      20220406001220

      mount: '/dev/block/bootdevice/by-name/system'->'/system': Device or resource busy

      则执行 读写模式中的挂载命令二

      20220406001335

    3. a58ee09d.0 文件拷贝到 Android系统证书目录下

      adb push ./a58ee09d.0 /etc/security/cacerts/

      1

      然后出现如下错误

      adb: error: failed to copy './a58ee09d.0' to '/etc/security/cacerts/a58ee09d.0': remote couldn't create file: Permission denied

      20220406001844

      先执行 adb root

      然后再次执行

      adb push ./a58ee09d.0 /etc/security/cacerts/

  8. 执行以上命令 成功将证书导入 系统,然后无需重启 任何软硬件 直接配合Postern 测试抓包即可

    20220406002126

    20220406002401

  9. 最后 修改system分区权限。

    最后执行成功的是 读写模式中的挂载命令二

    这里就执行 只读模式中的挂载命令二

方法二

方法一有时候不可用,强烈推荐方法二

该方法确保 Linux 以及 Android 都在同一个局域网

  1. Linux 中运行 Charles,将 charles证书导出

    1. 点击 Save Charles Root Certificate

      20220406003057

    2. 选中 保存的路径,然后点击 Save

      20220406003506

    3. 点击 Save 后,保存的路径在 选中的保存目录的上一级

      原先选中的保存路径 /root/Desktop/charles/certs/

      证书最终保存在 /root/Desktop/charles/

      20220406003747

    4. 那就手动将 证书文件 移动到 /root/Desktop/charles/certs/
  2. certs.pem 将抓包软件的证书用 命令计算出 Hash 值

    openssl x509 -subject_hash_old -in ./certs.pem

    20220406004904

    计算的 hash值同方法一。
  3. certs.pem 重命名

    mv ./certs.pem ./a58ee09d.0

    不是每次执行上面 openssl 命令输出都是一样的,根据实际情况操作即可

    如上的操作完成后,a58ee09d.0 该文件 在后面的操作 使用到

  4. 后续的步骤 从 方法一中的第7步 开始

Win + Android

与 Linux + Android 方法 大同小异
最后修改:2022 年 04 月 08 日
如果觉得我的文章对你有用,请随意赞赏