WP-SUSCTF招新题目-Misc

0x01题目

题目是一个二维码

0x02 分析

扫码后发现二维码包含的信息如下:

1
\u58eb\u4eba\u0020\u5927\u571f\u0020\u5927\u4eba\u0020\u4e2d\u53e3\u0020\u4e2d\u4eba\u0020\u4eba\u5de5\u0020\u592b\u7f8a\u0020\u4e2d\u7530\u0020\u592b\u592b\u0020\u4eba\u4eba\u0020\u4eba\u7531\u0020\u5929\u4eba\u0020\u4eba\u53e3\u0020\u4e2d\u4eba\u0020\u738b\u5927\u0020\u4e2d\u53e3\u0020\u592b\u5927

立刻得知是Unicode编码,进行解密,得到一下中文:

1
士人 大土 大人 中口 中人 人工 夫羊 中田 夫夫 人人 人由 天人 人口 中人 王大 中口 夫大

此时立刻想到是当铺密码(看到这种两个三个的汉字组合,而且这些汉字大部分都含有“口”这样的结构,就是当铺密码)。当铺密码简单来说就是汉字中“出头”的笔画个数。例如:“中”就是2,“口”和“田”都是0(没有出头),“人”是3。以此类推。

0x03 解密

通过Python进行自动化解密(这里面的字典可以自己添加)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
dh = '田口由中人工大土士王夫井羊壮天'
ds = '001234555678996'

cip = '士人 大土 大人 中口 中人 人工 夫羊 中田 夫夫 人人 人由 天人 人口 中人 王大 中口 夫大'
s = ''
for i in cip:
	if i in dh:
		s += ds[dh.index(i)]
	else:
		s += ' '
print(s)

最后得到:

1
53 55 53 20 23 34 79 20 77 33 31 63 30 23 65 20 75

按照当铺密码的一般操作,这些数字应该代表ascii码,但是观察发现,其中20、23这些数字过小,在ASCII码中属于不可见字符,遂考虑进制转换。由于出现了79这个数字,故不可能是8进制,于是考虑16进制。于是参照以下对照表:

得到明文为:

1
SUS #4y w31c0#e u
0%