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
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:
sudo make install es NECESARIO tener instalados los paquetes: gcc y make5. Listo, esto es todo para la instalación
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
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
Nada más que agregar, cualquier duda o pregunta, queja o sugerencia me dejan saber.
Saludos