假设我被给了一个看起来完全垃圾的字符串,并且我被要求确定它可能是什么,有一些迹象表明加密分析师用它来形成一组待测试的假设。 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:
答案 0 :(得分:3)
如果您没有收到语法错误,那么请将其运行到malborge口译员处,这是有效的代码。
确定它是否是有用的代码完全是另一回事
答案 1 :(得分:2)
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
之类的子字符串,而且非常可疑,它看起来更像是Malbolge,而不是随机键盘混搭。 QPONMFKJ
;这些是在随机数据中很少偶然发生的子字符串,但在Malbolge代码中很常见。因此,我怀疑这是正版的Malbolge代码,还是经过稍微改动的代码。