【承上篇】Charles(翻到了自己总结的笔记,算是上个的延展版吧)

这篇笔记记录于2017年3月16日,原文内容(所有涉及文章均已附原文链接):

抓包(旧版:1、2、3;新版:4 遇到的问题:5)

下载;
旧版证书;
新版证书;
1、Mac上的抓包工具Charles;
2、Mac Charles乱码解决办法;
3、mac环境下使用Charles抓包Https请求;
4、最新版charles4.0 如何抓包iphone上面的https请求;
5、Charles使用过程中遇到问题;

【官网】:https://www.charlesproxy.com/download/latest-release/

—————证书—————

旧版手机证书:

手机安装证书 证书下载地址:
https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/

或者直接在safari 浏览器打开下面的地址就可以下载
https://www.charlesproxy.com/assets/legacy-ssl/charles.crt

新版手机证书:
chls.pro/ssl

这里有很重要的一点,你在为手机安装证书的时候你需要去首先点开
“Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”

在这里插入图片描述
点开以后你可能就能看到类似的图片。你要怎么安装这个证书的。

<1 首先你需要把你手机上连接着的wifi的http代理配置成ip是192.168.1.102 端口是8888(这里的ip 和端口要以你自己点开这个文件所显示的为准)
< 2 你需要用Safari浏览器打开 chls.pro/ssl这个地址。然后你就下一步下一步就好了(这里就是很多以前教程出问题的地方。那些教程都是给了你一个地址让你去打开。但是这个地址需要和你自己实际相关联)

现在你再打开charles。你就可以看到http是请求的内容了。

—————证书—————

1、 Mac上的抓包工具Charles:

http://blog.csdn.net/jiangwei0910410003/article/details/41620363

今天就来看一下Mac上如何进行抓包,之前有一篇文章介绍了使用Fidder进行抓包
http://blog.csdn.net/jiangwei0910410003/article/details/19806999

不过可惜的是,Fidder使用C#开发的,所以就不能在Mac上使用了,不过还有另外一个抓包神器,就是Charles,它是Java开发的,所以跨平台,不仅可以在Mac上使用,Linux以及Window下都是可以使用的,当然需要安装JDK,才能运行,同时还有一个问题就是他是收费的。

一、下载

先到它的官网http://www.charlesproxy.com/可下载到最新版本,这个下载有点慢,我已经将它放到网盘中了:http://pan.baidu.com/s/1gdu0S4V

这个是3.9.3版本的,下载下来,安装就不多说了,很easy….打开界面:

在这里插入图片描述

二、破解

不过这个收费的,那么接下来就开始破解吧,其实破解很简单就是替换一个文件就可以了,可以在网上搜:Charles3.9.3破解的jar文件

这里我也是下载好了:http://pan.baidu.com/s/1i3gjEfj

下载下来之后我们就可以进行破解吧:

打开应用程序,选择Charles,选择显示包内容:

在这里插入图片描述

然后点击Contents->Resources->Java:

在这里插入图片描述

然后将我们下载下来的charles.jar替换这里的charles.jar就可以了。然后再次打开Charles,就不会太提示30天使用期限了,破解搞定

三、抓包
下面来看一下如何进行抓包
第一、HTTP抓包
1、打开Charles程序
2、查看Mac电脑的IP地址,系统偏好设置->网络就可以查看到了,比如我的ip地址是:192.168.1.7
3、打开iOS设置,进入当前wifi连接(Mac在一个局域网内),设置HTTP代理Group,将服务器填为上一步中获得的IP,即192.168.1.7,端口填8888:
在这里插入图片描述

4、iOS设备打开你要抓包的app进行网络操作
5、Charles弹出确认框,点击Allow按钮即可

第二、HTTPS抓包

需要下载Charles证书http://www.charlesproxy.com/ssl.zip,解压后导入到iOS设备中,这里我也是下载好了:

http://pan.baidu.com/s/1sjJiZYt,我们在iOS设备中使用safari打开这个链接:

在这里插入图片描述
点击打开: 在这里插入图片描述
点击安装:在这里插入图片描述

再次点击安装,证书就安装成功了

然后在Charles的工具栏上点击Proxy按钮,选择Proxy Settings…
切换到SSL选项卡,选中Enable SSL Proxying,别急,选完先别关掉,还有下一步
这一步跟Fiddler不同,Fiddler安装证书后就可以抓HTTPS网址的包了,Charles则麻烦一些,需要在上一步的SSL选项卡的Locations表单填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名,比如填api.instagram.com(填*表示所有网站都抓 ),Port填443
在这里插入图片描述

这时候我们打开网易app:

在这里插入图片描述

就可以看到数据了,至此抓包工作就搞定了。

注意:当我们不抓包的时候,会将Charles关闭,这时候iOS是访问不到网络的,因为设置了代理(就是Charles),这时候需要将iOS中的代理关闭,这个是抓包时经常犯的错。

2、Mac Charles乱码解决办法:

http://blog.csdn.net/a327369238/article/details/52856833

用到Charles,下载最新的4.0.1版本,但是发生乱码问题。百度好久才找到个靠谱的,那些说什么在Info.plist文件加字符串的,都是假的,反正我是试了都没用,这里记下详细的操作步骤解决:
1.安装SSL证书
3.10之前的,需要去
http://www.charlesproxy.com/ssl.zip
下载 CA 证书文件,然后双击 .crt 文件,选择「总是信任」按钮,在钥匙串访问中即可看到添加成功的证书。
3.10及之后安装方法:
打开Charles,上方菜单栏 —-》Help —-》SSL Proxying —-》Install Charles Root Certificate,如图所示:
在这里插入图片描述
点进去之后,出现如下图:

在这里插入图片描述

我这边是已经配好了,若是没配置好的,图中“此证书具有自定信任设置”其实是红色告警,配置,很简单,只要双击图中选中一行,出现如下图:
在这里插入图片描述
打开“信任”一栏,在“加密套接字协议层(SSL)”一栏选择始终信任,关闭保存即可。
2.打开Charles,上方菜单栏 —-》Proxy —-》SSL Proxy Settings —-》Add,如图:
在这里插入图片描述
Host:填*表示所有网站都抓
Port:443
点击OK,就不再乱码了,亲测。

3、 mac环境下使用Charles抓包Https请求:

https://segmentfault.com/a/1190000005070614

需求说明

抓取苹果手机(ios)app里面的https请求包,对数据进行排查。Charles支持针对Https包解析。

操作流程

勾选Enable SSL Proxying,在Location部份选择add,按如下图添加,抓取任意站点、443端口的数据

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
后补充:Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

4、 最新版charles4.0 如何抓包iphone上面的https请求:

http://www.jianshu.com/p/4aba6287fdb8

最近想写个有点自己的想法,想写个能上的了台面的应用。想了很久决定写个天气应用,但是要加一些自己的想法进去。然后我就开始写了,先去找了一圈天气的api,但是有个问题就是现有的一些天气api都没有降水概率这个字段。这还是比较蛋疼的,于是我想到了用抓包的方式,去抓人家的接口下来算了。理所当然的要用charles。好久没有了,而且我以前抓的都是http请求。这次的接口貌似都是https的。还是有点不同的。于是我去谷歌了一下,具体搜到的教程都很古老的了,我找了最近的一篇文章照做了一下但是https请求还是抓不下了。后来又谷歌了很多篇文章把内容结合了起来。总算是可以了。所以这里对这个问题记录一下。

具体的步骤我就不写了 推荐唐巧的这篇博文。图文并茂还是很容易就能够懂的。

http://blog.devtang.com/2015/11/14/charles-introduction/

这里有很重要的一点,你在为手机安装证书的时候你需要去首先点开
“Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”

pic.png
点开以后你可能就能看到类似的图片。你要怎么安装这个证书的。

<1 首先你需要把你手机上连接着的wifi的http代理配置成ip是192.168.1.102 端口是8888(这里的ip 和端口要以你自己点开这个文件所显示的为准)
< 2 你需要用Safari浏览器打开 chls.pro/ssl这个地址。然后你就下一步下一步就好了(这里就是很多以前教程出问题的地方。那些教程都是给了你一个地址让你去打开。但是这个地址需要和你自己实际相关联)

现在你再打开charles。你就可以看到http是请求的内容了。

————————————————————————————————————————

这里相比其他抓包软件来说要简单的多了,具体步骤如下:

1 使手机和电脑在一个局域网内,不一定非要是一个ip段,只要是同一个漏油器下就可以了,比如电脑连接的有线网ip为192.168.16.12,然后手机链接的wifi ip为192.168.1.103,但是这个有线网和无线网的最终都是来自于一个外部ip,这样的话也是可以的。

2 下面说说具体配置,这里电脑端是不用做任何配置的,但是需要把防火墙关掉(这点很重要)!

然后charles设置需要设置下允许接收的ip地址的范围。 设置首先要进入这个位置 Proxy - Access Control Settings 然后如果接收的ip范围是192.168.1.xxx的话,那么就添加并设置成192.168.1.0/24 如果全部范围都接收的话,那么就直接设置成0.0.0.0/0
在这里插入图片描述

然后如果勾选了Proxy - Windows Proxy 的话,那么就会将电脑上的抓包请求也抓取到,如果只抓手机的话,可以将这个设置为不勾选。

3 接下来下面是手机端的配置

首先利用cmd - ipconfig命令查看自己电脑的ip地址

在这里插入图片描述
然后在手机端的wifi代理设置那里去进行相关的配置设置。

这里的代理服务器地址填写为电脑的ip地址,然后端口这里写8888(这个是charles的默认设置),如果自己修改了就写成自己所修改的端口就可以了。

在这里插入图片描述

4 好了,这样就配置完成就大功告成了!下面打开UC浏览器或者其他东西,随便访问个网页看有没有抓取到数据就可以了(我这里是直接访问的新浪新闻首页)。
在这里插入图片描述

0x06 其他常用功能

相信上面介绍的那些你已经学会了吧,下面再说说charles的一些其他常用的功能

选择请求后,右键可以看到一些常用的功能,这里说说Repeat 就是重复发包一次。 然后Advanced Repeat就是重复发包多次,这个功能用来测试短信轰炸漏洞很方便。

在这里插入图片描述

还有比如说修改referer测试CSRF漏洞,修改form内容测试XSS,修改关键的参数测试越权,修改url、form、cookie等信息测试注入等,都非常方便。

好了,这款工具的介绍就到这里了,相信这款方便好用的工具,以后肯定会被更多的人使用到的。

0x07 charles使用问题汇总

Charles是一款很好用的抓包修改工具,但是如果你不是很熟悉这个工具的话,肯定会遇到各种感觉很莫名其妙的状况,这里就来帮你一一解答。

1 为什么下载了不能用啊?打不开啊。

因为charles是需要java环境才能运行的,需要先安装java环境才可以。

2 为什么我用着用着就自动关闭了?大概30分钟就会关闭一次。

因为charles如果没有注册的话,每次打开后就只能哟个30分钟,然后就会自动关闭,所以最好在使用前先按照说明去进行工具的注册操作。

3 为什么我在操作的时候有时候就直接工具就界面卡住死了,关都关不掉,只能用任务管理器才可以关掉?

这个的确是charles这个工具的一个bug,开始用的时候,我也很恶心,而且经常悲剧,但是现在也有相应的解决办法了,下面那样操作就可以了。

首先随便抓些包,要求有图片的请求。

在这里插入图片描述
然后选中一个图片的请求,然后分别点击 Response - Raw 然后那里会加载其中的内容,然后加载完毕后,再去随便操作就可以了,就不会在悲剧的直接工具卡死掉了。。。

在这里插入图片描述

4 为什么用了charles后,我就上不了网页了,但是qq可以。

因为如果charles是非正常状态下关闭的话,那么IE的代理就不会被自动取消,所以会导致这种情况。

解决办法:

第一种:直接打开charles,然后再正常关闭即可。 第二种:去将IE浏览器代理位置的勾选去掉。

在这里插入图片描述

5 为什么我用charles不能抓到socket和https的数据呢?

首先,charles是不支持抓去socket数据的。 然后,如果抓不到https的数据的话,请查看你是不是没有勾选ssl功能。 Proxy - Proxy Settings - SSL 设置

6 为什么我用charles抓取手机APP,什么都是配置正确的,但是却抓不到数据。

首先,请确保电脑的防火墙是关闭状态,这个很重要。

在这里插入图片描述

如果,防火墙关了还是不行,那么请把手机wifi断掉后重新连接,这样一般就可以解决问题了。 如果以上方法还是不行的话,那么请将手机wifi位置的ip地址设置成静态ip,然后重启charles工具。

7 抓包后发现form中有些数据显示是乱码怎么办?

请在Raw模式下查看,Raw模式显示的是原始数据包,一般不会因为编码问题导致显示为乱码。

8 我用charles抓手机app的数据,但是同时也会抓去到电脑端的数据,可以设置吗?

可以,设置位置在Proxy - Windows Proxy ,勾选表示接收电脑的数据抓包,如果只想抓去APP的数据请求,可以不勾选此功能。

9 为什么我用IE可以抓到数据,但是用360或者谷歌浏览器就不行?

请确保360或者谷歌的代码设置中是不是勾选设置的是 使用IE代理。

在这里插入图片描述

10 想要复制粘贴某些数据的话,怎么办,右键没有相应功能啊?

请直接使用Ctrl +C 和 Ctrl+V 即可。

以上就是charles在使用过程中常见的10中问题和相应的解决情况,有了这个文章,大家就不用在遇到问题的时候懊恼了,嘿嘿

5、Charles使用过程中遇到问题:

https://www.cnblogs.com/1-434/p/7871865.html

1、部分APP无法正常请求网络;网页能打开,但是显示的全是HTML代码。

  解决: 我之前设置的端口号是8888, 我改为8899就解决了。
2、手机安装证书,无法打开chls.pro/ssl

  解决: 应该也是端口号问题,更改端口号后,手机技能能通过该网址下载证书了。
3、SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations

在这里插入图片描述
  解决如下:

在这里插入图片描述
在这里插入图片描述
4、You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.
在这里插入图片描述

解决如下:
iPhone系统更新到iOS 10.3后,https的请求都会失败,提示错误信息为Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何问题都没有,并且相关设置都正确:Mac上安装了Charles的根证书,并且设置了始终信任,然后手机上也登录了http://chls.pro/ssl安装了描述文件,一切都按正常程序走的,但是错误始终无法解决.
相关环境:
Charles 4.2
iPhone 7P iOS 11.0.2
原因

设置->通用->描述文件->charles proxy custom root certificate
虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。
解决

设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可.

在这里插入图片描述

上次更新 2019-10-12