Estaba leyendo la advertencia de Ubuntu Forum sobre comandos maliciosos y encontré esta joya interesante:
:(){ :|:& };:
ADVERTENCIA: El código anterior se bloquee la máquina a menos que tenga límites estrictos en lugar proc (que es probable que no) que provocó un reinicio duro.
Considere este código similar a la ejecución
sudo rm -rf /
.
Pero ¿qué significa eso? Incluso con mi experiencia en programación, nunca he visto un comando tan críptico que no sea lenguaje ensamblador.
sudo rm -rf /
. Ese comando elimina todos sus archivos; este solo obstruye los recursos de su máquina hasta que se vuelve inutilizable y tiene que reiniciar.sudo rm -rf /
es más peligroso, pero he visto a personas ejecutar esto en servidores remotos "solo quería ver lo que hacía" donde tiene dificultades para reiniciar sin acceso a un panel de control.arbitrary_name(){ arbitrary_name|arbitrary_name& };arbitrary_name
. El nombre:
no solo hace que este comando sea corto y críptico, sino que también convierte una función:
incorporada que no hace nada en una función que hace mucho . Si:(){ :|:& }
introduce su definición en el entorno de otra persona y deja que permanezca allí, golpeará cuando la víctima menos lo espere .Respuestas:
Es, como dijiste, una bifurcación. Lo que hace es definir una función, luego llamarla. La función se llama
:
.Vamos a nombrarlo
forkbomb
para que podamos ver mejor lo que está sucediendo:Como puede ver, y probablemente adivine por su experiencia en programación, la primera parte es la definición de la función (
forkbomb(){ ... }
), y la última:
es donde se llama a la función (la;
simple separa las declaraciones en Bash).Ahora, ¿qué hace esta función? Si está familiarizado con Bash, sabrá que el
|
personaje canaliza la salida estándar de un comando / programa a la entrada estándar de otro. Básicamente,:|:
inicia dos instancias de la función (aquí es donde se "bifurca").Y luego la magia:
&
pone esos comandos en segundo plano, permitiendo que la función original regrese, mientras que cada instancia se bifurca hasta que las vacas lleguen a casa en segundo plano, utilizando todos sus recursos y eliminando el sistema (a menos que tenga límites) impuesto sobre él).fuente
:
, que realmente ejecuta la función!Tomado del artículo de Wikipedia Forkbomb :
fuente
Desglosado:
Cambia
:
abomb
y tienes:bomb(){ bomb|bomb& };bomb
Es realmente bastante elegante.
fuente