2011-12-05 22 views
10

Lo siento por hacer una pregunta tan general, pero esto me ha estado molestando durante días.¿Qué está haciendo este código? :() {: |: &} ;:

Un amigo me dio este fragmento de código (?) Y no me dice lo que hace, o incluso si es C o bash o cualquier otra cosa.

Por lo que parece, se parece a C para mí. Aunque no entiendo por qué hay : en los lados.

:(){:|:&};: 

Cualquier pista será apreciada.

+1

¡Tonterías! Solo asegúrese de que cuando pruebe el código "aleatorio" de una fuente que no es de confianza, lo ejecute dentro de una máquina virtual no conectada a la red. :) –

+2

No es un amigo que tomaría más código de ... si él te dice que hagas 'chmod -R 666 /', yo tampoco lo haría –

+0

No lo ejecuté, por supuesto. Lo único que bombardeó aquí fue mi mente =) – Dimme

Respuesta

25

Esto es script de shell bash, no C.

Es un fork bomb.

Wikipedia lo explica:

:()  # define ':' -- whenever we say ':', do this: 
{  # beginning of what to do when we say ':' 
    : # load another copy of the ':' function into memory... 
    | # ...and pipe its output to... 
    : # ...another copy of ':' function, which has to be loaded into memory 
     # (therefore, ':|:' simply gets two copies of ':' loaded whenever ':' is called) 
    & # disown the functions -- if the first ':' is killed, 
     #  all of the functions that it has started should NOT be auto-killed 
}  # end of what to do when we say ':' 
;  # Having defined ':', we should now... 
:  # ...call ':', initiating a chain-reaction: each ':' will start two more. 
+6

Normalmente recomiendo "Pruébalo y ve" pero no en este. –

+0

¡Muchas gracias! – Dimme

+7

@SethCarnegie: ** Nunca ** ejecuta el código que no es de confianza. – SLaks

2

Esta es una bomba tenedor y yo no correría que en su sistema. Causará la proliferación de un conjunto de procesos y, en última instancia, ralentizará o colapsará su sistema.

Cuestiones relacionadas