最近跳一跳游戏真是风靡了整个朋(I)友(T)圈,身边有不少小伙伴尝试了各类语言写跳一跳的脚本,而我因为比较懒,因此只尝试py版本的脚本实验,而后又研究了一下POST直接提交分数的过程,在这个过程当中,对抓包这件事儿产生了浓厚的兴趣。前端
首先说说本身的抓包把,前端攻城狮一枚,因此采用的代理工具是阿里的 AnyProxynode
主要特性包括:npm
基于Node.js,开放二次开发能力,容许自定义请求处理逻辑
支持Https的解析
提供GUI界面,用以观察请求小程序
这里简单描述一下如何使用anyproxy抓取https的包vim
1. npm install -g anyproxy
2. anyproxy-ca // 生成https ca证书
3. 手机下载生成的本地ca证书并添加信任(IOS须要使用Safari打开下载证书的地址)
4. anyproxy -i 启动AnyProxy并解析全部https的服务
复制代码
具体细节这里就不拓展开了,百度能找到不少资料。 而后因为放在本地代理抓包每次都要从新启动AnyProxy而且须要保证和电脑在同一个局域网下很是麻烦,因此我将AnyProxy部署到了服务器上。 服务器上的部署和本地没什么区别,无非就是须要使用pm2去管理一下AnyProxy安全
pm2 start anyproxy -x -- -i [这里能够加上anyproxy其余的参数,好比端口相关]
复制代码
这里有一个问题就是,AnyProxy有一个Web GUI能够看到抓取的包,可是没有任何认证,因此任何人均可以登陆这个界面看到使用这个代理的包信息,这是一件很是不安全的事情,因此若是放在服务端仍是对AnyProxy作一下二次开发比较好。bash
简单介绍一下这个游戏:
一款单机类的游戏,能够根据离线时间获取离线收益。(够简单吧...)服务器
其实没啥好分析,由于获取离线收益的包一眼就能发现,因为是一款单机游戏,那么与服务器进行交互的就比较少,因此一眼就能发现这样的一个请求。网络
这种请求比较容易伪造,不须要身份验证,没有加密数据,须要完成的就是伪造host而后转发一个虚假的时间戳。工具
最简单的方式:
1. vim /etc/hosts // 打开hosts文件
2. 在最后一行加入 服务器IP 指向域名
复制代码
www.hko.gov.hk
的话必然会先解析到本地的
host
,而后跳转到服务器启动的
Server
因此这时候我选择用node起一个Simple Server
, GET
请求的地址即是上图的/cgi-bin/gts/time5a.pr
,简单的server以下
const server = require('server')
const { get } = server.router
server({ post: 80 }, {
get('/cgi-bin/gts/time5a.pr', ctx => '0x191234567890')
})
复制代码
这里偷懒了,用了一个第三方的库快速生成一个Simple Server
,没用使用http来createServer,而且直接使用了80端口。若是80端口被占用的话能够考虑使用结合Nginx处理。
好了一切准备就绪,来看一下最终的成果吧。
这只是一个很简单的实践,在作这个实践以前还有一个大胆的想法。在跳一跳火的同时,发现口令红包莫名火了起来,这时候就思量着如何可以提取口令红包的数据而后伪造呢(坏笑ing...) 思路大概这样
唔...显然我是失败了,否则我如今就躲在后面闷声发大财了...应该不违法把各位亲,毕竟我抢的是红包呀~~不过有兴趣的人能够再尝试尝试,若是能捕获到全部的红包...那收入仍是有些可怕的...
总的来讲这个过程是比较轻松Esay的,但贵在思考和探索的过程,经过也从一个方面给我这个前端攻城狮打响了警钟,原来抓包伪造是一件如此可怕的事情,对于网络安全的防范须要特别的注意才行,否则轻则诸如这个小游戏,重则涉及资金相关的,这可不是闹着玩的。