Charles抓包工具:用途与安装破解 以及http/https 加密解密原理
1.1 charles的说明
1.1.1 通俗说明
Charles其实是一款代理服务器,通过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。安装Charles的时候要先装好Java环境。
1.1.2 简介
- Charles是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。
- Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
- 除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。
- Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。
1.1.3 Charles的主要功能:
- 截取 Http 和 Https 网络封包。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 支持模拟慢速网络。
1.2 charles的下载和破解
1.2.1 安装包的下载
(1)进入官网下载地址:https://www.charlesproxy.com/ ,点击链接下载30天免费试用版本。
PS:Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。
(2)安装方法下载破解版,安装即可
安装包地址:https://pan.baidu.com/s/1caploU
破解补丁地址:https://pan.baidu.com/s/1hrRpzda
或破解地址:https://www.zzzmode.com/mytools/charles/
(1)按照步骤下载安装第一个安装包;
(2)将破解补丁包粘贴到charles的lib文件下,然后将原来的命名为charles的文件替换掉 即可
1.3 配置Charles
1.3.1 配置思路
配置代理、获取证书、安装证书、信任证书
- 1.打开charles
- 2.设置charles代理端口 , Proxy->Proxy setting,就可以抓取http协议了(默认不用更改)
- 3.设置ssl proxy settings
- 4.打开模拟器配置代理地址
- 5.模拟器打开浏览器 访问chls.pro/ssl 下载并安装证书
- 6.打开被测app 打开charles的录制和ssl开关 抓包
1.3.2 charles与手机/电脑的连接
1.3.2.1 charles与手机端的连接
使手机和电脑在一个局域网内,不一定非要是一个ip段,只要是同一个路由器下就可以了。
(1)首先我们需要获取 Charles 运行所在电脑的 IP 地址,Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址,如下图所示:
(2)在 手机或者模拟器 的 “ 设置 “->” 无线局域网 “ 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:
配置完成,会看到一个charles与手机端的连接提示弹窗,选择allow即可。
(3)手机端抓包https
上述1、2步骤,只针对http请求。由于https协议的特殊性,所以要求电脑端和手机端都需要安装证书,否则会看到返回的数据都是乱码。
- a.电脑端证书下载
- b. 手机端证书下载
在设备上打开这个网址 http://www.charlesproxy.com/getssl 安装 Charles SSL 证书。
注意,同一个手机对应不同电脑上的Charles都要分别下载证书进行认证,因为手机的证书是和电脑端的Charles一一配对的。
⚠️ androd存在问题
模拟器上设置网络代理: 设置--WiFi--鼠标左键长按--修改网络--代理--手动--设置服务器主机名和端口号保存即可
PS:ios手机,需要信任该证书
- c. 相关配置--指定抓取的网址或者端口
选择Proxy | Proxy Settings,弹出proxy设置选项卡,勾选Enable SSL Proxying,在Location部份选择add,按如下图添加,抓取任意站点、443端口的数据。
1.3.2.2 charles与电脑端的连接
由于charles会自动配置浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了。直接打开网页就可以了。
推荐使用工具:SwitchyOmega用来管理代理配置,使用的时候直接切换即可
注意:
(1)Charles支持抓去http、https协议的请求,不支持socket。
(网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket)
(2)防火墙关掉
1.4 Charles工作原理
1.4.1 Charles 工作原理
- 正常请求流程是: 从浏览器等发送请求到服务器上,服务器处理完成后返回给浏览器
- 加入代理后的流程是: 从浏览器发送请求,经过代理工具(这中间是通过配置端口,代理工具中监听端口实现的),再转发给服务器上,服务器处理完成后返回给代理工具,代理工具再将结果返回给浏览器
部分应用支持走代理,部分不支持,走不走代理由应用决定
1.4.2 常见的走代理的应用 和 不走代理的应用
- Charles(应用层) : 可以代理浏览器、curl 命令(如下图)、requests请求
- 80%的应用不走Charles:英雄联盟、有道云等 ,对于不支持进行代理的,可以用反向代理进行抓包
1.4.3 反向代理 (主要应用场景:微服务)
反向代理:串改应用的目的地址为Charles的地址(127.0.0.1:Charles监听的端口),应用将Charles当做了服务器,而并不知道真实服务器的存在
1.4.4 反向代理实战
则访问网址:127.0.0.1:51405时,就会跳转到百度页面
访问网址:127.0.0.1:51474时,就会跳转到豆瓣页面
1.4.5 Charles证书 :配置证书 为了抓HTTPS请求
1.4.5.1 HTTPS 是HTTP+SSL的总称,在HTTP上加了加密动作
安装Charles证书,浏览器访问时,会去证书颁发机构去验证证书的合法性,合法了才会发送对应的请求
1.4.6 加密技术
- 对称秘钥算法:数据加密和解密用同样的密钥
- 速度快、信息量大
- 非对称密钥算法:数据加密和解密使用不同的密钥
- 速度慢、数字签名
1.4.6.1 对称加密
1.4.6.2 非对称加密 (公钥加密 私钥解密)
传给谁,就用谁的公钥加密,那你传给对应的人后,人家本身就是公钥私钥一对的,所以就用匹配的私钥进行解密
发证书的过程,会将公钥发出去
1.4.7 仅验证的server握手
1.4.8 使用 git 和 github 体会私钥和公钥的加密过程