博彩抢红包游戏逆向(一)协议分析

前言

最近看到一些平台推出了抢红包游戏,根据抢得红包的尾数判断是否中雷,市场上有人推出了透视的软件。我个人觉得这种软件不靠谱,除非1、开奖结果是预先生成。2、开发人员脑抽了把服务端预先生成的数据传给了客户端。
so,为了验证下,我找了个平台,一步一步抽丝剥茧,看看抢红包游戏到底是什么样子的吧。

1.1 工具的使用

工具一:Chrome开发者工具
Chrome开发者工具用处很大,对于web分析来说,主要有以下用处:
1、查看页面元素: 对于表单提交特别有用,可以直接看到表单中所提交的kv数据,是对应了什么字段
2、断点JS: 很多前端在与服务器通信时,都进行了加密、签名操作,在本次逆向过程中,就遇到了AES加密及签名校验的情况。通过对JS打断点,可以找到核心加密代码,从而**加密功能。
3、抓包: 可以分类查看xhr请求、表单请求、Websocket请求,很方便,但是没有重放请求的功能,这一点没有Firefox好。
4、存储查看 可以查看Cookie、Session等信息,主要是看存储的用户token

工具二:Fiddler
Fiddler老牌工具了,主要是用来抓包,跟Chrome的抓包相比,更具有针对性,而且可以直接重放请求,可以配合着使用。

工具三:Postman
Google的又一优质产品,开发人员必备。用于构造请求。在逆向中可以快速的测试请求的协议分析是否正确,验证正确后再进行开发,省去了很多时间。

1.2 协议分析

上文介绍了不少工具,现在就牛刀小试一下,分析一下协议。
这次找的网站是一个有红包游戏的网站,随便找的,下图是网站界面:
博彩抢红包游戏逆向(一)协议分析
现在,开始第一步,打开chrome的调试,重新加载页面,咱们先看一下协议
博彩抢红包游戏逆向(一)协议分析
博彩抢红包游戏逆向(一)协议分析
切换到xhr可以看到不少http请求的协议,根据名字其实可以理解到一些请求的作用,比如加入房间,获取房间列表等。
点开协议可以看到,协议中请求和返回都是有加密的。目前先不管加密,我们先把请求理清楚。
根据字面及操作过程,我们可以明白http请求的作用

请求url 作用
lottery-hb-api/hbRoom/queryHbRoomList 获取房间列表
lottery-hb-api/hbRoom/queryHbRoomByRoomId 根据ID获取房间详情
lottery-hb-api/hbSnatchRecord/snatchHb 领红包
lottery-hb-api/hbSendRecord/addHbSendRecord 发红包

梳理完了发现,红包发出的通知,以及红包的详细信息,在http通信中并没有看到。因为http是短连接,对于这种交互比较频繁的,主要有两种办法,一种是通过http轮询的方式,一种是websocket的方式。
因此我们切换到websocket上面,捕捉一下。
博彩抢红包游戏逆向(一)协议分析
oh,看到了,果然有websocket,而且还是通过websocket实现了MQTT协议。
这样整体就理清楚了,抢红包游戏,所有的进出房间、发红包抢红包,是通过http协议。红包发出消息、被抢到的消息,是通过MQTT订阅得到的。
下一章,我们就开始分析这个MQTT协议。