欢迎光临
我们专注于软件研发和推广

Android不信任证书导致无法抓包的解决办法

前言

众所周知,Android7.0以后系统不再信任用户的证书.这一改动使得我们在抓包的时候产生了诸多不便。

解决方法:

通过将证书移动至系统证书目录,来解决不信任证书造成的无法抓包问题。

(1). 导出证书

这里根据你的抓包工具来自行导出,但是你需要注意的是,现阶段的Android有效时间超过两年的证书。所以你导出的来的证书最好有效期不要超过这个时长,以避免不必要的麻烦。

 

(2).转换证书格式

使用OpenSSL对cer证书进行格式转换,变为pem格式

openssl x509 -inform DER -in FiddlerRoot.cer -out FiddlerRoot.pem

注意自己替换证书路径

在转换成pem格式后查看证书的hash值

 复制代码 隐藏代码
openssl x509 -inform PEM -subject_hash_old -in FiddlerRoot.pem

记住hash值,这个hash值就是最后转换出来的文件的文件名。
此时我们直接将转换好的pem证书进行重命名即可,如果你想用命令的话,Windows下可以用ren命令

ren FiddlerRoot.pem e5c3944b.0

如果你在Linux操作或者Android中使用终端模拟器的话就用mv命令
最后你将获得一个e5c3944b.0文件

(3).推送证书

将转换好的证书推送到Android的  /system/etc/security 目录下并赋予文件可读权限即可,这个目录就是系统证书的目录。

推送方法1:使用adb进行推送

首先Android端打开adb调试,这里我是用的网络调试,也可以自己接线,如果是模拟器的话,也可以用模拟器的办法连接模拟器的adb。

PC端使用adb命令连接设备

首先与设备进行配对
adb pair 192.168.2.43:41053
随后连接设备
adb connect 192.168.2.43:37877
最后进入shell环境
adb shell

注意上面连接设备时输入的ip和端口,是与设备截图中一一对应的。

连接好设备后,来到目标目录

cd /system/etc/security

注意这里的目录权限,是755

而我们想要往目录中存放文件需要写的权限,此处采用adb临时赋予777权限

chmod 777 cacerts

这里可能会失败,由于我是真机且已经获取了root,所以直接su获取权限给目录加上了777
如果你是带root的模拟器,一般不需要专门su获取权限

如果碰到==提示Read-only file system==,可以使用mount -o remount,rw /system,将系统文件夹挂载为可读写。然后再用chmod赋予777权限。

修改好权限后,输入exit退出shell(如果你su了需要两次exit才能退出)。再用adb命令来推送证书文件

adb push E:\Desktop\e5c3944b.0 /system/etc/security/cacerts

这里的证书文件目录记得自己替换


如果你是模拟器的话,经过上边的操作应该已经推送成功了,不过我这里是真机所以无法直接推送到/system下,所以我这里稍微绕一下,先推送到手机内存中,然后再进入shell转移到cacerts目录下

adb push E:\Desktop\e5c3944b.0 /sdcard/
su
mv /sdcard/e5c3944b.0 /system/etc/security/cacerts

这里还要检查下你把文件推送过去,一定要给读的权限,不然在已信任的证书中是看不到这个证书的

chmod 666 e5c3944b.0

 

同样是真机的话记得推送完文件以后把目录的权限改回755

推送方法2:Root权限直接转移

既然你已经有了root权限,完全可以通过软件直接在Android端直接进行转移

图示为使用MT管理器直接将证书移动到系统证书目录中

总结:

不管你用什么办法,只要把证书文件移动到/system/etc/security/cacerts这个目录下,并赋予证书文件可读的权限即可.

赞(0) 打赏
水木软件研发中心 » Android不信任证书导致无法抓包的解决办法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

微信扫一扫打赏