lunes, 10 de septiembre de 2012

Compilar scripts en bash?

Bueno en una entrada pasada les entregue un script escrito en bash para facilitar la conversión de vídeos de extension .mp4 a archivos de audio de extensión .mp3 usando ffmpeg,el hecho es que estaba ofuscado,compilado, entripado y en esta entrada aprenderemos a compilar scripts .sh para que nadie los pueda editar,esto hace que nadie los pueda editar,solo nosotros o crackers usando ingeniería inversa.

Bueno el hecho es que esto solo seria valido si nuestro script fuera un gran script,lo suficiente para que valiera la pena encriptarlo,pero al encriptarlo donde queda la licencia de Software Libre, esta:


#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#  
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#  



bueno en mi opinión incluso un script encriptado podria llevar esa licencia solo que tambien entregar el script original y el binario

En cuanto al programa que usaremos para compilar nuestros scripts se llama shc

Wiki

Por ejemplo mi script para convertir vídeos luce así compilado



Muy distinto a como luce el original

















Bueno el script de la entrada pasada es este,por si quieren editarlo mejorarlo o estudiarlo con lo que hemos aprendido en los tutoriales de bash:

No esta guiado ya que es muy simple y si han estudiado los tutoriales bash del sitio,les dejo de tarea que lo guíen con comentarios

#!/bin/bash

# Programador: Tiempo de Tux
# Pagina web: www.itimetux.com

echo -e "\e[1;35m_______________________________________________________\e[0m"

echo -e "\e[1;35m--------Convierte tus videos mp4 a musica mp3--------------------------\e[0m"
echo -e "\e[1;35m----------------------------------------------------------------------------------------\e[0m"

echo -e '\e[0;31m# Asegurate de tener instalado ffmpeg y zenity\e[0m'


echo 'Deseas continuar(Si,No)'

read opcion


case $opcion in


si|SI|Si)


         echo "Seleciona un video"


for archivo in `zenity --file-selection --file-filter=*.mp4`

do

if [ -f $archivo ]

then

        echo 'Como se va a llamar la pista de audio?'


read option

        echo -e '\e[0;31m# Si presionas ctrl+c en el transcurso puede que no se complete la conversion\e[0m'


        echo "Convertir(Si,No)"


read opciion


case $opciion in 


si|SI|Si)


        ffmpeg -i $archivo $option.mp3


        echo "Listo tu archivo se guardo en $PWD"

        echo "Si presionaste ctrl+c puede que este incompleto"
;;

no|NO|No)


exit 0;

;;

esac


fi


done

;;

no|NO|No)


exit 1;

;;

*)


          echo "Esa no es una opcion :("


exit 2;

;;
esac

# Fin del codigo
Y les dejo el Ecriptado
Enlace


Tutorial compilar scripts sh

Para compilar nuestros scripts necesitaremos descargar sch y compilarlo para que funcione

1.Descarga(3.8.7)

Enlace

Si tienen wget usen esta orden

wget http://www.datsi.fi.upm.es/ frosal/sources/shc-3.8.7.tgz

2. Descompriman y acedan a la carpeta

tar xvfz shc-3.8.7.tgz
cd shc-3.8.7
3.Copilamos

make


sudo install -D -s shc /usr/bin/shc


sudo install -D -m 644 shc.1 /usr/man/man1/shc.1

4.Usamos

Debemos acceder a la carpeta donde tengamos el script,por ejemplo documentos

cd ~/Documentos
Ahora compilamos el script

shc -f nombre.sh
Bien este comando creara dos archivos ademas de dejar el original

Crearan los archivos con extensión .sh.x.c y el archivo .sh.x 

El archivo .sh.x es el script ofuscado

Y el archivo .sh.x.c es el código fuente en C del archivo.sh,este archivo en C se usa para crear el archivo encriptado

Bueno si lo ejecutan con el interprete no funcionara

bash archivo.sh

Lo tendremos que ejecutar dándole permisos de ejecución

chmod +x archivo.sh.x


./archivo.sh.x

Pero este archivo solo lo podremos usar nosotros,osea no lo podremos compartir con nadie

Ahora como compartir el script encriptado

Pues usando este código

shc -v -r -T -f archivo.sh

De esa manera podrás compartir el archivo,pero ecriptado

De hecho hasta le podemos poner fecha de caducidad por si queremos que al usarlo se pongan en contacto con notros o queramos venderlo,etc

Por ejemplo para que el convertidor de videos solo sirviera hasta el 21 del 12 del 2012 xD

Usaríamos este comando

shc-e-m 21/12/2012 "Lo siento el script ya no sirve ya se acabo el mundo xD"-f convertidor.sh

Y al ejecutarlo despues de esa fecha no se ejecutara se ejecutara el mensaje

Eso es todo, investiguen un poco mas sobre shc o sobre la ingeniería inversa si les interesa este tema





No hay comentarios.:

Publicar un comentario

Los comentarios serán revisados antes de ser publicados.