新年“无限红包”解密过程
1,本活动发起者为:TonyHe(https://www.ouorz.com),在其博客https://www.ouorz.com/594详细说明了“无限红包”的领取和操作步骤。该红包依托支付宝红包功能,获取红包的口令需要通过四步操作来完成。 2,本文主要用Python语言+在线工具来解决问题
上图为红包的参与须知,明确了参与者和一些参与者需要的技能。那么我们就开始吧~ 我们点击红包入口链接,可以看到返回的时一段Json数据 其中step字段表示此红包口令获取的阶段,piece字段表示红包口令的一部分。本页返回的Json数据似乎并没有更多的信息,那么我们就要进一步挖掘背后的信息。一个网页除了我们直观看到的内容外,从服务器还会返回Response Headers 这部分信息,普遍的查看方法是在浏览器按F12后点击该Json文件查看,结果如下: 获取线索1的代码:
import requests as rq rec = rq.get(‘https://www.ouorz.com/envelope/red.json‘) respHeaders = rec.headers newYear = respHeaders[‘Happy-2020-New-Year’]
图中红框内返回字段明显是下一部分红包口令的线索。乍一看这是一连串二进制代码,每小段二进制代码间使用“_”分割开。我在获取第二步明确的线索时首先想到的是将这一段先转换成十进制。 获取线索2的代码(1):
newYear_s = newYear.split(‘_‘) intTen = [] i = 0 for i in range(len(newYears_s)):
a = int(str(newYears_s[i]),2)
intTen.append(a)
#返回:[117, 101, 101, 46, 109, 101, 47, 99, 82, 99, 85, 119],简单的观察一下,没发现什么有用的线索。
由于我对十进制的数字很敏感,发现这一串数字中的46对应的ASCII码是“.”,索性将所有数字都转换一下。 获取线索2的代码(2):
xianSuo = ‘’ for i in range(len(intTen)):
xianSuo += chr(str(intTen[i]))
print(xianSuo) #返回:uee.me/cRcUw 这是一段短网址,还原网址后是:https://www.ouorz.com/envelope/86d507bae612a1abf99d1b31cf1c65b2.json
访问网址可以得到一段json内容,如下图: 图中口令的第二部分是”新春”,线索是一段base64的字符串,第一反应是将其进行解码: 线索3的获取代码(1):
import base64 as b6 recBase = rq.get(‘https://www.ouorz.com/envelope/86d507bae612a1abf99d1b31cf1c65b2.json‘) recBase_z = recBase.json() recBasejson = recBase_z[‘base64’] base64De = b6.b64decode(recBasejson) print(base64De) #从解码的数据中可以观察出该图片文件为png类型图片
在浏览器内打开base64图片,步骤为:
在浏览器地址栏输入:data:image/png;base64,后面加上 base64未解码的内容
打开后显示为下面这张图片: 图片中有一个网址和一个备注,访问网址后发现无法访问,再结合下面的TXT提示首先进行尝试: 获取线索3的代码(2):
1,首先根据这个图片提示,我把图片下载后缀名改为txt,打开后是乱码,遂本次尝试失败。 2,将下载的png图片后缀改为zip压缩文件,打开失败。 3,由于直接访问发现无法打开网页,也就是该域名没有解析到对应的IP,更明确的说就是该二级域名没有绑定A记录或者CNAME记录。通过先前步骤可以得知,我们获取的内容是“字符串网址”。所以可以尝试查看该域名的txt记录,也刚好符合下面提示的内容。 nslookup -q=txt tony.ouorz.com
从上图得到的piece字段内容是X,并且再后面又两个链接,第一个链接访问为博主和我们开的一个玩笑 我这么有骨气的人怎么可能发送这些内容呢?(我怎么好意思要人家的红包还向人家问呢?),我们接着打开下面提示的网址,是一个火狐的文件分享网页,如下图 把文件下载之后是一个MP3文件,打开听之后是春节序曲,并没有什么异常。查看文件详情如下 从文件的备注可以得到以下信息:
该音频文件来自网易云音乐
备注的163key可能是修改过的
我特地再网易云音乐下载相同的歌曲对比查看不同的163key,如下图 明显看出两个文件的key是不同的,所以从key下手。简单的了解过后得知,163key采用的是AES加密,使用aes-128-ecb 算法加密的,密码是 #14ljk_!\]&0U<’(。遂进行解密,解密过程为:
- 将原密文通过base64解吗为HEX格式
- 将HEX内容通过AES配合密码解密为初始内容
我们将得到的内容格式化一下,可以得到如下图片 从格式化输出的内容来看,并没有得到有效的内容,那么这个线索并非为“通过修改163Key来达到储存线索”的目的。 再返回从音频文件入手,在Au内对比两文件的谱型如下 对比得知两文件似乎在谱型上并没有多大的差别,但是文件大小的确不同,所以文件一定是不同的(此处未验证MD5,因为个人认为没有必要)。后依次查看线索文件的频谱,发现差别就在这里! 至此所有的过程到此结束,所有的字段拼接完成是: 2020新春真快乐 开开心心的去领红包啦~ 写在后面: 本文为新年第一篇文章,写的很仓促,祝贺大家新年快乐,阖家幸福。也很感谢TonyHe的红包~ ——Wicos 2020.1.25