Eu estava lendo o aviso do Ubuntu Forum sobre comandos maliciosos e encontrei esta jóia interessante:
:(){ :|:& };:
AVISO: O código acima irá falhar a sua máquina a menos que você tem limites proc estritas no lugar (que você provavelmente não) solicitando um reinício duro.
Considere esse código semelhante à execução
sudo rm -rf /
.
Mas o que isso significa? Mesmo com minha experiência em programação, nunca vi um comando tão enigmático que não seja linguagem assembly.
sudo rm -rf /
. Esse comando exclui todos os seus arquivos; este apenas obstrui os recursos da sua máquina até que ela se torne inutilizável e você precise reiniciar.sudo rm -rf /
é mais perigoso, mas já vi pessoas executando isso em servidores remotos "apenas querendo ver o que ele fez", onde é difícil reiniciar sem acessar o painel de controle.arbitrary_name(){ arbitrary_name|arbitrary_name& };arbitrary_name
. O nome:
não apenas torna este comando curto e enigmático, mas também transforma um:
builtin que não faz nada em uma função que faz muito . Se você esgueirar sua definição:(){ :|:& }
para o ambiente de outra pessoa e deixá-la lá, ela atacará quando a vítima esperar menos .Respostas:
É, como você disse, uma bifurcação. O que ele faz é definir uma função e depois chamá-la. A função é chamada
:
.Vamos dar um nome
forkbomb
para que possamos ver melhor o que está acontecendo:Como você pode ver, e provavelmente adivinhar pela sua experiência em programação, a primeira parte é a definição da função (
forkbomb(){ ... }
) e a última:
é onde a função é chamada (a;
apenas separa as instruções no Bash).Agora, o que essa função faz? Se você estiver familiarizado com o Bash, saberá que o
|
personagem canaliza a saída padrão de um comando / programa para a entrada padrão de outro. Então, basicamente,:|:
inicia duas instâncias da função (é aqui que ela "bifurca").E então a mágica:
&
colocar esses comandos em segundo plano, permitindo que a função original retorne, enquanto cada instância se bifurca até que as vacas voltem para casa em segundo plano, usando assim todos os seus recursos e derrubando o sistema (a menos que tenha limites imposta a ele).fonte
:
, que realmente executa a função!Retirado do artigo da Wikipedia Forkbomb :
fonte
Quebrado:
Mude
:
parabomb
e você tem:bomb(){ bomb|bomb& };bomb
É realmente muito elegante.
fonte