Cómo ofuscar u ocultar código de nuestros scripts Bash

A veces programamos un script en Bash y deseamos que el código de este NO esté visible, o sea, que no sea texto plano. Cuando hablamos de ocultar código el término correcto es ofuscar, en mi caso deseaba ofuscar el código de un script que hice hace algún tiempo, la utilidad que encontré para esto se llama: shc

shc nos permite ofuscar código, aquí les dejo los pasos para poder usarla:

1. Primero debemos descargarla

Descarga SHC v3.8.9

2. Una vez lo hayamos descargado hacemos clic derecho sobre el archivo comprimido y seleccionamos la opción que diga “Extraer aquí” o algo similar. Esto hará que nos aparezca una carpeta llamada shc-3.8.9, aquí les muesto un screenshot de su contenido

3. Bien, supongamos que la carpeta se encuentra en /home/usuario/Descargas/shc-3.8.9 pues abrimos una terminal y vamos a esa ruta (cd “/home/usuario/Descargas/shc-3.8.9″), y aquí empieza la instalación.

 4. En la terminal estando ubicados (como ya les dije) en la carpeta shc-3.8.9, para poder instalar esta aplicación necesitamos hacer un enlace simbólico del archivo shc-3.8.9.c a shc.c por lo que ejecutamos lo siguiente:

ln -s shc-3.8.9.c shc.c

 4. Una vez hecho el enlace ejecutamos make install con permisos de root (usaremos sudo):

 sudo make install

 4. Nos pedirá el password nuestro y se quedará esperando un momento, estará esperando que nosotros presionemos la tecla [Y] y presionemos [Enter], o sea, que le confirmemos que sí deseamos instalar el software. Una vez hecho esto se instalará sin problemas. Les dejo un screenshot de todo el proceso de preparación e instalación:

 

Como pueden ver al final me aparece un error, el error es referente a que no existe una determinada carpeta en mi sistema, si ven esto simplemente no le den importancia… aún así SHC se instaló satisfactoriamente ;)

Para que puedan ejecutar sudo make install es NECESARIO tener instalados los paquetes: gcc y make

5. Listo, esto es todo para la instalación :D

Cuando ya lo tengamos instalado solo falta aprender a usarlo. Supongamos que tenemos un script en nuestro home llamado script.sh y que su contenido es el siguiente:

#!/bin/bash
echo "Script de prueba para DesdeLinux.net"
exit

Al ejecutar este script obviamente nos mostrará en la terminal el mensaje: “Script de prueba para DesdeLinux.net” o no? … pero, ahora vamos a ofuscar ese código.

En una terminal ponemos lo siguiente y presionamos [Enter]:

shc -v -f $HOME/script.sh

Y bingo!! listo :D

Esto nos creó dos nuevos archivos junto a nuestro script, ahora tenemos script.sh.x y script.sh.x.c

script.sh.x -» Este es nuestro script en bash ofuscado, este cuando lo ejecutemos hará exactamente lo mismo que el primero que creamos, la diferencia entre estos es que el primero si lo abríamos con algún editor de texto (nano, kate, gedit, etc) podíamos ver claramente su contenido, mientras que si abrimos a script.sh.x veremos claramente que no vemos nada… LOL!!!, o sea, el código está ‘cifrado’ :)

script.sh.x.c -» Este es nuestro script pero en lenguaje C … podemos borrar este sin preocupación pues no lo necesitamos en realidad, bueno, al menos yo no lo necesitaría para nada :)

No hay mucho más que agregar en realidad en el aspecto técnico, solo aclarar que hasta donde sé con esto (ocultar u ofuscar código de scripts bash) no se está violando licencias o algo así. Aclaro esto porque hace algunos meses en Facebook cuando mencioné que había aprendido a ofuscar código bash, algunos usuarios me alertaban que esto era violar licencias o algo así… en fin, que hasta donde tengo entendido, no se viola licencias con esto ;)

Muchas gracias a Matias Gastón por haberme mencionado esta utilidad tiempo atrás

Nada más que agregar, cualquier duda o pregunta, queja o sugerencia me dejan saber.

Saludos :D