android 7.0以上charles https抓包

由于Android7.0之后新版本系统的安全限制,证书必须安装到系统证书目录下:/system/etc/security/cacerts

之前的安装的证书的步骤可能会抓包产生下图问题:

Android7.0 之后默认不信任用户添加到系统的CA证书,按之前的步骤即使你在手机上安装了抓包工具的证书也无法抓取 https 请求,但是苹果系统目前还是可以安装的。

 

操作步骤:

1、系统首先root

2、在手机上下载并安装证书

  • 手机连上charles的代理,qq浏览器输入chls.pro/ssl,会直接下载得到一个 charles-proxy-ssl-proxying-certificate.pem (目前只知道qq浏览器下载的格式为pem)证书。
  • 安装方法:设置 > 密码、隐私与安全> 系统安全 > 加密与凭据 >  从SD卡安装(注意要先把之前的清除)

3、将下载的pem证书文件传到到电脑上,并执行以下命令得到证书的md5值

openssl x509 -subject_hash_old -in 文件

 

如本博文示例:openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem

输出结果:

第一行:9fb67cec 即为md5值。

9fb67cec
-----BEGIN CERTIFICATE-----
MIIFTDCCBDSgAwIBAgIGAWnNu9S4MA0GCSqGSIb3DQEBCwUAMIGqMTswOQYDVQQD
DDJDaGFybGVzIFByb3h5IENBICgzMCDkuInmnIggMjAxOSwgc2RjdWlrZWRlLmxv
Y2FsKTElMCMGA1UECwwcaHR0cHM6Ly9jaGFybGVzcHJveHkuY29tL3NzbDERMA8G
A1UECgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1Y2tsYW5kMREwDwYDVQQIDAhBdWNr
bGFuZDELMAkGA1UEBhMCTlowHhcNMDAwMTAxMDAwMDAwWhcNNDgwNTI2MDgzMzUy
WjCBqjE7MDkGA1UEAwwyQ2hhcmxlcyBQcm94eSBDQSAoMzAg5LiJ5pyIIDIwMTks
IHNkY3Vpa2VkZS5sb2NhbCkxJTAjBgNVBAsMHGh0dHBzOi8vY2hhcmxlc3Byb3h5
LmNvbS9zc2wxETAPBgNVBAoMCFhLNzIgTHRkMREwDwYDVQQHDAhBdWNrbGFuZDER
MA8GA1UECAwIQXVja2xhbmQxCzAJBgNVBAYTAk5aMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAw84oCpyd0O4gMVeLlCYjWGgIT2ROskLfVykcrPXSnXBk
FUsizZjzzmiGd6IJ/0htntbfAHE7nRuiJMpiGJiFHwKqLC10LClM7ezpjTUy8TZn
c7BYOq2tXNxvXFX59gnYTbjEeWgFReuvYpEzOIqUNEXvoetbSdbMipAPNzPaBZWN
JHxeR+KBw......==
-----END CERTIFICATE-----

4、将charles-proxy-ssl-proxying-certificate.pem重命名为:<8位md值>.<0>,这里的md5值为上一步得到的。

 

Android系统根目录下的证书名字格式如下:<8位md值>.<0>

本博文的证书名称就是:9fb67cec.0

可以看到系统中其他证书的名字格式如下图:

olivelite:/ # cd system/etc/security/cacerts
olivelite:/system/etc/security/cacerts # ls
00673b5b.0 1df5a75f.0 2d9dafe4.0 3c58f906.0 4e18c148.0 5f47b495.0 7999be0d.0 882de061.0 9685a493.0 a7605362.0 b872f2b4.0 c90bc37d.0 d4c339cb.0 e775ed2d.0

5、将上面步骤产生9fb67cec.0证书push到手机目录:/system/etc/security/cacerts


 

sudo /Users/sdcuike/Library/Android/sdk/platform-tools/adb push 9fb67cec.0 /system/etc/security/cacerts


9fb67cec.0: 1 file pushed, 0 skipped. 0.2 MB/s (1917 bytes in 0.008s)

 

push中如果遇到错误 例如remount of the / superblock failed: Permission denied或者file only read等。

解决办法:

$ adb root
$ adb disable-verity
$ adb reboot
$ adb root
$ adb remount

 

6 、在 设置->安全->加密与凭据->信任的凭据 的系统标签页看到你新加入的证书,将其启用即可顺利抓包

 

安装好的CA证书

 

经过上述在红米8A上顺序实现https 抓包(红米8A的root不是自己root的,内部刷的包)。

当您在尝试对运行安卓7.0及以上版本的设备进行抓包操作时遇到失败的情况,这通常涉及到几个可能的问题: 1. **权限限制**:安卓系统对于应用的网络访问进行了严格的权限控制。为了进行网络抓包操作,您的应用程序需要获取特定的权限。如果应用程序未在AndroidManifest.xml文件中声明必要的权限,或是用户拒绝了相应的权限请求,那么抓包功能将无法正常工作。 - 需要在`<manifest>`标签内添加`<uses-permission>`元素,例如: ```xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WIFI_DEBUGGING" /> ``` - 用户在安装应用时,可能会看到一个弹出窗口提示关于获取某些权限的必要性,并询问是否允许。确保用户正确地授予了所有必需的权限。 2. **开发者工具限制**:部分开发者工具可能受限于操作系统或安全策略。例如,某些工具可能无法通过标准API直接访问网络数据流,而需要使用特殊的方法或绕过常规机制,如使用root权限或其他非官方手段。然而,在安卓上,这样做可能存在风险并违反隐私政策。 3. **防火墙规则**:设备上可能已经配置了防火墙规则,阻止了特定应用的网络通信。检查防火墙设置,确认是否存在针对您的应用的禁止规则。 4. **应用自身限制**:有时,问题可能出现在应用本身的实现上。比如,代码中有错误、逻辑漏洞,或者是资源加载、初始化不当等导致应用无法正常获取网络数据。仔细审查应用的网络访问代码,查找可能的异常处理不足或资源管理问题。 5. **兼容性和稳定性**:安卓7.0引入了一些新的安全特性,可能导致一些较旧的应用或库无法完全兼容。确保使用的依赖库和框架都支持最新的安全规范。 解决上述问题的一般步骤包括: - 确认应用已正确声明所需权限并在设备上获得授权。 - 检查网络访问相关的代码,确保没有逻辑错误或资源泄漏。 - 使用开发者文档和社区资源验证是否有兼容性或权限方面的更新信息。 - 调试日志和性能监控工具可以帮助定位问题所在。 如果您正在使用的是某个特定的开发者工具或库,可以查阅其官方文档或论坛,寻求更具体的解决方案和最佳实践建议。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dreamer who

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值