下载 App

二阶段解密!

修改于2025/11/2223 浏览综合
大家好!这里是newbie工作室!
不知道大家是否在通关我们的游戏时弹出了这样的界面:
TapTap
事实上,这代表着我们的游戏进入了二阶段哦!
接下来是我们亲爱的队长为大家作出的回答:
嗨嗨~ 米娜桑早上好,通关还顺利吗?是否卡在了阶段【Access Denied! Reason: Key file not found】呢?
顺利通关 Stage 2 的小伙伴可以在评论区留下自己的通关感想哦~
作为第二关的设计者和制作者,现在来向大家介绍 Stage 2 的解密方法。
首先我们会发现简介中有着一长串神秘字符串 ciphertext,为:
FRNRDuM9cKM14oMf6vgn0KS9DKOhDtLlEG9zvm2+uZS2avi/6p7R43NwPZNfxpwL6NSFwRWR2VnTE3DnaF2F4pNm4vi6vfDXxjcv6NDPCRxKXn71BLD92m2MFCNCEVSeDfwFuNGWP1SOCvT+FVghkf8eXVc04JiiaVTjwFi0X3xTXVDdv3N0XpO9EV8octD/XtDPvFLoFFrOXmpTXpTMDnSnDoyVDVagatMD2jMl4V9wxTn8xTiDaF9WcVrhrtG5xjn6vVNP6RAgPRO6DpnOwdcJDRcZuCMmcmi1DZBZcnc6BjHgwj2OXLLTX1SokFSJ2TDUrLTKDt0TuViDFtDXDfnJrRwR6mnmuVc6rvw7BCiLxTn8uN7o6d2UkKyNuf8KaNNRFuy9Ffx7B12eCl85u3cJu1iQxFiQEpxvafxruN0OEvwV4fpjBR9JCVA1FRXRvJwgulAgXvn7DfcVXCa1XJcDPRSxa12exvTzEpcVURayzr==
你可能会发现,这不是我们的 Base64 编码吗?然后放到解码网站上一跑,出了一车乱码。如果你仔细看了完赛贴,那么容易发现以下几点提示:
  1. 声音是用来看的
  2. 密钥有 16 位
  3. 大部分答案在宣传片里
delete
你会发现这一帧中藏了一段完整的 python 代码:
charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"
charmap = []
def gen_grid():
ptr = 0
for i in range(8):
row = []
for j in range(8):
row.append(charset[ptr])
ptr = ptr + 1
charmap.append(row)
def swap_row(i, j):
i = i % 8
j = j % 8
charmap[i], charmap[j] = charmap[j], charmap[i]
def swap_col(i, j):
i = i % 8
j = j % 8
for row in charmap:
row[i], row[j] = row[j], row[i]
def print_grid():
for row in charmap:
print("".join(row))
if __name__ == "__main__":
gen_grid()
print("Original Grid:")
print_grid()
key = []
ptr = 0
for item in key:
if (ptr // 8) % 2 == 0:
swap_row(ptr % 8, item)
else:
swap_col(ptr % 8, item)
ptr = ptr + 1
print("Encrypted Grid:")
print_grid()
阅读代码后,发现上述代码对字符集矩阵进行了初等行/列变换。而看向代码的第 34 行左右的位置,会发现一个空着的名为 key 的列表,这个时候我们就需要用到第二个提示了。回到宣传片,会发现在宣传片的最后有着一段电话录音,第二个提示告诉我们密钥有 16 位,那么什么有 16 位呢?欸!就是我们的 8 位身份 ID + 8 位验证密钥。依据 DTMF,在还原管理员所输入的号码后,我们得到了密钥 :3,3,6,5,3,2,0,0,4,7,3,0,1,3,7,6,将它们填到程序中,得到如下字符矩阵:
6479/8+5cadfhegbkilnpmojIGJLNKMHQORTVSUPYWZ1302XAyBDFCEzsqtvxuwr
欸那我们直接将现有矩阵做 gen_grid 代码的逆变换,得到一个新的 charset,在一一对应替换掉简介中的字符,是不是就结束了?并非,因为这里还有一层,这需要我们用上提示
1,一句很抽象的话:【声音是用来看的】。我们仔细听通话录音,会发现有着非常不和谐的滋滋背景声,这启示我们将视频的音频进行提取,放入 Audacity 中,打开频谱图,能够看到如下图象:
delete
(注意,由于每个人提取音频的方式不大一样,可能会导致最终图像会出现细微的差别,不过不影响解密过程)我们能看到字符串:HILBERTCURVE上百度后,能发现,它提示我们一个名为【希尔伯特曲线】的工具,它能够提供一个高纬度空间到
1 维的一个映射,我们对得到的字符矩阵跑一个三阶二维希尔伯特曲线,得到字符集如下:
64ackIGilJLnfd79/he8+5bgojHMKmpNV30SUPX2EzrwuCFxvtBD1TRZWOQYAyqs
容易发现这个和原字符集构成双射关系,找到反映射,代换 ciphertext,得到如下字符串:
U2F2ZSBpdCB0byBmaWxlICJpZC5rZXkiOgpPWDNuS3JNcWhqaEo2bHFRL3FmVERkaFJUR242NGl1OHZlcUNUbEFDbWhaWmZMVzdWaFZLT2VCMlo0YkZpNDNBUTFTOGJsZmRUSFg4L0J5TW1uUGxremtsMGdIbjhhcG1zRUhIMHV1MGZnWHFIME5pOGtydXZqMXZLWUkyUUQ5MDE1ME1BZlJlZy9GZGcxcXBZNzBibGpRV1ltV1hZcUp4dGQrQXgvVzlaWGFLa28xL25aZEl5RndjZ2d3STBDdDh0Z3Y3dldaYzAxRzN5Mkk1M0JyeUJjN1ZKQk1CZXI1SGhZUXZMZmljQ2R2aDlDSGdaQWRoYThkV1ltSFoyanNKeC9FSmtCcFF2US9pUmVoY0NsTitvSHdjS0h6VUh6OEVWcmVQSFI5OWRGbmEzY2pjTG80U2M2WjRxSi8xMWloZmdGMTc0MjdZL2JVc0NsVW1POEdGK2c9PQ==
这个时候进行 Base64 解码,得到:
Save it to file "id.key":OX3nKrMqhjhJ6lqQ/qfTDdhRTGn64iu8veqCTlACmhZZfLW7VhVKOeB2Z4bFi43AQ1S8blfdTHX8/ByMmnPlkzkl0gHn8apmsEHH0uu0fgXqH0Ni8kruvj1vKYI2QD90150MAfReg/Fdg1qpY70bljQWYmWXYqJxtd+Ax/W9ZXaKko1/nZdIyFwcggwI0Ct8tgv7vWZc01G3y2I53BryBc7VJBMBer5HhYQvLficCdvh9CHgZAdha8dWYmHZ2jsJx/EJkBpQvQ/iRehcClN+oHwcKHzUHz8EVrePHR99dFna3cjcLo4Sc6Z4qJ/11ihfgF17427Y/bUsClUmO8GF+g==
然后按照提示操作,保存下方字符串到根目录的 id.key 即可,进入第三阶段!
OK,以上就是我们队长的保姆级教学!接下来等着大家的就是烧脑的第三阶段!newbie工作室期待大家的反馈!
                                                 2025.11.22  20:09
猜你想搜
debug 二阶段解密方法