Entendiendo la bomba fork() de bash :(){ :|:& };:

La pregunta: ¿Alguien puede explicar que es el siguiente codigo en bash? :(){ :|:& };:

Respuesta: Es una funcion en bash, y mas aun, es una funcion recursiva. Es un codigo fatal para cualquier sistema sin configurar correctamente.

Una vez que sea ejecutado ese comando y si el sistema no esta correctamente configurado sera imposible continuar sin reiniciar.

Expliquemos mas detalladamente…

:() – Es el nombre de una funcion, la cual no acepta argumentos, generalmente las funciones de bash de definen como sigue:

Code:
nombre_de_funcion () {
   arg1=$1
   echo ''
   #hacemos algo $arg
}

la bomba fork() se define como sigue:

Code:
:() {
   :|: &
};:

:|: – Aca llamamos a la funcion recursivamente, y para hacerlo peor usamos un pipe para llamarla dos veces, por lo que por cada recursion estaremos llamando dos veces a la funcion.

& – Pone la funcion en segundo plano para que los hijos no mueran del todo y consuman recursos.

; – Terminamos la definicion de la funcion

: – Aca llamamos a la funcion.

Aca dejo un codigo un poco mas facil de leer:

Code:
bomba() {
   bomba | bomba &
}; bomba

=-=-=-=-=
Powered by Blogilo

Anuncios

Etiquetas: , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: