TL; DR No, no estás 100% seguro. O con otras palabras, piénsalo dos veces. ;)
No ejecute fragmentos de código sin comprender los conceptos básicos. Utilícelo man
para obtener más información sobre un comando o un programa. Use Google u otro portal de búsqueda si no lo comprende. Y si aún duda, simplemente no ejecute el código.
¿Confías en mí? Entonces corre:
man man
Ok, no es peligroso, ves la página de manual de man
Pero, ¿qué pasa con el siguiente código, confías en mí?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
¿No? Buena idea. Analicemos el código:
perl
El intérprete de lenguaje Perl
-MMIME::Base64
Codificación y decodificación de cadenas base64
-0777ne
-0777
- Cambia el separador de línea a undef, permitiéndonos sorber el archivo, alimentando todas las líneas a Perl de una vez.
-e
- El indicador (ejecutar) es lo que nos permite especificar el código Perl que queremos ejecutar directamente en la línea de comando.
-n
- Alimente la entrada a Perl línea por línea.
'print decode_base64($_)'
- Decodifica una cadena, la cadena se guarda en $_
.
"ZWNobyAnQk9PSCEnCg=="
- ¿Y esto? ¿Que es esto?
Comencemos una prueba.
Sabemos que es algo así como base64 y parece codificado. Por lo tanto, decodifique la cadena con:
base64 --decode <<< "ZWNobyAnQk9PSCEnCg=="
Y el resultado es ... ok, no es realmente peligroso:
echo 'BOOH!'
Ahora, podemos hacer lo mismo con Perl
perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg=="
Y la salida es, qué sorpresa:
echo 'BOOH!'
¿Pero fue peligroso? Esto es peligroso:
$(…)
Esta construcción ejecuta la salida de los comandos entre paréntesis.
Probémoslo, ¿confías en mí?
$(perl -MMIME::Base64 -0777ne 'print decode_base64($_)' <<< "ZWNobyAnQk9PSCEnCg==")
'BOOH!'
Y de que se trata
c3VkbyBraWxsYWxsIG5hdXRpbHVzCg==
Pruébalo ... ¿Confías en mí?