纯原创,思路也是本人花了半个小时整理出来的,整个完成花费了本人半天时间,由于不才刚大学毕业,所以有的编码方面可能不入大牛们的眼,敬请原谅!如有转载请附上本地址,谢谢!
最近微信朋友圈刚刚被跳一跳血洗,新一轮的头脑王者又是给了我们一场风暴,之前的跳一跳外挂同事们也很满意(需要的评论),所以同事们这次又来坑我,看我没事做,让我制作一个头脑王者的外挂,我当时就在想这还不简单吗,直接获取分析发送过来的数据包,在伪造response给它好了啊,但是坑比的同事说这种挂已经被抓的很厉害了,机智的我只能换一种方式,一种又蠢又累的方式,但是却很安全!!!
首先,还是老套路,先抓取手机数据包,这里就以本人的ios11.2.2为例,安卓基本一样。
抓取数据包的工具Charles,大家最好下载最新的4.2.1,附上地址 https://www.charlesproxy.com/download/大家下载安装即可。
然后打开charles界面大家就会看见这样的界面!!
1.这时我们先将这个放一边,设置手机代理(设置代理的意义大概就是手机所获取和发送的数据包就会经过代理的服务器或者是硬件),我们将电脑设置为手机的代理,那么我们手机的数据包都能够被我们的电脑所捕获到。这里我们通过wifi进行代理。
(1)手机连上电脑的wifi
(2)进入wifi点击配置代理——>手动。服务器就是电脑的ip地址,端口号一般都是8888.
(3)这里配置好你就能在左边看到手机的数据包了,(不能看见的查看以上步骤),但是你会发现关于https的数据包基本都是unknown的,那是为什么呢,其实百度一下,你就能知道,https其实是加密的,较之http会更加安全,我去!这么坑啊,还加密,那我怎么看手机上的https数据包啊,现在大多数据包都是利用的https协议的啊,别急,这时候我们只要在手机端安装安全证书,被服务器识别出我们是安全的,那就没事啦!
(4)手机端安装安全证书,点击Help,选择SSL Proxying,再点击Install charles root cerfiticate on a mobile sevice....这个选项,会弹出一个提示框
这是什么意思呢,他就是再说"你要先确保手机连上了设备,也就是电脑,再去chls.pro/ssl"网站dowload安装安全证书,天哪!这个提示太开心了吧,这简直是帮你做好了一切,还等什么,赶快用safari浏览器,(安卓任意浏览器),输入chls.pro/ssl,他会提示你安装一个东西,直接下一步,确定之类的一顿操作,安装完毕就行了,最后安装好在ios上是这样的
这时!如果你已经开始洋洋得意,觉得自己已经完成的时候,你会发现,其实你还是没有获取到数据包,哈哈哈哈哈!这时因为自从ios10.3开始你还要多一步设置,那就是!!下图所示,你需要打开设置,通用,关于本机,滑到最下面,有一个证书信任设置,打开我们的charles证书的信任即可
(5)最后一步,设置ssl的数据包的过滤,打开charles,点击proxy,选择proxy setting,勾选上enable transparent http proxying ,端口号8888
再选择SSL proxy setting 勾选enable SSL Proxying 并且add我们的过滤器,这边我们所有的数据包都想捕获,所以host和port都填写*号
(这一步我建议一上来就完成,因为其实我也忘了,这一步我是啥时候完成的QAQ,嘻嘻,别打我)
(6)最后如果也想捕捉电脑的https数据包的话,就也要在电脑安装安全证书,步骤就是点击Help——>SSL proxying——>选择Install charles root cerfiticate
直接安装证书,下一步下一步下一步。。。。
只有在下图的时候注意选择安装位置是受信任的什么证书颁发机构的,就行了。。。
以上就是配置charles获取https协议的数据包的全过程,有问题的小朋友可以评论或者私我啊,(虽然私了我也不怎么看,虽然我也不知道博客园有没有私信的功能!!!)
2.如果以上完成的小童鞋,恭喜你,我们进入到了第二个步骤!就是利用之来制作头脑王者的答题辅助了,我们的思路也很简单,获取到头脑王者发送给我们的数据包,从而保存到本地,进一下利用代码读取本地数据,解析,保存到数据库,完成持久化,之后遇到相同的题目就查询,数据库没有的话就进行保存。
当然在做这些之前,我们得考虑一个问题,怎么用我们的所使用的的编程语言拿到charles的数据?虽然charles的用java做的但是我好像也没有找到某个接口,可以跟java实现数据的共通,那我们怎么把数据存到本地呢???
(1)分析我们的头脑王者的是哪个https发送过来的数据包。手机打开头脑王者就能容易发现到每次答题都会给我们发送一个findQuiz的数据包,每次答题完都会给我们一个choose数据包,就是这题的结果
我们所需要的也就是这两个数据包
(2)建立镜像。每次获取到的数据包,都会讲数据发送到镜像文件里,会把前一次的覆盖,具体操作选择tools,点击mirror。我的配置如下,你们可以自己改动
获取数据包的时候就能在我们choose save to 的文件夹位置就能看到这两个文件了
(3)接下来还要我教你们吗????哈哈哈数据都能搞到了还不while(true)去获取每次的题目和答案吗????建立用线程做去数据库检索的动作,不然while(true)里面出问题了出现堵塞可别怪我没提醒你哦。
本人用java和c#都做了一遍,效果基本一样的,只是java的稍微卡点。基本效果就是手机上面题目还没有出来,而电脑上已经获取到数据包并且显示题目了。
(4)获取到题目就去数据库里面检索一遍,如果有就取出答案,如果没有就保存进数据库,并且在每道题答完的时候去取出choose文件的正确答案进行存储。
最后的大致效果就是这样的!!
由于刚开始题目基本都要自己搜集,偶尔才有这样的数据库有的问题他就显示答案啦QAQ,速度基本就是手机上题目还没出来,电脑上的题目已经显示了。好了打字好累了,大家再见QAQ,c#源码地址 http://download.csdn.net/download/china_zhangdapao/10213948
在公司打的字,整个制作过程半天,写这篇文章30分钟, 可能比较粗糙,程序也就是考虑了基本的异常,大家多多关照,文章中肯定有好多错别字,毕竟我是错别字大王,大家将就看看嘻嘻嘻