Não é algo novo. Ela remonta a 1970, quando foi introduzido.
Citações de aqui ,
One of the earliest accounts of a fork bomb was at the University of Washington on a Burroughs 5500 in 1969. It is described as a "hack" named RABBITS that would make two copies of itself when it was run, and these two would generate two more copies each, and the copies would continue making more copies until memory was full, causing a system crash. Q The Misanthrope wrote a Rabbit-like program using BASIC in 1972 while in grade 7. Jerry Leichter of Yale University describes hearing of programs similar to rabbits or fork bombs at his Alma Mater of Princeton and says given his graduation date, they must be from 1973 or earlier. An account dating to 1974 describes a program actually named "rabbit" running on an IBM 360 system at a large firm and a young employee who was discharged for running it.
Portanto, o :(){ :|:& };:
é apenas uma maneira de implementar a fork fork no shell. Se você pegar alguma outra linguagem de programação, poderá implementar também nesses idiomas. Por exemplo, em python você poderia implementar a fork fork como,
import os
while True:
os.fork()
Mais formas de implementar a fork fork em diferentes idiomas podem ser encontradas no link wikipedia .
Se você quiser entender a sintaxe, é bem simples. Uma função normal no shell seria semelhante,
foo(){
arg1=$1
arg2=$2
echo 'Bar..'
#do_something on $arg argument
}
fork()
bomb é definido da seguinte forma:
:(){
:|:&
};:
:|:
:|:
- Em seguida, ele se chama usando a técnica de programação chamada recursão e canaliza a saída para outra chamada da função :
. A pior parte é a função chamada duas vezes para bombardear o seu sistema.
&
- Coloca a chamada de função em segundo plano para que a criança não morra e comece a comer os recursos do sistema.
;
- Finaliza a definição da função
:
- Chame (execute) a função aka set a bomba fork ().
Aqui está mais um código legível por humanos:
bomb() {
bomb | bomb &
}; bomb
Referências