CoolShell的解迷游戏

Rykka at 2014/08/13

本文地址:http://rykka.me/coolshell_game.html

看了 依云同学的Blog , 才后知后觉的发现 CoolShell的 解谜游戏

虽然Top 100结束了,但是本着 重在参与,顺便吐槽 的奥林匹亚精神, 果断进行了一次尝试。

  1. first

    My brain has been f*cked

    好吧,第一题就这么重口味。

实际上,有一门BrainF*ck语言。 Google 一个在线编译器, 运行即可。

得到下一关入口

  1. 42

    What is the meaning of life, the universe and everything?

看过「银河英雄传说」的人。 不对,是「银河系漫游指南」的人都知道,应该是42。

2, 3, 6, 18, 108, ?

这是一个数列,观察可知, 2*3 =6, 3*6=18, 6*18=108, 则下一个应该是18*108=1944

两个数字相乘得到下一关入口

  1. Keyboard

    一个键盘,一堆乱码?

    难道说这就是传说中的用脸滚键盘得出的乱码??

    好吧,这个键盘是Dvorak键盘布局, 传说能让输入快得导致键盘崩溃的神器。

本题的意思是用你的键盘模拟这个键盘布局来输入这堆乱码。

用python的 maketrans函数将对应的字符进行转换:

输入得到一个c源码。

再次编译运行。

得到下一关入口

  1. QR_CODE

    一个二维码,一堆乱码?

    用脸滚键盘已经不够了,难道我们还得用眼神来输入二维码??

好吧,用二维码工具扫码得出:

[abcdefghijklmnopqrstuvwxyz] <=> [pvwdgazxubqfsnrhocitlkeymj]

再次用 maketrans 转换次。

import string
s = 'Wxgcg txgcg ui p ixgff, txgcg ui p epm. I gyhgwt mrl lig txg ixgff wrsspnd tr irfkg txui hcrvfgs, nre, hfgpig tcm liunz txg crt13 ra "ixgff" t r gntgc ngyt fgkgf.'
print s.translate( string.maketrans('abcdefghijklmnopqrstuvwxyz',
            'pvwdgazxubqfsnrhocitlkeymj'))
print s.translate( string.maketrans( 'pvwdgazxubqfsnrhocitlkeymj',
            'abcdefghijklmnopqrstuvwxyz'))

得到提示:

'Where there is a shell, there is a way. I expect you use the shell command to solve this problem, now, please try using the rot13 of "shell" to enter next level.'

好吧,还要再转换一次,rot13,vim中使用'g??'即可。

  1. Palindrome

    我去,一只说日文的猫。 这是要闹哪样?

    The answer has been lost in the source

    意思是我们要看源码吗? 好样的,偷看别人源码是前端必备技能啊。

搜索标题可知,Palindrome的意思是回文,

看图片左边, 'cat' 3个字符隐藏在回文组合中。 那么就是说我们要在源码中找到相应的回文组合。

打开源码,看到一大堆乱码。

考验正则知识的时候到来了~

首先把没有匹配 abXba 的正则都删了:

:g!/\v(.)(.)(.)\2\1/del

还是有很多啊,观察下回文, 发现对大小写和字母数字有要求, 必须是 A0a0A 或者 0Aa0A的组合。

得出新匹配,(这里要注意 不管前面是否匹配,后边的匹配的括号数字依次增加):

:g!/\v([A-Z])([0-9])[a-z]\2\1|([0-9])([A-Z])[a-z]\4\3/del

好吧少多了,但是还是看不清,咋办?

好吧,只能用grep了:

:%!grep -oP '(.)(.)(.)\2\1'

得出下一关

  1. Persistence

    Keep going, you will find the result...

    这是告诉我们要坚持到底吗?

点击图片,发现链接到一个网址,并给出一个数字。

再替换这个数字到地址栏,发现又得到一个数字。

看来只能发挥奥林匹亚精神, 一个一个手动输入替换了~(大误!)

用 Shell脚本即可(依云同学的)。

n = 2014
while true; do n=$(curl -sS http://fun.coolshell.cn/n/$n); echo $n; done

最后得到一个下一关的地址。

  1. tree

    Binary Tree

    好吧,一棵树,一颗长得不一般的树。

给出中序和后序遍历的顺序,要求还原这棵树,密码就是树上最长的那段。

研究了下,google了下。 休息了下,最后又回来了。

最后发现还是得自己画出最长的数枝:

z, W, p, 8, L, G, n, 0, 1, w, x, J, 7

用提示的openssl方法解密,得知下一关。

  1. nqueen

    However, we have a 9-Queens problem...

    好吧,N皇后问题。

看来是要找到一个8皇后的解,这个解会匹配sha1得到一个字符串。

这个暂时想不到怎么解决,看来又是google的节奏了。

http://en.wikipedia.org/wiki/Eight_queens_puzzle

偷偷看其他人的答案,得到下一关入口

  1. Excel

    Excel什么的我最熟悉了。

可惜这题只是借用了Excel的Column Number的形式。 其实是个26进制的换算。

将两个字符串转换为10进制后计算。

得到一个页面告诉我们再转成26进制,即是下一关。

  1. Fraternal

    Fraternal Organisation

    pigeon freemason

    共济会,猪圈, 它们有什么联系??

    难道暗示这是一个肮脏的阴谋??

好吧,Google之,发现这是共济会的猪圈密码。

下面的文字转化后得到下一关。

  1. final

    Congratulations!

    看来终于结束了。不过奖品什么的我是赶不上了,

    不过没有关系, 参与第二 吐槽第一 嘛~

总的来说,题目难度前面几个还是比较简单,后面几个则难度较高了。

如果没有Google的话,基本不可能解决。

所以这个游戏的口号其实是:

如果没有Google, 世界将会怎样??

对吗??

好吧,就这样~

本文完