本文出处:http://blog.csdn.net/chaijunkun/article/details/116133490,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。

基本操作

熟悉抓包的同学一定都知道Charles,功能强大、跨平台,而且还能实现很多基于配置的抓取策略,非常好用。如果你想抓取https协议的调用,必须在客户端(手机端或者其它pc端,总之就是真正访问接口的设备)上进行一些操作。基本步骤是:

  1. 配置客户端网络连接的http代理,具体代理地址以及端口取决于运行Charles的机器配置;
  2. 客户端安装Charles的CA证书(不同Charles主机的CA证书不一样);
  3. Charles主机端同意客户端使用该代理;
  4. 启动客户端开始抓包。

经过上述步骤,目前绝大多数应用就可以实现SSL抓包了。

有些例外

但是有些app在运行时,一旦设置了Charles代理,一些接口就无法访问,主要是在SSL握手时停留在了域名握手后,连接建立,但无法正常通信。

以Android系统为例,我们都知道,操作系统内将证书分为两个存储区:系统用户.。在7.0之后,系统安全性有很大的提升,其中一项就是针对app开发者提供了网络安全配置选项(networkSecurityConfig),根据此选项指向的特定资源,可以选择只信任系统证书(当然也可以选择连系统的都不信任,只信任自己的。但证书是有失效期的,使用自己的证书代价就是一定要在失效前打包新的证书并确保全量更新,否则未更新用户就一样无法使用了。因此这种用法不是很常见)。

上述基本操作中,Charles的证书是安装在“用户”这个存储区的。因此遇到特殊配置了networkSecurityConfig的app就无法成功抓包。

知道了原理,有没有办法把自己的Charles证书伪装成系统级别的呢?答案是:有。不过,前提需要Root权限

Charles证书安装

上面提到了,先决条件是已获取Root权限。因为品牌和方法众多,这里不再赘述,直接说如何安装证书。

保存证书并重命名

在Charles的菜单中找到Help -> SSL Proxying -> Save Charles Root Certificate…
保存到本地时选择存储格式为pem,这种格式是Android直接可以使用的。

虽然pem格式的证书可以在Android中直接使用,但Android系统对证书的文件名有严格的规范——利用文件名校验文件哈希(hash),利用后缀判断级别。Android系统级别的证书后缀名是“0”。

[hash].[level]

因此想要该证书被正确载入,需要将得到该证书的哈希值。这里用到了openssl命令。

openssl x509 -inform PEM -subject_hash_old -in ***.pem | head -1

如果你使用的是Windows系统,没有head命令也无妨,去掉pem后面的命令,直接查看输出的第一行,即该证书的哈希值。

将证书重命名:

mv ***.pem [hash].0

例如

mv charles.pem 5c9c9fa4.0

传输Charles证书至Android设备

由于参考文献中的命令未能成功执行,本人也并非专业Android开发,因此我使用了替代方案。

这里需要一个adb工具。用来调试Android应用的工具,在很多地方都可以下载到,这里不再赘述。

首先将证书拷贝至/sdcard目录,该目录不需要root权限。

adb push [hash].0 /sdcard

这里就是把上一步生成的证书推送到Android设备的/sdcard目录,但此时文件的用户和用户组还不正确,需要后面修正。

然后使用root权限移动证书到正确的目录,并且修改成正确的访问权限

adb shell
OnePlus5T:/ $ su
OnePlus5T:/ # mv /sdcard/[hash].0 /system/etc/security/cacerts
OnePlus5T:/ # cd /system/etc/security/cacerts
OnePlus5T:/system/etc/security/cacerts # chown root:root [hash].0
OnePlus5T:/system/etc/security/cacerts # chmod 644 [hash].0

上述代码完成了如下内容:

  1. 进入adb脚本的交互模式
  2. 切换至root用户
  3. 将之前保存至/sdcard的证书文件移动到系统证书存储位置
  4. 切换工作目录至系统证书存储位置
  5. 修正证书文件所有者
  6. 修正证书文件访问权限

完成上述操作后,重启Android设备。即可在系统证书下看到Charles证书。

后续抓包流程与常规Charles抓包一致。

参考文献:
[1]春风秋水.如何将CA证书安装到Android的System下
[EB/OL].https://www.cnblogs.com/gwzz/p/13645337.html,2020-09-10.

想用Charles抓包,某些app不让抓怎么办相关推荐

  1. 从麻花影视的抓包看app防http抓包方式

    前一段时间看到一款比较不错的app,叫做麻花影视 感觉很良心,而且上面竟然有最新的电视剧的更新.所以想抓包看下能不能拿到这个app的视频来源.但是发现,连接上Charles之后,直接请求不到数据. 结 ...

  2. Charles 抓包手机app

    点击箭头处"蓝色字",关注我哦!! Charles 抓包手机app 使用场景: mac系统无法使用fiddler, 不知道其他朋友是否遇见过, 只能找替代工具.先去百度上搜索下载C ...

  3. APP 抓包和微信小程序抓包-Charles 的精简使用教程

    APP 抓包和微信小程序抓包-Charles 的精简使用教程 2021-09-25 更新 2019-07-10 更新 目标 教程 一.安装 Charles 二.Charles 简介 (1)Charle ...

  4. Charles抓包工具(app)的证书认证

    Charles抓包工具 app 的证书认证 App端证书安装 1.打开Charles,点击Help进入SSL Proxying,选择第三个App端证书. 2.这时候弹出此信息框提示,显示主机号端口和证 ...

  5. httpcancry抓包教程_HttpCanary抓包工具app下载

    HttpCanary抓包工具app是非常实用的抓包工具,他可以对网络数据抓取,进行分析操作,同时对网络通讯的数据进行监控,再以图形界面的浏览方式让用户查看,让用户更直观更加清楚的了解数据,欢迎感兴趣的 ...

  6. 抓包精灵app使用教程

    大家好啊,给大家推荐一款抓包app,相比其他的抓包工具,该app无需各种设置,各种代理,更为简单,易上手,更关键是免费,接下来大家跟我一起看看这款app是如何使用的吧. 对了,安装包我放在了公众号,公 ...

  7. fiddler抓包后APP无法访问的解决

    fiddler抓包后APP无法访问的解决 问题原因 如何解决 手机抓包的具体操作 问题原因 如果开启fiddler抓包后,部分APP正常解密HTTPS,部分APP不行(比较典型的是应用商店,淘宝,知乎 ...

  8. 安卓android6以后fiddler Charles等抓包软件也适用)抓包手机的解决方法

    本人产品加技术狗,最近产品研究需要要用fiddler抓包手机app,刚好这款aap的IOS版本下架了,只有安卓版本可用,于是用手里的小米mix2 安装了这款app,fiddler在电脑上抓包,发现老是 ...

  9. fiddler抓包新闻APP

    fiddler抓包新闻APP 使用 fiddler 搭配夜神模拟器 爬取央视新闻APP 2020 年一月份的所有新闻数据. 1.在雷电模拟器中打开央视新闻APP 2.将fiddler工具中的记录清空, ...

  10. 面试官系列 - https 真的安全吗,可以抓包吗,如何防止抓包吗

    文章目录 前言 背景 什么是 https 什么是SSL https 的连接过程 证书验证阶段 数据传输阶段 https 的加密方式是怎样的,对称加密和非对称加密,为什么要这样设计 内容传输为什么要使用 ...

最新文章

  1. PTA基础编程题目集-7-4 BCD解密
  2. python使用缩进作为语法边界、一般建议缩进()_Python百题计划
  3. 微软MCITP系列课程(四)磁盘系统管理
  4. awd的批量脚本 pwn_AWD攻防之web入门篇
  5. CNN 卷积神经网络(卷积、池化)长度、宽度、深度计算
  6. 我们计划招收300名电力人,免费学习CAD。
  7. Jprofiler监控工具(内存泄漏)
  8. 【Tiny4412】烧写Android系统remote data too large问题分析和解决
  9. notify和wait
  10. ASP.NET Core MVC中的 [Required]与[BindRequired]
  11. 爬虫必须学会的正则表达式
  12. HTML基础做出属于自己的完美网页
  13. 惊现漏洞门!大众汽车被曝安全风险,1分钟内即可轻易解锁
  14. 计算机网络中的所谓资源是指硬件软件,计算机网络中的所谓“资源”是指硬件、软件和______资源。A.通信B.系统C.数据D.资金...
  15. 西瓜书+实战+吴恩达机器学习(十八)降维(主成分分析 PCA)
  16. 2018年终总结以及未来展望
  17. 【Unity3D】计算二维向量夹角(-180到180)
  18. Cgroup资源配置方法详细解析
  19. 2021中国科学院文献情报中心期刊分区表 计算机(2)
  20. JNI:Fatal signal 11 (SIGSEGV) at 0x00000008 (code=1)错误的一点认识

热门文章

  1. animate.css 动画库的使用
  2. 宏碁暗影骑士AN515-55/57/58原厂预装系统oem镜像
  3. QT程序图标不能显示解决
  4. apktool工具在kali中的安装步骤
  5. c语言以16进制输出大写字母,【C语言】十六进制形式输出应用程序
  6. 每天一个俯卧撑的健身法 - 微习惯实践
  7. 白茶清欢无别事,我在等风也等你,苦酒折柳今相离,无风无月也无你
  8. manjaro gnome配置白天夜晚自动切换对应主题
  9. 几行代码爬取喜马拉雅音乐
  10. WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换案例教程(附转换工具下载)