假设给了我一个看起来完全是垃圾的字符串,并且要求我确定它可能是什么,那么有迹象表明,加密分析师会使用这些迹象来形成一组要测试的假设。 Malbolge有这样的迹象吗?以下面的字符串为例。
D'`%$p"[m}YziUxBe-2>0/pL,%7#FE~ffezcaw<^)Lxwvun4lTj0nmlejc)J`&dFE[!BXWV[ZSwQuUTMLpP2NGFEiC+G@EDCB;_?!=<;:3W765.-Q1*).-,+$#G'&feB"!a}v<]\xqpo5srqpohg-eMibg`_%cE[`Y}]?UTYRvV87MqQPONMFKJCgA)?cCB;@?87[5{38765.-Q10pM:
最佳答案
Malbolge命令的初始含义基于其ASCII码以及其在程序中的位置。这导致在大多数程序中可以很容易地识别出一系列ASCII码倒退。
让我们以以下cat
程序为例(source):
(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
~P<
<:(8&
66#"!~}|{zyxwvu
gJ%
该程序最明显的部分是
zyxwvu
,它可以被识别为小写英文字母的一部分,该字母可以向后书写,从而有助于将其与键盘混搭明显地区分开。 (实际上,它前面的"!~}|{
也由连续的ASCII码组成,从~
到!
环绕。)在程序中还有其他不太明显的反向连续ASCII码示例,例如第一行中的-,+*)"!
。这些ASCII码的反向序列对应于重复的同一命令的序列。也有可能发现“断裂序列”,这是一个更大的线索。查看第一行,并将其与反向ASCII序列(带有
!
符号显示它们匹配的位置)进行比较:(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
DCBA@?>=<;:9876543210/.-,+*)('&%$#"!
!! !!!! ! !! !! ! !!!!! !
首先引起我注意的是
7x54-21
;它是向后写入的ASCII数字,但略有损坏。那是因为该部分中有多个命令,但是同一命令的重复次数足以产生明显的模式。扩展模式显示它也在行中的许多其他点匹配;这是因为在程序的所有这些点上都运行相同的命令。由于Malbolge只有8个命令,因此您会发现程序中的每个命令都属于8个反向ASCII序列之一。(为了验证代码是否正确,Malbolge,您需要确保它们是与命令相对应的8个特定序列,这正是解释程序的工作。但是,如果您只是试图确定代码,那么这太过复杂了。是否编写的代码很多是Malbolge的;仅仅寻找
zyxwv
或EDCBA
或87654
之类的东西通常就足够了,这让我怀疑未知的源代码就是Malbolge。)对于问题中的示例字符串,由于类似于
xwvu
,nmlej
和非常可疑的QPONMFKJ
等子字符串,它看起来更像是Malbolge,而不是随机键盘混搭。这些是在随机数据中很少偶然发生的子字符串,但在Malbolge代码中很常见。因此,我怀疑这是正版的Malbolge代码,还是经过稍微改动的代码。