背景
2020 年春节学着制作了第一个支付宝口令红包解密游戏,制作该红包是参考了这样几位 dalao 的历史记录:
- https://flyhigher.top/develop/1519.html
- https://i.urox.cn/2020-01-18-rat-year-red-packet.html
- https://soha.moe/post/find-soha-red-packet-2019.html
dalao 们的一波操作我人都傻了...是我没学过的密码学计算机科学滑稽学!(其实啥都没学)
模仿着做了一个出来,那么,还是来解析一下吧!
解密
Step 1/4
首先获得该口令需要从这个网址开始→https://www.ouorz.com/envelope/red.json 这是一个 json 文件,点开得到第一个 piece 「2020」。
↑ 链接内容已格式化后,这里 json 自动格式化是使用了浏览器插件 FeHelper(https://github.com/zxlie/FeHelper)
提示中提到使用了 HTTP 协议,这时候你就会想(根本不会啊啊啊) HTTP 这东西不是网络协议吗,网络协议当然就存在客户端服务端呀(谁知道啊),那客户端服务端之间通讯不就是数据的交换吗(你在说啥啊),那暗藏的内容当然就在这些信息里啦(...)。想到这儿你当然就会打开浏览器开发者工具来看看 Network 记录都暗藏着哪些好玩的东西吧...那么,就开了
↑ Edge 浏览器(新版基于 Chromium) 开发者工具 Network 记录
在访问该页面时服务端向客户端返回的 HTTP 头包含着一个神奇的字段 happy-2020-new-year,记录着一串神奇的编码。
在服务端配置发送自定义的 HTTP Header 需要进行如下配置,以 Nginx 为例。在 <vhost>.conf 里加入如下代码:
server {
listen 443 ssl http2; //这里拿 https 端口举例
location ~ /red.json { //这里只在 red.json 页面发送该头信息
add_header Happy-2020-New-Year "01110101_01100101_01100101_00101110_01101101_01100101_00101111_01100011_01010010_01100011_01010101_01110111";
}
}
即可在访问 /red.json 时向客户端发送自定义头部信息了。
那么继续,之后我们得到的这个只存在 0 和 1 (可能还有_)的字符串。参照 json 文件给出的另一个提示,该字符串很有可能采用的是 ISO/IEC 646 标准,百度一下(我也是这么知道的)能知道这个标准其实就是 ASCII 字符编码。对照 ASCII 字符表(http://c.biancheng.net/c/ascii/),将二进制转换字符得到网址 http://uee.me/cRcUw 访问即进入第二步操作。
Step 2/4
第二步首先得到第二个 piece 「新春」和一串根据提示是经过 base64 编码的字符串
↑ 链接内容已格式化后
首先看到 base64 编码,即可选择使用在线解码工具快捷解一下码。但解码出来(应该)是更看不懂的乱码,于是就注意到了这字符串的长度太长了长的有些不对劲(又开始了)。这时观察到很多(大型)网站,比如小半(https://www.zeo.im)在需要上传图片进行预览时图片自本地选择后无需上传到服务端就能在浏览器展现(省略了一次额外的 HTTP 请求,节省资源),右键查看图片链接就会发现其实该图片只是一个 base64 字符串。Base64 它能编码图片数据,于是你就会下意识地复制这串编码到在线 base64 转图片的工具(https://oktools.net/image2base64)中查看隐情...
不难得到这样一幅图片:
Step 3/4
根据图片中的提示访问链接→ https://tony.ouorz.com 但是无法访问,甚至无法找到 ip 地址,也就是不是啥可以直接看到的东西。于是你习惯性地打开终端,输入命令:
dig tony.ouorz.com TXT
或者使用在线 nslookup 工具(http://www.jsons.cn/nslookup/),输入网址查询到了一条神奇的 TXT 记录:
这条记录非常顽皮的给出了第三个 piece「未知量 X」
Step 4/4
一共有 3 中方法解出第四部,第一种也太没节操了!
第一种
进入链接后发现了事情不对...
↑ 链接内容已格式化后
鉴于这玩意儿太没节操了(我当然截了图啊哈哈哈..咳咳..),还是选择第二种方法吧...
第二种
↑ 链接内容已格式化后
提示中获得第四个 piece「快乐」,至此所有 piece 组合为「2020新春X快乐」
提示中链接引导下载了一个 mp3 音频文件,这...这难道...就是...春节序曲...
当然你单纯听完这美妙的 4 分 55 秒音乐自然是不会得到任何关于红包的线索的...
这时需要结合红包须知里给出的「一个设计软件」的提示,下载/使用 Adobe Audition 软件,导入音频...能隐藏信息的地方除了 mp3 文件的 ID3 信息中,也可以在频谱中藏下可视化的信息:
至此所有的 piece 就都解出来啦,输入口令「2020新春真快乐」即可领取百元大红包(的一点点)
第三种
第三种方法是最简单(滑稽)的,在红包文章最后一句话中隐藏着一个白色的句子...
就是这样啦,感谢各位 dalao 和路人的参与与尝试,可能占用了他们一些/很多时间在此道歉了!
后记
祝各位 dalao 新年快乐,2020 年继续一起加油!