charles 安装 ssl_Charles抓包与mock数据(I)

Charles抓包与mock数据

 最近有用到Charles,有一些感悟,分享给大家,希望对大家有所帮助。在Windows 平台相信很多人都用过Fiddler抓包,而Mac 平台一般使用Charles进行抓包。不过Charles属于商业软件而Fiddler属于免费软件。

本文无任何入侵计算机系统内容,内容完全为开放信息,可以在网上查到。本文内容仅供学习参考,请勿用于其他非法内容。

b2b9232a75819c087c6192b247df7650.gif

本文用到的工具:

1. Charles 用于抓包

https://www.charlesproxy.com/

2. Frida 用于Hook

https://github.com/frida/frida 

3. 汇智e站 被抓包对象

https://sj.qq.com/myapp/detail.htm?apkName=com.wiseonline.huizhi

壹---Android  HTTPS 抓包

相信用过Charles的人都知道如何使用Charles直接抓包,这里我不在多说,毕竟也没有什么技术含量。我想说的是通过Android端抓HTTPS的包。首先设置Charles,开启SSL。如图:

274351b18a4f5be93fbcadc4db0bb6b4.gif

然后,手机端设置代理,如下图:IP为你Charles的IP,端口为8888.

39abe1d14f355bab02da7bc4bb01cb2e.png

设置完毕之后安装Root证书。

dfb81c4e03943f349cc68620ba596e2e.png

手机端也需要安装证书,连接Charles之后,打开浏览器输入chls.pro/ssl下载证书并安装。很简单不是,可以开始抓包了。这次我们以汇智e站为对象,看看汇智e站到底使用了什么API。

然鹅,当我们打开APP之后发现依然不能拿到SSL的内容。而当打开一些HTTPS的网站,却能拿到数据(比如百度),说明了证书这种方式并不能实现抓HTTPS的数据。 

b84d3be0a67145e9b2e5b4b63d33cd75.png

我查了一下,原因是Android 7 之后如果要抓APP的HTTPS请求需要在APP里面加xml文件,这种方式适合当前APP开发者,不适合抓包第三方APP的情况。

貮---Android HTTPS抓包失败解决方案 

解决方案也很简单,就是上文提到的Frida . Frida 是一款Hook工具,可以用来跟踪拦截APP的方法, 需要Python环境。

安装: 

pip install frida-tools # CLI tools
pip install frida # Python bindings

下载server端,根据你的模拟器的CPU。比如x86的下载x86

https://github.com/frida/frida/releases

d3071306bac5ac8828dfbddb6bf33843.png

启动frida server

adb root && adb push frida-server-12.7.22-android-x86 /data/local/frida-server && adb shell chmod +x /data/local/frida-server && adb shell /data/local/frida-server

之后可以直接使用frida查看相关进程

frida-ps -U

会列出所有进程

添加支持SSL JS文件

Java.perform(function() {

    var array_list = Java.use("java.util.ArrayList");

    var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');

    ApiClient.checkTrustedRecursive.implementation = function(a1, a2, a3, a4, a5, a6) {

        // console.log('Bypassing SSL Pinning');

        var k = array_list.$new();

        return k;

    }

}, 0);

使用该文件进行SSL拦截跟踪。

 frida -l frida.js -U -f com.wiseonline.huizhi --no-pause

94d4694c753cfcdb44be92ff98ac8ffd.png

这样就可以拿到所有HTTPS的内容。

163646505d9b1e568ce3a557eb7b6270.png

叁---拦截修改HTTPS请求

 经过以上内容,已经可以正常拿到HTTPS的所有内容,接下来就可以尝试拦截并修改请求。以一个POST请求为例。

6c43ae4a8504293098f0ae71d6566dc2.png

在请求打断点,右键选择BreakPoints,之后repeat该请求。

4b8f3ffaeb5f55323f4d2ba6b11cd62e.png

这时,已经进入debug模式,已经将该请求拦截。可以先修改request,如果不修改可以直接execute执行request。

1035b2f77934c7f2c7f2227917402c75.png

然后进入Response编辑模式,可以对Response的内容进行编辑,编辑完毕点execute执行Response。

87d9710bcb7f201a2ba2f80fb9167f86.png

之后可以save该Response

3d0a0426ef1e5bee8b086a0018f0c35f.png

肆---Mock 数据

以登录为例,可以先抓包拿到Response,并把Response save到本地。然后通过Local Mapping来Mock数据。当用户名和密码错误的时候,success的value是false。对应的登录结果也是登录失败,我们把这个Response save到本地的时候,把success 从false改为true。就可以mock登录成功的情况。

3f979e3cf2adac36894f3bd204b54ec2.png

c849bd119f4d28b91fb486c64bc933d3.gif

伍---总结

a. Charles 不仅能用来抓包,而且可以用来Mock数据,能非常方便的提供在API不易满足开发测试需求时,根据自己的需要定制Response内容。 

b. Charles Root证书并不能拿到所有的HTTPS请求的内容, 这时候可以采取通过Frida 等工具抓包SSL。

c. 该方法不光支持Android也支持iOS,可以下载对应的Frida进行抓包尝试。

5e4dac7273fa3536cb63add3680da301.gif

点击下方“阅读原文”查看更多精彩内容☺

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值