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的文件替换掉 即可

           
        (3)此时,重启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 体会私钥和公钥的加密过程

 

 

posted @ 2019-04-22 16:29  pretend_smile  阅读(2008)  评论(0编辑  收藏  举报