Android TV Https抓包(需root 8.0以上系统也OK)
文章目录
MAC系统下利用 Charles 抓包大家都比较熟悉了,但是在Android TV系统上可能因为无法安装证书,导致常规途径无法抓取https的包,今天给大家介绍下如果有root权限该怎么进行https抓包呢?
答案是直接 push Charles 证书到系统证书安装目录。下面开始讲解如何操作。
前期准备
1.下载 Charles 并进行安装 2.下载 Charles 证书(自行搜索下载),charles-proxy-ssl-proxying-certificate.pem
配置步骤
1) 获取 Charles 证书放置在系统安装证书目录的文件名
openssl x509 -inform PEM -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem | head -1
根据以上命令可以获得类似 34a6819c 的字符串,加上 .0 就是文件名,完整文件名如下:
34a6819c.0
2) root方式连接 Aladdin 机器,并且 remount
adb connect [ip]
adb root
adb remount
3)将Charles 证书放置于系统安装证书目录
adb push charles-proxy-ssl-proxying-certificate.pem /system/etc/security/cacerts/34a6819c.0
4)修改 Charles 证书权限
chmod 644 /system/etc/security/cacerts/34a6819c.0
权限如下图所示:
5)重启系统
6)设置代理
adb shell settings put global http_proxy [ip:port]
示例:
adb shell settings put global http_proxy 192.168.1.115:8888
7)打开PC端 Charles 应用,进行 SSL 代理配置
添加需要抓包的域名
配置完成就可以进行 https 抓包了
参考
其实在这之前也尝试过不少其他的方案,但有些可行,有些在某些条件下不可行,整体来说不是很好,也记录下之前尝试的方案。
尝试方案
1)下载完Charles证书,拉起证书安装App进行安装
将 Charles 证书放置到sdcard,然后拉起安装
adb shell am start -n com.android.certinstaller/.CertInstallerMain -a android.intent.action.VIEW -t application/x-x509-ca-cert -d file:///sdcard/charles.pem
这种方式因为 certinstaller app没有读取sdcard的权限,一直报 FileNotFoundException,然后猜想应该是没有读取 sdcard 的权限,于是放置到 /sdcard/Android/data/com.android.certinstaller/files/
目录下面,这个时候可以正常拉起来了,但是点击保存的时候出现问题了,无法保存到 KeyStore 中,这块逻辑放在 Settings.apk 中,应该是被阉割过,宣告失败。
参考:
https://stackoverflow.com/questions/59626101/install-self-signed-certificates-via-adb
2)push 证书到用户证书安装目录(需要root)
adb shell mkdir -p /data/misc/user/0/cacerts-added
adb push certificate.cer /data/misc/user/0/cacerts-added/807e3b02.0
# Maybe these two lines are not strictly necessary...
adb shell chmod 644 /data/misc/user/0/cacerts-added/807e3b02.0
adb shell chown system:system /data/misc/user/0/cacerts-added/807e3b02.0
这种方式在 Android N 以下都可以正常使用,但是在 Android N 之后因为系统更新,不怎么好使,Charles 官网也有说明:
只有应用配置如上才能实现 https 抓包,但是对于第三方应用就没法处理了,并不是很完美
参考链接:
https://www.tfzx.net/article/994130.html
https://stackoverflow.com/questions/4461360/how-to-install-trusted-ca-certificate-on-android-device
https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
3)通过代码自己安装,不过还没有进行验证
以上就是尝试的方案,虽然失败了,但也算是自己的一种收获,其中还去看过 certInstaller 的源码,也算了解了证书安装的这个过程。
文章作者 Brook
上次更新 2020-07-27