iOS小技能:Charles抓包【应用场景:App联调测试】

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储 OSS,标准 - 同城冗余存储 20GB 3个月
简介: Charles 支持的协议:HTTP/1.1、HTTPS、HTTP/2、ws(WebSocket)、wss(WebSocket Secure,TLS 加密的 WebSocket)、SOCKS

前言

Charles 支持的协议:HTTP/1.1、HTTPS、HTTP/2、ws(WebSocket)、wss(WebSocket Secure,TLS 加密的 WebSocket)、SOCKS

“⚠️ 注:Charles 不支持 HTTP/3,但是大部分开启 HTTP/3 的网站都做了降级处理

若想抓取其他协议的报文,推荐用 Wireshark
Wireshark用的是RVI(Remote Virtual Interface)(iOS5以上才支持)。

更多关于Wireshark 请看这篇为文章:https://blog.csdn.net/z929118967/article/details/76914929

I 抓包配置

1.1 iOS侧的代理配置(默认不支持拦截SSL数据)

  • 把 iOS 的网络包转发到代理 IP 和代理端口的配置

    在这里插入图片描述

确保Mac和iPhone在一个局域网,并在iPhone上设置代理信息:Mac端地址代理端口即可

五元组:源 IP 地址,源端口,传输层协议,目的 IP 地址和目的端口

  • 查看 Mac地址
    在这里插入图片描述
    或者使用ifconfig查看IP
    ```bash
    inet 192.168.1.107 netmask 0xffffff00 broadcast 192.168.1.255

Charles 的代理端口号可以从` Charles -> Proxy -> Proxy Setttings `进行查看和更改。端口默认是 8888
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20201229161331713.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwMTg5Nzk=,size_16,color_FFFFFF,t_70)

## 1.2  Mac侧的证书安装
需要信任证书,否则将提示: You may need to configure your browser or application to trust the Charles Root Certificate.


HTTPS =  HTTP 协议 + TLS 协议
>在 TCP 三次握手之上加入了四次 TLS 握手,TLS 握手过程中会校验加密用的公钥证书,所以想要拦截SSL请求,我们需要手动安装并信任 Charles 的证书,




- Mac侧的证书安装
> `Charles -> Help -> SSL Proxying -> Install Charles Root Certificate `


![](https://ucc.alicdn.com/images/user-upload-01/20201229164321739.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwMTg5Nzk=,size_16,color_FFFFFF,t_70)

- iPhone上的设置方法:` Charles -> Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Derive,这时候会跳出一个弹窗,根据提示在手机端访问 chls.pro/ssl,下载安装 Charles CA 证书`

>或者直接访问


![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20181210174012850.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwMTg5Nzk=,size_16,color_FFFFFF,t_70)

设置->通用 -> 选择对应的描述文件进行安装信任刚刚下载的证书。


## 1.3  iOS端信任证书的方法


- iOS 信任证书

iOS10.3.1 新安装的证书需要手动选择信任证书。

解决方式:

设置->通用->关于本机->证书信任设置


- 应用场景:iOS10.3.1 新安装的证书需要手动选择信任证书。




![解决方案](https://ucc.alicdn.com/images/user-upload-01/20181210173751815.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwMTg5Nzk=,size_16,color_FFFFFF,t_70)





# II 解决Certificate Pinning导致的无法分析问题


在 HTTPS 请求时,服务端发给客户端的公钥证书必须和客户端内置的公钥证书一致才能请求成功。
>(支付行业的产品都会采用这个基本的验证,具体请看这篇[文章](https://kunnan.blog.csdn.net/article/details/77115940):https://kunnan.blog.csdn.net/article/details/77115940)

##  方案1:把证书和私钥导入到 Charles
- 解决方案1:把证书和私钥导入到 Charles 中,解决Certificate Pinning
>`Charles -> Proxy -> SSL Proxying Setting -> Root Certificate,然后导入 .pem 或 p12 文件`
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20201230141529616.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwMTg5Nzk=,size_16,color_FFFFFF,t_70)
双向认证的配置
![](https://ucc.alicdn.com/images/user-upload-01/20201230141954459.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTEwMTg5Nzk=,size_16,color_FFFFFF,t_70)

- 方案2:如果没有公钥证书和随之配套的私钥,这个时候当然可以采取逆向的手段来绕过证书校验

## 方案2:借助逆向手段来绕过证书校验

- [ios-ssl-kill-switch tweak](https://github.com/zhangkn/ios-ssl-kill-switch):https://github.com/zhangkn/ios-ssl-kill-switch
>更多相关信息请看这篇文章:https://kunnan.blog.csdn.net/article/details/77115940
- [ssl-kill-switch2:Blackbox tool to disable SSL certificate validation - including certificate pinning - within iOS and OS X Apps](https://github.com/nabla-c0d3/ssl-kill-switch2)
- [objection/hooks/ios](https://github.com/sensepost/objection/tree/master/objection/hooks/ios)

[pinning/disable.js: This hook attempts many ways to kill SSL pinning and certificate](https://github.com/sensepost/objection/blob/master/objection/hooks/ios/pinning/disable.js)

# III 预备知识
## 3.1 获取站点的证书【可选】

 如果遇到[app进行本地证书验证](https://kunnan.blog.csdn.net/article/details/77115940)的时候,需要在iPhone上信任对应的站点证书

>使用openssl命令来获取到服务器的公开二进制证书(以google为例):

```bash
openssl s_client -connect www.google.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer

3.2 pem转变格式为DER

证书有BASE64和DER两种编码,der二进制编码可以使用openssl进行转换。

  • 转变格式为DER
openssl x509 -outform der -in kncmpay.cer -out kncmpay.cer

3.3 Android不同版本对CA 证书权限的处理规则

Android 版本越高,HTTPS 报文越难抓

系统 CA 证书:基本拥有所有权限
用户 CA 证书:用户自行安装,权限很低

获得证书 ROOT 权限

1、直接 ROOT Android 手机,把 Charles 证书放到系统证书里,实现证书洗白
2、Android 7.0 以下:信任用户 CA 证书,可以简单的理解为我们安装的证书直接获得 ROOT 权限
3、修改Android的配置文件 res/xml/network_security_config.xml ,来控制网络安全:
```xml
<?xml version="1.0" encoding="utf-8"?>













```

release 包只信任 system 级别的证书,
debug 包同时信任 system 和 user 级别的证书

see also

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
目录
相关文章
|
9月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
337 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
2月前
|
运维 iOS开发 Windows
windows电脑备案ios APP获取公钥和证书指纹Sha-1值的方法
在阿里云进行APP备案、在备案IOS端的环节的时候,发现需要我们将p12证书安装在电脑上,再用xcode或或钥匙串访问来获取这个证书的公钥和sha-1值。 但是大部分开发uniapp应用的同学们,或者进行发布的运维人员的电脑都是windows,无法按照阿里云的教程来获取ios的公钥和sha-1。备案就被卡主了。 这里介绍下另一个方法,就是使用香蕉云编来在线上传证书获取。如下图所示,打开香蕉云编后,找到下图这个功能
511 0
|
4月前
|
人工智能 IDE 前端开发
写给尊贵的 Tare Pro 用户的喂饭级 IOS APP 开发指南
本文介绍了如何利用 AI IDE Trae,从零开始快速开发一个 iOS 应用《回声》。通过 AI 辅助完成需求梳理、原型设计、编码与调试,展示了 AI 在整个开发流程中的强大助力。
520 0
|
8月前
|
Swift iOS开发 开发者
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
1161 13
苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡
|
8月前
|
存储 数据安全/隐私保护 开发者
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
334 8
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
|
10月前
|
安全 数据安全/隐私保护 Android开发
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
1635 75
|
9月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
620 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
386 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
9月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
395 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
9月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1125 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了

热门文章

最新文章