Linux + Android
方法一
该方法确保Linux
以及Android
都在同一个局域网
在
Linux
中运行Charles
在 Android设备将
WIFI
设置 代理进入
WIFI
详情页,点击无
点击
手动
填写第一步看到的
ip
,和默认端口8888
默认端口在以下选项中可以看到
在 Android设备中使用浏览器访问
chls.pro/ssl
点击下载 crt证书
小米手机使用
默认浏览器
,需要在我的下载
>右上角的三个点
>设置
然后将
使用迅雷下载引擎
关闭。然后将 下载的
crt
证书pull
下来adb pull /sdcard/Download/downloadfile.crt ./
然后进行 将抓包软件的证书 用命令计算出 Hash 值:
openssl x509 -subject_hash_old -in ./downloadfile.crt
不是每次执行上面
openssl
命令输出都是一样的,根据实际情况操作即可mv ./downloadfile.crt ./a58ee09d.0
如上的操作完成后,
a58ee09d.0
该文件 在后面的操作 使用到此时可以将
WIFI代理
设置成无
将
a58ee09d.0
文件拷贝到 Android系统证书目录下,但在这之前需要修改 system分区的权限读写模式挂载
- 挂载命令一:
mount -o remount,rw /system
(Android 8.0及以上?
) - 挂载命令二:
mount -o rw,remount /system
(Android 7.0及以下?
)
- 挂载命令一:
只读模式挂载
- 挂载命令一:
mount -o remount,ro /system
- 挂载命令二:
mount -o ro,remount /system
- 挂载命令一:
注意:以上 两种模式,要么同时执行 挂载命令一,要么同时执行 挂载命令二,不可以交叉搭配使用
- 进入
adb shell
然后执行
读写模式中的挂载命令一
若执行后出现 以下错误信息
mount: '/dev/block/bootdevice/by-name/system'->'/system': Device or resource busy
则执行
读写模式中的挂载命令二
将
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/
执行以上命令 成功将证书导入 系统,然后无需重启
任何软硬件
直接配合Postern
测试抓包即可最后 修改system分区权限。
最后执行成功的是
读写模式中的挂载命令二
这里就执行
只读模式中的挂载命令二
方法二
方法一有时候不可用,
强烈推荐方法二
该方法确保
Linux
以及Android
都在同一个局域网
在
Linux
中运行Charles
,将charles
证书导出点击
Save Charles Root Certificate
选中 保存的路径,然后点击
Save
点击
Save
后,保存的路径在选中的保存目录的上一级
原先选中的保存路径
/root/Desktop/charles/certs/
证书最终保存在
/root/Desktop/charles/
- 那就手动将 证书文件 移动到
/root/Desktop/charles/certs/
将
certs.pem
将抓包软件的证书用 命令计算出 Hash 值openssl x509 -subject_hash_old -in ./certs.pem
计算的
hash
值同方法一。将
certs.pem
重命名mv ./certs.pem ./a58ee09d.0
不是每次执行上面
openssl
命令输出都是一样的,根据实际情况操作即可如上的操作完成后,
a58ee09d.0
该文件 在后面的操作 使用到- 后续的步骤 从
方法一中的第7步
开始
Win + Android
与 Linux + Android 方法 大同小异