17.5BTC + 15ETH奖金的极客解谜游戏了解一下?

DappReview

2 years ago





《霓虹街区》(Neon District)是一款基于区块链的多人在线RPG游戏,目前开发进度47%,据目前的游戏画面可以感受到该作充满了赛博朋克和技术元素。�
在游戏开发过程中,开发商Blockade Games在Pineapple Fund的资助下同时开发了解谜游戏Pineapple Arcade,其中包含了很多80年代的街机游戏和解谜元素,一方面是给霓虹街区的赛博朋克风格做宣传和预热,另一方面吸引了大量的极客参与解谜,Discord社区非常热闹。
解迷的奖励包括:
奖励分别为10BTC和7.5BTC的两个大谜题(藏在Pineapple Arcade中),一个15ETH的谜题(藏在霓虹街区官网),另外还有若干成就Token奖励以及其他游戏代币奖励。
本次文章中我们将介绍的是奖励15ETH、藏在霓虹街区的解谜小游戏。在今年的1月29日,由霓虹街区CTO cybourgeoisie 于Twitter上正式宣布解谜游戏上线,并配图中有霓虹街区的网站,值得注意的是图中有一个类似终端(Terminal)的窗口
该谜题的最终奖金为15 ETH,在当时价值约11万人民币。
整个谜题的结构大概分成三个关卡:
关卡1:The Terminal
关卡2:The Gateway
关卡3:The Core
最终的奖励储存在twitter里配图的以太坊地址中,同时通过查看这个地址,玩家也可以知道奖励是否已经被成功解谜的人领走。目前在地址0xd64fdefa8dbc540c2582a6fc44b8f88ffb6657ce中,我们仍能看到15ETH的余额,迄今为止还尚未有人成功破解谜题。
今天DappReview来带你看看关卡1和关卡2的解谜攻略 。

关卡1:The Terminal

根据Twitter配图的信息,第一步首先要在官网上找到Terminal(终端)的打开方式,读过我们解谜Fomo3D的小伙伴可能还记得浏览器的开发者工具帮了不少忙,这里同样用F12打开Chrome的开发者工具,查看index.js文件,在这里找到了一段很有意思的代码如下:
这段代码的意思是指,整个网页会监听“keyup”这个事件,当被定义好的按键顺序被触发时,就会调用初始化Terminal的函数。这段按键顺序的ASCII码也就是38, 38, 40, 40, 37, 39, 37, 39, 66, 65,转化成按键:
上 上 下 下 左 右 左 右 B A
是不是很熟悉?没错。这里致敬了Konami的经典游戏秘籍 。
在键盘上按照顺序输入后,Terminal出现啦!
Twitter配图上的Terminal里面输入了whoami以及对应回复,我们也来试一下,结果确实一样。 接着用help来试试看有没有什么其他命令的线索。
大部分是常见Linux命令,其中show这个命令成功引起注意。下面来试试:
在上面的命令中,我们先问终端展示私钥和公钥,除了再一次告诉我们储存15ETH奖励的地址之外没有什么收获,于是抱着尝试的心态问问看有没有什么提示(hint)或者谜语(riddle)之类的。
show hint 给我们的提示是“Find Her, hidden.” - “找到隐藏的她”。
show riddle的提示直译为“《泰晤士报》怎样改变,又怎样不变。告诉我当潘多拉魔盒打开时的讯息”
先沿着hint的提示思考,大家都知道在电脑中有些文件是能直接看到的,有些是隐藏文件,在终端里,ls是显示当前目录下文件的命令,ls -a增加了-a参数后会连隐藏文件也显示。
果不其然,有一个隐藏文件pandora,这里貌似与riddle中的潘多拉魔盒有关系。
open pandora给出了一个链接,是一个存放在AWS上的jpg格式图片,把这串地址复制到浏览器中,会得到这面这张图片:
图片中是否会隐藏了一些线索?对图片做了一些分析之后,似乎没有什么特别可以挖掘的点,一度陷入僵局。回到终端,系统会不会给我们更多的提示呢?
hint的提示改变了 ——
“Command the Sphinx to show you the way.” - “命令Sphinx给你指明道路”。
接着试一下show Sphinx,提示为“Sphinx并不会现身,但它能听从你的命令”
下一步的关键其实就是找到正确的命令方式,回到上面一条riddle的线索中,
“潘多拉魔盒打开”
“《泰晤士报》”
这让人联想到了比特币,2008年中本聪创造的比特币可以理解为打开了加密货币的潘多拉魔盒,在比特币的创世区块中,中本聪在该区块coinbase里留下了一段信息:
这段信息是来自于2009年1月3日英国《泰晤士报》的一段标题,直译为“财政大臣正处于实施第二轮银行紧急援助的边缘”。
这段历史发生在08年全球金融危机的背景下,大量的银行因为次级抵押贷款的滥用受到损失甚至破产,而中本聪在创世区块留下这一段信息可以解读为是“讽刺中心化的金融机构,在经济危机之下,银行失去了信用”。
所以这句话也许就是潘多拉魔盒打开时的信息。
输入这句话后,系统提示“Sphinx很开心,有些东西已发生改变”,再一次尝试show hint,提示我们“重复之前的步骤”,于是再次打开潘多拉,又是一个AWS上的jpg格式图片 。
图片依旧没有什么特殊线索,我们继续找终端要hint。
“Either-or, but not both” 是指XOR运算符,对于二进制每一位执行逻辑异按位或操作,操作的结果是如果某位不同则该位为1,否则该位为0,例子如下:
想到之前我们拿到了两张AWS的图片,他们的名字都是一长串16进制的字符串:
图片1:
1d000c1c011d18110b1c101114011508090405011a090900040511000719161f.jpg
图片2:
7365637265746b657975736564746f72656163687468656c6173746c6576656c.jpg
将这两个字符串先从16进制转化为2进制,进行XOR运算,在转化回16进制,也可以直接用一些在线工具完成(http://xor.pw/#)
新的16进制字符串:
6e656f6e646973747269637470757a7a6c6566696e616c6c6576656c626f7373
仿照之前图片地址链接格式,查看地址:
https://s3.amazonaws.com/neon-district/6e656f6e646973747269637470757a7a6c6566696e616c6c6576656c626f7373.jpg
我们得到了第三张图 :
没错,就是这张貌似什么都没有图片。
这张图与前面两张霓虹街区的角色图片是完全不同的风格,看起来似乎很有深意,背后也许会隐藏了不少的秘密,Discord论坛上很多高端玩家一致认为其中必定藏了一些秘密线索,比提到也许与Steganography有关联, Steganography是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容,一般来说常用的方式是将要隐藏的内容藏在一段音频或者一个图像之中。
steghide是一个可以加密解密这类Steganography的软件,用该软件我们从图片中提取出 steganopayload8614.txt 这样一个文本文件。根据这个游戏的解谜尿性来看,直接打开似乎给不出什么线索,倒不如直接用16进制的文本编辑器HxD打开一探究竟。
打开之后,整个文件按照16字节宽度总共有2310行。其中注意到有大量的FF 3F和00 00反复出现。
根据Discord解谜大神们的线索,这里面藏有了ASCII码艺术的彩蛋,找到彩蛋的方式是:
  1. 把每20组FF3F替换成X,吧每20组0000替换成一个空格
  2. 调整文件的宽度调整成10列
按照以上操作之后整个文件截图,转90度,缩放到你能看到整个文件的全貌后,神奇的ASCII码艺术诞生了 !

缩放的越小,ASCII码艺术中的URL地址越容易读:
http://s3.amazonaws.com/neon-district-easter-egg/gateway.jpg
打开这个AWS上存储的图片,我们进入了下一个阶段。

关卡2:The Gateway

图片上的文字提取出来之后,看起来是一段毫无意义的字符串,这类字符串一般是使用了替换式密码进行了加密,也就是字母进行了平移或者映射。简单的移位密码尝试之后并没有找到有意义的答案,考虑是否是进行了“单表加密”,下面使用工具 :
https://www.guballa.de/substitution-solver
成功的找到了密码表并还原了被加密的字符串。下图中替换方式可以看到,字母p映射成a,l映射成b,以此类推到m映射成z。
将还原后的字符串根据单词做了一下分割,得到以下单词组:
这些单词无法组成有合理解释的英文语句,随便挑选了几个单词,Google了一下,神奇地发现他们都是属于PGP词汇表(即“良好隐私密码法词汇表”,又称生物识别词汇表),这是一个通过声音频道传输字节时使用的词汇表,目的是清晰表达内容。1995年由计算机语言学家帕特里克·尤奥拉和PGP的创造者菲尔·齐默尔曼发明。
https://en.wikipedia.org/wiki/PGP_word_list
单词组中的每一个单词都属于PGP词汇表,并有对应的16进制数,我们将单词转换成对应的16进制。得到:
注:括号中0代表PGP词汇表中的偶数词,1代表奇数词
将这些16进制码转为ASCII码得到如下字符串:
Nw7L00cert--lhf.3uccM1_nO07E3GFH
根据Discord大神们的提示,该字符串还要进一步变化,将字符串分成两部分,上下各16个字符,对调位置得到新的字符串:
3wcLM0_eOt7-3hF.Nu7c01cnr0-ElGfH
最后一步,将每两个相邻的字符再做一次位置调换,即3和w互换,c和L互换,M和0互换,一次类推,最终得到:
w3Lc0Me_tO-7h3.FuNc710nc0rE-GlHf
这是一段leet,又称黑客语,是指一种发源于欧美地区的BBS、线上游戏和黑客社群所使用的文字书写方式。通常是把拉丁字母转变成数字或是特殊符号,例如E写成3、A写成@等。或是将单字写成同音的字母或数字,如to写成2、for写成4等等。
稍微看一下不难读懂这一段就是:
Welcome to the function core. Good Luck Have Fun即:欢迎来到 function Core,祝你好运,玩的开心。
终于要来到最后关卡The Core,怎么拿到第一步的提示呢?
想到之前多次提示里给出了AWS上一个图片地址,姑且把最后的字符串当做文件名尝试一下吧?
http://s3.amazonaws.com/neon-district-easter-egg/w3Lc0Me_tO-7h3.FuNc710nc0rE-GlHf.jpg
复制到浏览器,下面就将看到:
到这里,也就是The Core的第一步提示。
而到现在为止,7个多月过去了,尚未有人真正的完成最后一关The Core的挑战,并拿到15 ETH的奖励。Discord上有一个The Core群,专门给进入最后关卡的极客们进行讨论。
另外一个开头提到的10BTC的解谜游戏,目前也尚未有人成功解谜并提走奖励,各位技术极客们,欢迎挑战!