El Manual de BASH Scripting Básico para Principiantes/Compilar (ofuscar) BASH scripts con C - SHC

De Wikilibros, la colección de libros de texto de contenido libre.

¿Alguna vez te has fastidiado por que no puedes proteger la intimidad de tu script (NOTA: Yo apoyo el Open Source y el Free Software)? No te aflijas, que existe una genial utileria para todos aquellos que desean por alguna razón hacer algo de lo siguiente:

  • Proteger su código de ojos mirones
  • Evitar que alguien edite el script (útil para importantes scripts de sistema que por alguna razón alguien desee modificar de manera enfermiza xD)
  • Curiosear un poco

Al grano; la dichosa utileria se llama SHC, y es de la autoria de Francisco Javier Rosales García, un profesor de la Facultad de Informática en la Universidad Politécnica de Madrid y cuyo e-mail es 'frosal<at>fi.upm.es'.

Esta utileria no es en realidad un compilador, sino un "ofuscador" que encripta el código envolviéndolo en C, esto no hace al script mas rápido pero si sirve para algunas pijadas; despúes simplemente lo ejecuta y no es facil hacer Ing. Inversa para obtener el código, sin embargo es posible.

Si tu distribución no incluye SCH (Ubuntu lo incluye desde no se cual versión), o prefieres compilarlo e instalarlo tú mismo, acá consigues el source:

http://www.datsi.fi.upm.es/~frosal/sources/

Se compila con instrucciones no muy genéricas, solo extraes el tarball y en ese directorio ejecutas 'make' y sigues las instrucciones (válido hasta la 3.8.6 que yo sepa). O bien, puedes usar el siguiente método:

  #!/bin/bash  
  # SHC Install Script
 
  echo 'Este script necesita permisos de root, asegurate de tenerlos antes de ejecutarlo'
  echo 'Dime el numero de la ultima version de SHC (por ejemplo: 3.8.6). Puedes verificar cual es la ultima version entrando a http://www.datsi.fi.upm.es/~frosal/sources/'
  read shcversion
  startdir=(pwd)
  wget http://www.datsi.fi.upm.es/~frosal/sources/shc-$shcversion.tgz || ! echo 'Error al descargar las fuentes, saliendo...' | exit 2
  tar xfv shc-$shcversion.tgz  || ! echo 'Error al extraer las fuentes del tarball, saliendo...' | exit 3
  make  || ! echo 'Error al compilar, saliendo...' | exit 4
  install -D -s shc /usr/bin/shc  || ! echo 'Error al instalar, saliendo...' | exit 5
  install -D -m 644 shc.1 /usr/man/man1/shc.1  || ! echo 'Error al agregar pagina de man, saliendo...' | exit 6
  echo 'Instalacion exitosa, saliendo' | exit 0
Herramientas personales
Crear un libro