2011-12-05 11 views
10

Przepraszam, że zadaję takie ogólne pytanie, ale to od wielu dni mnie dręczy.Co robi ten fragment kodu? :() {: |: &} ;:

Przyjaciel dał mi ten fragment kodu (?) I nie chce mi powiedzieć, co robi, a nawet jeśli jest to C, bash lub cokolwiek innego.

Wygląda na to, że C wygląda na mnie. Chociaż nie rozumiem, dlaczego po bokach są :.

:(){:|:&};: 

Wszelkie wskazówki zostaną docenione.

+1

Nonsens! Po prostu upewnij się, że podczas próby "losowego" kodu pochodzącego z niezaufanego źródła, które uruchamiasz wewnątrz bezsieciowej maszyny wirtualnej. :) –

+2

To nie jest przyjaciel, bym wziął więcej kodu z ... jeśli powie ci, abyś zrobił 'chmod -R 666 /', nie zrobiłbym tego ani –

+0

Nie uruchomiłem go oczywiście. Jedyną rzeczą, którą zbombardował fork tutaj, był mój umysł =) – Dimme

Odpowiedz

25

Jest to skrypt powłoki bash, nie C.

To fork bomb.

Wikipedia wyjaśnia:

:()  # 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

Zwykle polecam "Wypróbuj i zobacz", ale nie na tym. –

+0

Dziękuję bardzo! – Dimme

+7

@SethCarnegie: ** Nigdy ** nie uruchamiaj niezaufanego kodu. – SLaks

2

Jest to fork bomb i nie byłoby, że w systemie. Spowoduje to pojawienie się wielu procesów, które spowodują spowolnienie lub awarię systemu.