如何阅读完全由标点符号组成的代码?

How do I Read Code Consisting Entirely of Punctuation?

https://security.stackexchange.com/questions/224673/can-malicious-code-fit-in-14-bytes,其中一条评论提到了以下14个字符的代码示例,在恶意逻辑的设置中:

:(){ :|:& };:\n

没有提供其他上下文。这自然是不可能的google。我不是那个网站的会员,因此我不能要求原评论者澄清。

所以,

What does this code do? If nonobvious, why is it malicious?

您提到的代码属于 Linux fork bomb。 Fork炸弹是一个用来对系统进行拒绝服务攻击的函数。

我们来分解一下代码:

Linuxbash函数的基本结构是:

function(){
 arg1=
 arg2=
 echo 'Hello'
 #perform_something on $arg
}

将fork bomb 函数与上述bash 函数的语法进行比较,如下所示:

:(){
:|:&
};:\n

其中:

:()

它定义了一个名为“:”的函数。

:|:

函数“:”递归地调用自身并将输出通过管道传递给函数“:”的另一个调用(这使得叉子炸弹无法停止,除非您重新启动系统)。

&

这会将函数执行置于后台。

;

;终止函数。

:

它调用函数(fork 炸弹)而不带参数,因为 fork 炸弹函数不需要 运行 的参数。

What language is this?

语言是Bash。

In the future, when faced with a wall of punctuation, how can I find out the above two? Is there a website/tool for this, or some other reasonable method?

它需要你使用google并通过分解标点字符串来搜索。

警告:不要在您的 Linux 系统上 运行 此代码,因为除非您重新启动它,否则它会使您的系统崩溃和无响应。