背景:最近在做数据缓存相关的工作;我们的设备是放在高铁里面的,主要是提供wifi服务。然而我们的wifi是由sim卡4g网络拨号提供的,用户在上网时需要下载我们的APP:掌上高铁;所以领导提出一个要求,要在自己服务器做一个缓存,用户在ios app-store下载掌上高铁的时候,直接把它劫持掉,改由我们设备服务器直接推给用户下载,这样我们就可以省下不少流量。
现在问题来了,我们需要分析不同苹果手机机型在app store 点击下载掌上高铁时,服务器提供的Url是否一样,这就用到抓包了。习惯在winds10上用fidler来抓取包,所以这次还是使用了fidler,但是发现苹果手机在配置代理后,app store就连不上服务器,猜测是 fidler提供的根证书,app store 不认可;所以最后,改用了charles 来抓取;
charles 一般用于mac上面来抓取ios上的http包,但是charles也可以用于winds上面;很多ios上面的app 在使用fidler代理时,会连不上服务器,但是用charles就可以。
知识点:
1)https加密
2)中间人攻击(charles就起到一个中间人的作用)
假设A是服务器,B是用户,B向A发起HTTPS连接,于是A需要将自己的公钥发给B。中间人C通过某种手段可以截获并伪造AB之间的通讯(比如运营商)。那么C可以伪造一份A的公钥,并保有这分假公钥的私钥;然后截获A发给B的真公钥,并伪造自己的身份,让B认为自己就是A,并把伪造的公钥发给B;如此一来,B会通过伪造的公钥给A发送密文,而C就可以截获这些密文并利用手中的私钥轻易的解密这些密文了。然后将这些密文通过正确的公钥转发给服务器A,这样AB之间的通讯仍将继续,AB在毫不知情的情况下被中间人把证书“偷梁换柱”,从而达成了中间人攻击,AB之间的非对称加密形同虚设,从而TLS协议的对称加密的密钥就能被C轻易的获取,如此,TLS完全告破。
3)数字证书认证机构CA
CA的出现就是防止中间人攻击,简单理解就是确保B收到A的公钥是真实的,而不是伪造的;
简单来说就是:A向CA机构申请一个证书(根密钥对,其公钥称为根证书),把A的公钥用CA的密钥进行加密,这样:A就有了 通过CA验证的证书;
当A向B发送经过加密的公钥时,B需要用根证书(密钥)来解密公钥;如此一来,就对A的身份进行了认证;
正题:主要介绍 charles在winds10 上的配置和ios端代理的配置;
一、下载并且安装charles,再破解掉
我在百度网盘里面放了charles V4.2 并且放了个破解文件;备注:charles是收费软件,免费也可以用,但是经常断,所以这里提供一个破解版本;
百度网盘链接: https://pan.baidu.com/s/1iLnUzYg9Q395l48Wz9lhVw 提取码: c6a5
破解方法:安装charles后先不启动,然后把 charles.jar替换C:\Program Files\Charles\lib\下的charles.jar
二、配置windos 端 charles
1)设置-》 proxy Settings里面配置 http 代理; 端口配置为:8888
2)给手机端安装根证书:
help->ssl proxying-> install Charles Root Certification on a Mobile device or remote Browser
点击确认后,会出现下面的对话框,点击确认就好了。
三、手机端ios设置:
1)配置wifi走代理;注意:手机和电脑连接同一wifi;
方法:设置 里面找到我们的wifi, 点击进去,配置代理-》手动,填写服务器和端口;
服务器就是电脑wlan的ip(通过ifconfig查看),端口:8888
注:设置好后,电脑端就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击“Allow”即可完成设置。
2)ios下载chales颁发的根证书
打开浏览器,并且输入:chls.pro/ssl ,这时候一路确认安装就好了;
安装好后,把证书启用:设置-》通用-》关于本机-》证书信任设置
最后:不出意外的话,这时候就可以正常抓取https网络包了,如果大家有不懂的或者是想多交一个朋友,可以给我留言或者微信我:stefan1240 ,请注明优快云;