捕鱼大作战协议解密
协/议/流/量/解/密
分析捕鱼大作战这款游戏流量的加密方式及解密方法。
序
捕鱼大作战是tuyoo公司在很多年前上线的一款休闲游戏,对,就是那个之前本号批斗过的途游,这款游戏以海洋深处作为背景,玩家通过在海底施展各种捕鱼技巧,猎得丰富多彩的鱼类 。最近貌似很火,玩的人很多。
本
毫无疑问,捕鱼大作战作为tuyoo的产品,协议的套路是一样的,数据是加密的。它在整体上,加密仍然是分成两个部分,一个是HTTP承载的加密数据,一个是TCP长连接承载的加密数据。这个加密逻辑和方法之前已有分析,可参考文末之前分析其它游戏的相关连接。
短连接
短链接是粗糙的HTTP,里面连user agent都没有。
GET /open/v6/user/deviceAccountExistCheck?appId=10010&deviceId=386160xxx6f9436f3&clientId=Android_5.280_tyGuest,tyAccount.weixinPay,alipay,yinlian,jingdong.0-hall28.zhibo.fish3d&phoneType=&deviceName=Pixel%201&mac=5ZsNW558xxxk%2BjKu67Y6yZHB44%2BPIsDAxFMHhY37W3HyGgilLEwIbge4biJ6Klnw%3D%3D&imei=AAc/ir5454%2B54xickIaPcdaWGUrd1FFypjBFttXiIyZhHbdThTKwKCyUxA%2BKMZcXZxLblyojicaZFQ%3D%3D&imsi=&androidId=C0GWv444444WJg1HgzBpt1OFMrAoLJTED4oxlxdnEtuXKiOJxpkV&iccid=&BIParams={%22original_deviceid%22:%22130b7c5dbbb7997e1118897996f8e0bf%22,%22oaid%22:%22%22,%22google_id%22:%221a129cda-87bf-4c23-bd63-544563e341c1%22}&adTraceNamespace=3dbuyu10010&adTraceAid=2&oaid=&extraParams={}&original_deviceid=130b7c5dbbxxxxxe1118897996f8e0bf&code=B0A664507E4FEDBFE9722AE6A65FF3D1 HTTP/1.1
User-Agent:
Host: open-fish3d.tuyoo.com
Connection: Keep-Alive
Accept-Encoding: gzip
这个HTTP唯一的看点是url内的code需要计算,计算方法也很简单,首先对url参数进行排序,然后进行拼接,形成字符串,当然,拼接过程中会加盐,否则就没有意义了,接着,对字符串进行des ecb加密,加密结果进行base64编码,编码结果取MD5,基本上途游的游戏,都是这几种加密和哈希算法。其python实现代码大约如下(盐和密钥被马赛克了):
keys=sorted(params.keys())
paramsstr=''
for a in keys:
if paramsstr!='':
paramsstr=paramsstr+'&'+a+'='+params[a]
else:
paramsstr = 'xxxx'+ a + '=' + params[a]
paramsstr=paramsstr+'yyyy'
datastr=paramsstr.encode()
endata=desecbEncrypt(datastr,b'zzzzz')
bdata=base64.b64encode(endata)
code=GetMd5(bdata.decode()).upper()
如有需要,实现过程中可参考。如需密钥,找我(公众号:协议分析与还原)。
长连接
和途游的其它游戏一样,长连接一直存在,实现也完全相同,本来不想写,但很多人都不会玩长连接,所以这里还是要提下。
长连接不方便抓包,需要注意,捕鱼大作战使用的端口是9013,它的长连接也是加密的,异或加密,加密的密钥在最开始传输,之后的解密依赖于密钥。长连接的内容类似下面:
具体的解密代码,这里不重复了,可以参考文末列的之前的文章。如果要模拟长连接,建立连接后按算法来加密和解密就可以了。
跋
这款游戏的加解密,还算简单,我最喜欢简单的算法了,我相信大家也喜欢。
小提醒
解密协议有困难,找我(协议分析与还原),准没错,有些应用的协议,就该多解密。
END
往期回顾
途游斗地主加密协议分析及破解
奥迪棋牌协议破解分析与揭秘