Crypto 九层妖塔 —— 一道内含 24 种编码及加密算法的巨无霸套娃式密码题

九层妖塔

 

 

一层:腐木基座隐塔身
二层:幽曲木栅落凡尘
三层:普莱菲尔封凯撒
四层:道法挪移镇邪煞
五层:半盲道人荡图灵
六层:圣堂武士震四方
七层:九转方棋威五堂
八层:梵音回响摄心神
九层:九曲轮回链生死
阵启:万古佛法通古今
破封:六十四卦补阴阳

0x00前言

之前特别喜欢论坛上的一道名为“”的逆向题,校赛中要出一道密码题,故突发奇想,花了一天半的时间,整了这么一道密码学的九层妖塔,虽然没有密码学的灵魂 RSA,但也添加了一些故事性的描述,力图增加一些趣味性,同时涉及到了总计 24 种编码及加密算法,希望可以更好地了解密码学这个充满魅力的体系。(注:最后解出的 WP 为旧文档)

 

补充:本来想投稿到论坛的题库中,结果发现自己这题目是个“巨无霸套娃”,实际上没什么技术含量,还请大佬轻喷,适合有耐心的入门小伙伴了解密码学,所以作为小妖(me)的新人贴吧。

0x01设计大纲

腐木基座隐塔身:base编码、列位移密码(密钥)、曲路密码(路径)
幽曲木栅落凡尘:栅栏密码(W型)、曲路密码
普莱菲尔封凯撒:普莱菲尔密码、凯撒密码、四方密码(两段密钥)
道法挪移镇邪煞:列移位密码、六十四卦图(密钥)、盲文(密钥)
半盲道人荡图灵:盲文、brainfuck、仿射密码(密钥)
圣堂武士震四方:猪圈密码变种、四方密码、波利比奥斯方阵密码(密钥)、维吉尼亚密码(密钥)
九转方棋威五堂:波利比奥斯方阵密码、维吉尼亚密码(威)、仿射密码(密钥)
梵音回响摄心神:敲击码、仿射密码、摩尔斯密码、夏多密码(密钥)
九曲轮回链生死:夏多密码、六十四卦图(文件)
万古佛法通古今:与佛论禅、新约佛论禅
六十四卦补阴阳:六十四卦密码、二进制转字符、ASCII编码

0x02详细思路

故事带入,某某无意间找到一个“精美的盒子”,但是这个盒子外面加了一道四个数字的密码锁,但是作为神偷,他很轻松地用工具解开了(这里涉及到压缩包爆破,有隐写的嫌疑……咳咳,不过也仅此一处,后面的爆破几乎很难……)

 

然后发现一张“藏宝图”,封面是一个有些散架的,散发着淡淡幽蓝色彩的,呃……大写“B”?
翻开里面,掉出一张枯黄的草纸,捡起来,开始阅读:

 

“传说东方有一座九层妖塔,里面有着富可敌国的宝藏,若想得到,需要解开层层密码,突破迷雾与阻碍……”

 

然后下面是一堆(什么鬼)……

R00zRE9PQlRHWVpVSVJLR0lKQlRRT0JUR0ZDVU1RU0RIQkJUR05TRklaQkVHT0JaSVZERUVRWllIQVpUTVJLR0lKQlRRUVpUR1pDVU1RU0RIQTRVS1JTQ0lNNERRTVpXSVZERUVRWllJTVpUSVJLR0lKQlRRT0tGSVpCRUdPQllHTVlVS1JTQ0lNNEVHTVpVSVZERUVRWllIRkNVTVFTREhBNERHTUtGSVpCRUdPQ0RHTVpFS1JTQ0lNNERTUktHSUpCVFFPQlRHWkNVTVFTREhCQlRHTVNGSVpCRUdPQlpJVkRFRVFaWUhBWlRNUktHSUpCVFFRWlRHRkNVTVFTREhBNFVLUlNDSU00RFFNWlJJVkRFRVFaWUlNWlRDUktHSUpCVFFPS0ZJWkJFR09CWUdNWVVLUlNDSU00RUdNWlRJVkRFRVFaWUhGQ1VNUVNESEE0REdOU0ZJWkJFR09DREdNWlVLUlNDSU00RFNSS0dJSkJUUU9CVEdaQ1VNUVNESEJCVEdOS0ZJWkJFR09CWklWREVFUVpZSEFaVENSS0dJSkJUUVFaVEdWQ1VNUVNESEE0UT09PT0K

由“基座”联想到 base 编码,最后确定依次进行 base64、base32、base16

 

得出一堆信息,继续分析……

 

“隐塔身”可能暗示隐藏着某些信息,通过上面的解密得到以下信息:

6x6=(1,6)(6,6)(6,4)(1,4)(1,2)(6,2)(6,1)(1,1)(1,3)(6,3)(6,5)(1,5)

但是似乎还不够,我们没有找到下一层的方法,再看看那张图,发现下面有一些空白,反白一下,又发现了一些信息:(上面的数字似乎缺了一些,还有个字母 l,之后回忆起正是对应上文的加密 base64、base32、base16)

6  32 l
TmluZSBsYXllciBkZW1vbiB0b3dlcg==
TG9zdCBjb21wYXNz

base64解出如下:

Nine layer demon tower
Lost compass

发现 Nine layer demon tower (九层妖塔)这个似乎才是真正的入场券,至于其他信息先留着,也许之后有用,现在成功进入了第二层……

 

由“木栅”首先联想到栅栏密码,这里难度升级为 W 型栅栏,注释中有一个 4,猜测为四栏:

naitnclesdpplwalpigostautgddehcioean

栅栏密码(W型)在线解密
http://www.atoolbox.net/Tool.php?Id=777
得到:

nlgcoeassitdipaouptltegwnadadlcpenhi

虽然现在还是乱码,但是不要急,接着由“幽曲”再次联想到曲路密码,结合第一层得到的“曲径通幽处”,猜测为曲路密码的路径,即:

6x6=(1,6)(6,6)(6,4)(1,4)(1,2)(6,2)(6,1)(1,1)(1,3)(6,3)(6,5)(1,5)

绘制 6x6 表格,按照路径依次填入

w i n d i n
g p a t h l
e a d i n g
t o a s e c
l u d s p o
t p l a c e
 

整理得到:(Hit:曲径通幽处)

winding path leading to a seclud spot place

解压成功,进入第三层

 

这层很明显可以想到普莱菲尔密码、凯撒密码,接着用上层最后得到的密钥打开压缩包,注意到注释中写着:

“菲尔的钥匙: rtkhyfbveapxnwuolgmcdzqsi ”

接着看到:

VUIRCPFTXYWI

尝试普莱菲尔密码,加上注释中“菲尔的钥匙”,进行在线解密
http://www.practicalcryptography.com/ciphers/classical-era/playfair/
得到:(吾儿,亦有汝焉?)

ANDYOUBRUTUS

解出来发现不能打开“凯撒之言”,结合题目GG查一下,发现这是一句拉丁语名言,即

Et tu, Brute?

接着尝试一下这句话,成功打开“凯撒之言”,发现了三个单词样式的字符串,基本确定为凯撒加密:

mywolcns,jlyzcf,jliwymm

在线解密后
https://planetcalc.com/1434/
确定偏移量均为 ROT20,得到:

security,prefil,process

测试后,发现 process 为进入下一层的压缩包密码,但是不清楚剩下两段密钥是用在哪里,先保留,继续进入第四层(这里埋了个坑,之所以没有用 md5 防止爆破,是因为如果偷懒直接爆破出压缩包的密码,到了第六层就找不到四方密码的密钥了,最后还得绕回来……)

 

“挪移”联想移位的加密,确定列移位密码,先记录压缩包注释中 a=15,接着尝试解开“失落的无字罗盘”,之前第一层得到一张图纸上写着:Lost compass(译为:失落的罗盘),猜测这是列移位密码的 keyword,打开“镇煞之符”文件,发现:

ttrwohettseihuiahwssdomtitrieitnhroaiernbtho

通过列移位密码在线解密
http://www.practicalcryptography.com/ciphers/classical-era/columnar-transposition/

 

得到:(菩提本无树,明镜亦非台)

thebodhithiswithouttreesthemirrorisnottaiwan

作为密码,成功打开“失落的无字罗盘”,打开里面的文件,发现是个空白,切换背景色,出现文字:“菩提本无树,明镜亦非台!恭喜你找到了这个刻着 way 的无字罗盘,带着它,把它交给半盲道人,他会带你继续走下去。未来……当你做到那……手握日月摘星辰,世间无我这般人……你便可以知生死,通古今,互阴阳,悟得卦图,道破天机!”

⠁⡺⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⠊⠁⡼⠁⡱⠁⡯⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡭⠁⡱⠁⠌⠁⡯⠁⡺⠁⡿⠁⡭⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⠊⠁⡼⠁⡯⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡭⠁⠌⠁⡯⠁⡺⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡿⠁⡭⠁⡺⠁⡺⠁⡺⠁⡱⠁⠊⠁⡼⠁⡯⠁⡼⠁⡼⠁⡛⠁⡼⠁⡭⠁⠌⠁⡯⠁⡼⠁⡱⠁⡼⠁⡿⠁⡭⠁⡺⠁⡺⠁⡱⠁⡺⠁⠊⠁⡼⠁⡯⠁⡺⠁⡱⠁⡺⠁⡺⠁⡭⠁⠌⠁⡯⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡿⠁⡱⠁⡭⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⠊⠁⡱⠁⡼⠁⡯⠁⡼⠁⡼⠁⡼⠁⡱⠁⡼⠁⡼⠁⡼⠁⡼⠁⡼⠁⡱⠁⡭⠁⠌⠁⡯⠁⡼⠁⡼⠁⡱⠁⡼⠁⡼⠁⡼⠁⡼⠁⡼⠁⡱⠁⡼⠁⡼⠁⡼⠁⡼⠁⡼⠁⡛⠁⡼⠁⡼⠁⡿⠁⡭⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⠊⠁⡼⠁⡯⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⡭⠁⠌⠁⡯⠁⡺⠁⡱⠁⡺⠁⡺⠁⡿⠁⡭⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⠊⠁⡱⠁⡼⠁⡯⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⡺⠁⡭⠁⠌⠁⡯⠁⡱⠁⡺⠁⡺⠁⡺⠁⡺⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡿⠁⡼⠁⡱⠁⡼⠁⡼⠁⡿⠁⡼⠁⡼⠁⡛⠁⡼⠁⡼⠁⡼⠁⡼⠁⡼⠁⡱⠁⡼⠁⡼⠁⡿⠁⡺⠁⡺⠁⡱⠁⡺⠁⡺⠁⡺⠁⡿⠁⡼⠁⡱⠁⡼⠁⡼⠁⡼⠁⡼⠁⡼⠁⡱⠁⡼⠁⡿⠁⡭==

“半盲道人”很容易联想到盲文,加上上一层解出的刻着 way 的“失落的无字罗盘”,猜测为盲文密码,在线解密
https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=mangwen

 

得到:

+++++ +++[- >++++ ++++< ]>+.< +++++ +[->+ +++++ <]>++ +++++ .<+++ [->--
-<]>- -.<++ +[->+ ++<]> ++++. <++++ ++++[ ->--- ----- <]>-- ----- -----
--.<+ +++++ +[->+ +++++ +<]>+ ++.<+ ++++[ ->+++ ++<]> +++++ +++.- --.--
----- --.++ +++.- ----- -.<

接着由“图灵”联想到 brainfuck 加密,在线解密
https://www.splitbrain.org/services/ook
得到:

Alan Turing

然后你想爆破压缩包,不可能的(+_+)
https://www.somd5.com/

 
c342cdb7d4ad65f3467f1ab056f1f9c6

OK了,解压成功,进入第六层……

 

“圣堂武士”想到猪圈密码变种,有三张图包含两个变种,分别解出

 



 

得到一枚黑色棋子:polybios
得到一枚白色棋子:xcbyao
以及一张草纸:OBLFGOKYCNQRKLYTZIGS

 

“震四方”为四方密码,下图为示例(非本题),第三层“凯撒之言”得到两段多余的密钥 securityprefil,此处用上

 

 

解密得到一串密文:(坐亦禅,行亦禅)

SITALSOZENWALKISZENS

解压成功,进入下一层……

 

首先看到其中的压缩包注释信息:翻看一下,发现棋盒底部篆刻着 < b=20 >,你需要通过圣堂武士的两枚棋子,找到钥匙,打开棋盒,拿到里面的卷轴,它会指引你继续前进……

 

接着分析,“九转方棋”联想到棋盘密码,最后确定为波利比奥斯方阵密码,第六层得到两枚棋子,这里用黑色的一枚作为密钥,即 polybios,然后再看文件中给出的信息:
24122413541544244243132222(Hit:九转方棋)

 

http://www.atoolbox.net/Tool.php?Id=913
解码得到一把钥匙:(根据提示,加上两个空格,即九转方棋的英文)

nine turn chess

打开棋盒中的卷轴,发现下面的语句:

Lpf dociktf tvlwhft heg qpaxkcqyrojkuy, nojgmw, a fbce rhwkm qpaxkc(Hit:一念之间威五堂)

“威”谐音“维”维吉尼亚密码,第六层得到的两枚棋子,这里还剩下白色的,即 xcbyao,作为此处密钥,在线解码
http://www.atoolbox.net/Tool.php?Id=856
得到:(一念愚即般若绝,一念智即般若生)

One foolish thought the prajnaparamita, namely, a read think prajna

测试一下,压缩包解密成功,成功开启第八层……

 

“梵音回响摄心神”中,结合文件内容,第一个文件解出来一堆有规律的点:

.. . .. . ..... ..  ..... ..  ..... ..  .. . .. . .. . ..... ..  ..... ..  .. . .. . .. . .. . ..... ..  .. . ..... ..  ..... ..  ..... ..  ..... ..  .. . .. . .. . ..... ..  ..... ..  .. . ..... ..  ..... ..  ..... ..  ..... ..  .. . .. . ..... ..  ..... ..  ..... ..  .. . .. . .. . .. . ..... ..  .. . ..... ..  ..... ..  ..... ..  ..... ..  .. . ..... ..  ..... ..  ..... ..  ..... ..  .. . .. . .. . ..... ..  ..... ..  .. . .. . .. . .. . ..... ..  .. . .. . ..... ..  ..... ..  ..... ..  .. . ..... ..  ..... ..  ..... ..  ..... ..  .. . .. . .. . ..... ..  ..... ..  .. . .. . ..... ..  ..... ..  ..... ..  .. . .. . .. . .. . ..... ..  .. . .. . .. . .. . ..... ..  .. . .. . ..... ..  ..... ..  ..... ..

 

“梵音”联想到敲击码,对照上表,每两段替换一个字母,解出如下:

FFWWW FFFWW FFFFW FWWWW FFFWW FWWWW FFWWW FFFFW FWWWW FWWWW FFFWW FFFFW FFWWW FWWWW FFFWW FFWWW FFFFW FFFFW FFWWW

“摄”谐音“射”,又联想到仿射密码,在线解密,前面第五层压缩包注释中得到 a=15,第七层压缩包注释中得到 b=20,设置好系数 a b
http://www.atoolbox.net/Tool.php?Id=911

 

解出一堆大写的 Z O 字符:

ZZOOO ZZZOO ZZZZO ZOOOO ZZZOO ZOOOO ZZOOO ZZZZO ZOOOO ZOOOO ZZZOO ZZZZO ZZOOO ZOOOO ZZZOO ZZOOO ZZZZO ZZZZO ZZOOO

联想一下,Z 代表 zero,O 代表 one,即文本替换一下,得到一堆 0 1,得到:

00111 00011 00001 01111 00011 01111 00111 00001 01111 01111 00011 00001 00111 01111 00011 00111 00001 00001 00111

可能是二进制转字符?或者摩尔斯密码?

 

再次看提示中有“回响”,这里猜测是摩尔斯密码,继续替换,0为点,1为杠,如下:

..--- ...-- ....- .---- ...-- .---- ..--- ....- .---- .---- ...-- ....- ..--- .---- ...-- ..--- ....- ....- ..---

在线解密一下
http://www.zhongguosou.com/zonghe/moErSiCodeConverter.aspx

 

解出一串数字:2341312411342132442

 

接着发现两个压缩包,其中一个《六十四卦图》,想起来之前第四层“道法挪移”中压缩包中得到的图纸上写着做到:“手握日月摘星辰,世间无我这般人”,猜测为密码,解压成功,再看另一个:

 

“九曲轮回链生死”联想到曲折加密、圆形、《死亡之链》,即夏多密码,同时,前面第八层“梵音回响摄心神”中得到一串数字,确定为夏多密码的密文变换规则,解出后应为下层钥匙

 


 

依次代入密文规则,即 2341312411342132442,解密后得到的都是大写,依据句子格式完整化输出(含句点)为:

Something for nothing.

符合压缩包中注释信息——龙族,确定为压缩包密码,测试一下,成功解压出 TXT 文件,内含如下信息:

新佛曰:修般吽所我喼阿亦婆提願空哆伏嚴波若迦喼兜修嚴迦彌諦提般婆亦修眾摩耨摩耨提願祗吽若咒羅羅吶提眾嘇喃吽諦吶愍喼嘚嚩須須諦須阿阿隸薩亦空聞兜伏阿愍須耨須莊空願宣叻嚩是修提愍空宣婆僧吽色諦嚴隸寂囉願吶即缽宣願缽缽宣塞即我眾劫菩吽祗色心所莊提般蜜彌莊訶嘚聞夷訶寂嚴斯空是彌眾劫波吽耨提迦訶祗塞咤所斯寂若彌兜叻提喃提若劫宣諦斯波所諸闍吶囉我空彌宣耨宣諸寂祗眾塞提心薩心降般愍婆阿迦眾慧吽降咤波咒菩哆菩迦愍婆喃喼宣咒吽如亦囑囑提

由“佛法通古今”以及“新佛曰:”联想到新旧与佛论禅,很明显要先进行一次新约佛论禅,解出:

冥呼苦呐羅舍冥夜皤真俱離罰得罰夜梵上冥恐奢豆喝梵所佛梵闍皤悉心侄苦奢般冥喝梵死恐皤孕蘇奢吉奢波老俱亦依冥多諳訶

再进行一次与佛论禅,发现提示“太深奥了,参悟不出佛经的真意……”,这里你需要“普渡众生”,原来少了“佛曰:或如是我闻:”,加上“佛曰:”后成功参悟真谛

 

http://hi.pcmoe.net/buddha.html
http://www.keyfc.net/bbs/tools/tudoucode.aspx

 

解出一堆天干地支:咸同人归妹明夷贲革无妄
联想到伏羲六十四卦的二进制矩阵表

 

 

通过上图,解密六十四卦,阴为 0,阳为 1,补阴阳,猜测不满八位时,前补或者后补 01,最后转换后补错误,确定前补,得到二进制如下:

01001110 01101111 01110100 01101000 01101001 01101110 01100111

想到 ASCII 编码,去掉空格后,用下面网址进行转换,
http://tool.huixiang360.com/str/from-binary.php
二进制转字符,得到 Nothing

这里本想直接脑洞一下,猜解出只留下 nothing,然后尝试大小写和首字母大写(Something for nothing! 拿什么珍贵的东西,换来了空白。——龙族)

 

最后得到未加密 flag:Nothing
md5 32位加密后,格式化输出:flag{f80a4ad87fee7c9fdc19b7769495fdb5}

0x03后记

先讲点题外话,个人很喜欢江南的《龙族》,”每个人心里都有个死小孩“,他陪伴我度过了孤独的几年,于我看来,路鸣泽是对强大的自己的一个憧憬吧,所以设计思路中用到了《龙族》的句子。题目典型的套娃,这是我准备投稿的时候才认识到的问题,质量与之前参加的网鼎杯和虎符杯相比,简直渣的要命(捂脸),谁让我太菜呢,所以欢迎大家无情吐槽,,不过比我强一点点的大菜鸡可以无聊研究一波,算是了解补充一些古典密码学知识吧!

注:题目已上传到附件(只是个装着文档的压缩包,Chrome 莫名危险拦截,只好加个解压密码:bbs.pediy.com),欢迎品尝 (●'◡'●)




评论