3

假设给了我一个看起来完全是垃圾的字符串,并且要求我确定它可能是什么,那么密码分析师使用这些迹象来形成一组要测试的假设。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:
4

2 回答 2

4

通过 malborge 解释器运行它,如果您没有收到语法错误,则它是有效代码。

确定它是否有用的代码完全是另一回事

于 2016-05-07T09:09:55.463 回答
2

Malbolge 命令的初始含义是基于它的 ASCII 码,加上它在程序中的位置。这导致在大多数程序中,ASCII 码的序列倒退是相当可识别的。

我们以下面的cat程序为例(source):

(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
~P<
<:(8&
66#"!~}|{zyxwvu
gJ%

该程序最明显的部分,有助于明显地将其与键盘混搭区分开来,是zyxwvu,它可以识别为倒写的小写英文字母的一部分。(其实"!~}|{前面也是由连续的 ASCII 码组成,环绕 from ~to !。)程序中还有其他不太明显的反连续 ASCII 码的例子,比如-,+*)"!第一行。

这些颠倒的 ASCII 码序列对应于一系列重复的相同命令。也有可能发现“破碎的序列”,这是一个更大的线索。查看第一行,并将其与反向 ASCII 序列进行比较(用!符号显示它们匹配的位置):

(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.
DCBA@?>=<;:9876543210/.-,+*)('&%$#"!
  !!   !!!!  ! !! !! ! !!!!!   !

首先引起我注意的事情是;它是倒写的 ASCII 数字,但略有损坏。那是因为该部分中有多个命令,但同一命令的重复次数足以产生明显的模式。扩展模式表明它也匹配在线中的许多其他点;那是因为在程序中的所有这些点都在运行相同的命令。因为 Malbolge 只有 8 个命令,所以您会发现程序中的每个命令都属于 8 个反向 ASCII 序列之一。7x54-21

(为了验证代码是否正确 Malbolge,您需要确保它们是对应于命令的 8 个特定序列,这是解释器所做的。但如果您只是试图确定,那就太复杂了书面代码是否是 Malbolge 很多;仅仅寻找zyxwvorEDCBA87654之类的东西通常就足以让我怀疑未知的源代码是 Malbolge。)

对于问题中的示例字符串,它看起来更像 Malbolge 而不是随机键盘混搭,因为子字符串xwvu,和非常可疑的; 这些子串在随机数据中很少偶然发生,但在 Malbolge 代码中却很常见。因此,我怀疑它要么是真正的 Malbolge 代码,要么是经过轻微改动的代码。nmlejQPONMFKJ

于 2019-08-02T20:01:53.363 回答