iOS抓包工具Charles的使用

Charles抓包工具的使用

1、首先,设置手机的网络连接电脑共享wifi,同时设置端口号;

2、其次,涉及到https抓包时,需要设置手机安装和信任ssl证书,以及设置Charles中ssl的配置。


一、下载与安装

Charles下载址:http://www.charlesproxy.com(charles-proxy-3.10.2.dmg)
javaSDK下载地址:https://support.apple.com/kb/DL1572?locale=zh_CN(javaforosx.dmg)







二、网络环境与手机的配置

1、开启电脑共享wifi,同时设置主机代理与端口号
(1)系统偏好设置——>共享——>互联网共享
(2)系统偏好设置——>网络——>以太网——>高级——>DHCP客户端ID(默认8888)



2、设置手机代理

(1)查看IP地址:终端命令ifconfig查看,或系统偏好设置——>网络——>以太网——>IP地址
(2)设置——>wifi或无线局域网——>已连接共享wifi名称——>HTTP代理——>手动——>服务器(电脑ip地址)、端口(8888)




  

三、抓包

1、http抓包

可以清楚的查看到发送的请求头信息,以及服务器返回的没有加密处理的明文信息。

(1)查看请求信息:Structure-Request

(2)查看返回信息:Structure-Response-Text,或JSON



2、https抓包

HTTPS(Hyper Text Transfer Protocol Secure),是一种基于SSL/TLS的HTTP,所有的HTTP数据都是在SSL/TLS协议封装之上进行传输的。HTTPS协议是在HTTP协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。所以,研究HTTPS协议原理,最终就是研究SSL/TLS协议。

HTTPS是通过一次非对称加密算法(如RSA算法)进行了协商密钥的生成与交换,然后在后续通信过程中就使用协商密钥进行对称加密通信。


Charles抓HTTPS包原理
Charles本身是一个协议代理工具,如果只是普通的HTTP请求,因为数据本身没经过再次加密,因此作为代理可以知道所有客户端发送到服务端的请求内容以及服务端返回给客户端的数据内容,这也就是抓包工具能够将数据传输内容直接展现出来的原因。对于HTTPS请求,4,6,8步骤的数据都已经经过了加密,代理如果什么都不做的话是无法获取到其中的内容的。为了实现这个过程的数据获取,Charles需要做的事情是对客户端伪装服务端,对服务端伪装客户端,具体截获真实客户端的HTTPS请求,伪装客户端向真实服务端发送HTTPS请求接受真实服务器响应,用Charles自己的证书伪装服务端向真实客户端发送数据内容一般情况下HTTPS中是客户端对服务端做证书校验,当然也有一些金融机构会有用户证书作为提供给服务端做用户认证的工具,保证发出请求的的确是这部分授权用户。我们仅分析客户端对服务单做证书校验的这种。Android有自己的一套HTTPS通信调用方式,以HttpsURLConnection为例

URL url = new URL(“https://wikipedia.org”);
URLConnection urlConnection = url.openConnection();
InputStream in = urlConnection.getInputStream();
copyInputStreamToOutputStream(in, System.out);
上面这段代码就是一个https请求的样例,这种方法的特点是证书校验工作交由系统处理,系统只会允许可信CA签发的数字证书能够访问,私有CA签发的数字证书(比如12306以及我们上文说的Charles证书)是无法访问的。
访问方法1:修改Https通信代码,这种只对开发者开发应用的时候好使,我们需要实现X509TrustManager接口去做自己的一套证书校验,它并不通用,尤其是对于我们抓包而言是不可行的,因为我们没法去修改别人应用中的代码。
访问方法2:将私有CA签发的数字证书安装到手机中并且作为受信任证书保存,这种方式是我们推荐的方式,唯一的缺点是你的手机上可能会在通知栏一直留着一个特殊标志,告诉你网络可能被监控。

(1)手机端配置证书



通过手机浏览器打开网址:http://charlesproxy.com/getssl

注意:安装后ssl证书后,还需要主动设置信任(设置——>通用——>关于本机——>证书信任设置)

  

  


(2)pc端配置证书


注意:

(1)未设置前https的标识都是有个加锁有标识

(2)Host设置,如果不知道具体的API地址时,可设置为星号"*"

(3)Port设置,设置时Port默认都是443



https请求及返回的信息未设置ss证书时,抓包数据均是乱码,且接口API标识为黄色警告;设置ssl证书后,则能正常显示。









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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

番薯大佬

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

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

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

打赏作者

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

抵扣说明:

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

余额充值