CÓMO: Cifrar un script de shell en un sistema basado en Linux o Unix
Propósito: Esta entrada de blog le explicará cómo cifrar un script de shell en Linux o un sistema basado en Unix. Aunque puede haber otras maneras de cifrar la secuencia de comandos shell me pareció que éste era el más fácil de usar. Vamos a cifrar la secuencia de comandos usando la SHC utilidad. He estado usando esta utilidad desde el pasado 3 años y funciona muy bien en situaciones donde se desea que los usuarios ejecutar el script de shell, pero al mismo tiempo no quiere que vean el código fuente del script de shell. Así que vamos a empezar ...
Paso 1: Descargar u obtener la fuente
Afortunadamente Debian Etch tiene . "deb" paquete para la utilidad shc así que vamos a usar. En un sistema Debian Etch hacer:
# apt-get update;
# apt-get install shc
Ahora vaya al paso 3 si usted está en un sistema Debian Etch. Si usted está en un sistema de Lenny luego siga el paso 2.
Si usted está en el sistema Debian Lenny (posibilidades son muy altas), entonces usted tendrá que descargar el archivo ". Deb" archivo del repositorio Debian Etch. Usted o descargarlo desde aquí o se puede dar el siguiente comando:
# apt-get update; apt-get install wget
# wget http://http.us.debian.org/debian/pool/main/s/shc/shc_3.8.6-2_i386.deb
Esto descargará el archivo llamado shc_3.8.6-2_i386.deb en el directorio desde el que dio la orden anterior.
Si usted está en un sistema que no sea Debian, puede descargar el archivo tar desde aquí o dando el comando:
fedora# wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz
Paso 2: Instale el archivo (sólo para usuarios de Debian Lenny o Debian Sid) "deb".
. "Deb" Una vez que haya descargado el archivo en su sistema Linux, instalarlo con el comando dpkg:
# dpkg -i <file-you-downloaded-from-step1>
Example:
# dpkg -i shc_3.8.6-2_i386.deb
Sólo tiene que hacer lo anterior en un sistema de Lenny. Si usted está en un sistema Debian Etch que se instale automáticamente.
Paso 3: Cifrar el script de shell
Ahora controlar la secuencia de comandos de shell que desea cifrar. En este ejemplo, vamos a utilizar una secuencia de comandos de shell bash llamado cleanlog.sh cuyos contenidos son los siguientes:
#!/bin/bash
echo "Starting to clear Log files..."
cd /var/log;
find ./ -type f -print >> list.txt
cat list.txt | while read a_line
do
cat /dev/null > $a_line;
done
cd;
echo "Log files cleared!"
Ahora le damos el siguiente comando para cifrar la secuencia de comandos shell:
# shc -f cleanlog.sh
Se cuenta que el comando anterior crea dos archivos:
# ls -l
cleanlog.sh.xc
cleanlog.sh.x
cleanlog.sh.x - es el archivo binario de cifrado que se utilizará
cleanlog.sh.xc - es el archivo de código fuente de C.
Básicamente, las cubiertas de comandos SHC el script del shell en un programa de C primero y luego se compila el programa C en un binario utilizando un algoritmo de cifrado:
Shell script-> C Programa> código fuente ejecutable binario
Usted puede eliminar el archivo cleanlog.sh.xc y la secuencia de comandos shell original, cleanlog.sh, segura.
Paso 4: Ejecutar el script shell encriptado
Ahora ya está listo para ejecutar el script shell:
# ./cleanlog.sh
Starting to clear Log files...
Log files cleared!
#
Notas adicionales
1. Hay algunas interesantes características que se pueden activar haciendo pasar algunas opciones para el comando shc. Por ejemplo, haga lo siguiente:
# shc -v -r -f cleanlog.sh
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc cleanlog.sh.xc -o cleanlog.sh.x
shc: strip cleanlog.sh.x
shc: chmod go-r cleanlog.sh.x
#
Las opciones anteriores:
"-F" - Indica que el nombre del archivo a continuación y se debe dar cada vez.
"-V" - Indica comando shc ser verboase
"-R" - Indica comando shc para relajar las medidas de seguridad, es decir hacer un binario redistribuible que se ejecuta en diferentes sistemas que ejecutan el mismo sistema operativo (de la página man).
Así, por ejemplo, si se intenta ejecutar el binario generado en el paso 4 (es decir, sin dar la opción "-r") en un sistema Linux diferente (copiando el archivo ejecutable desde el sistema en el que se compiló a otro sistema Linux) que no será capaz de ejecutarlo y recibirá un mensaje de error como este:
system2# ./cleanlog.sh.x
./cleanlog.sh.x: ªÃ¨«ZÉÆ¥«ÞÀãì+
ï'ÛìHhas expired!
Please contact your provider
system2:~#
2. Además, hay otras opciones como la continuación de lo cual se puede probar:
-E fecha Fecha de vencimiento en formato dd / mm / aaaa [ninguna]Mensaje-m mensaje que se mostrará al vencimiento ["Póngase en contacto con su proveedor "]
# shc -v -r -e 01/17/2009 -m "Your program has expired" -f cleanlog.sh
3. Si se obtienen los siguientes mensajes de error al dar el comando anterior:
# shc -f cleanlog.sh
cleanlog.sh.xc:108:22: error: sys/stat.h: No such file or directory
cleanlog.sh.xc:109:23: error: sys/types.h: No such file or directory
cleanlog.sh.xc:111:19: error: errno.h: No such file or directory
cleanlog.sh.xc:112:19: error: stdio.h: No such file or directory
cleanlog.sh.xc:113:20: error: stdlib.h: No such file or directory
cleanlog.sh.xc:114:20: error: string.h: No such file or directory
cleanlog.sh.xc:115:18: error: time.h: No such file or directory
cleanlog.sh.xc:116:20: error: unistd.h: No such file or directory
cleanlog.sh.xc: In function 'key_with_file':
cleanlog.sh.xc:178: error: array type has incomplete element type
cleanlog.sh.xc:179: error: array type has incomplete element type
cleanlog.sh.xc:185: warning: incompatible implicit declaration of built-in function 'memset'
.....................
.....................
a continuación, dar el siguiente comando:
# apt-get install gcc libc6-dev
Por último, pero no menos importante. No hay garantía de que esta utilidad le proporcionará una fuerte protección de seguridad. Los usuarios experimentados o hackers que tienen conocimientos suficientes sobre "gdb" u otras herramientas de depuración puede descifrar la secuencia de comandos shell. A pesar de que son un buen punto de comenzar a cifrar (ocultar) los scripts de shell de los usuarios "normales" si usted es un administrador del sistema.
Eso es todo amigos. Disfrute de cifrar las secuencias de comandos de shell.













27 de enero 2009 a las 23:17
Gran mensaje
Tengo un problema:
[Root @ CRBC-SRV-SYSLOG SHC-3.8.6] # shc-f test.sh
sh: cc: comando no encontrado
shc: Éxito
Se crea el archivo test.sh.xc pero no más.
Se parece a una gran aplicación, pero ¿cómo puedo conseguir que funcione?
test.sh:
! # / Bin / sh
echo "Esto es una prueba!
Responder a este comentario
Kushal Responder:
27 de enero 2009 a las 23:36
¿Ha instalado gcc? hacer:
apt-get update
apt-get install gcc libc6-dev
Si esto no funciona, entonces me dejó saber qué Distro estás usando ....
Gracias por tu comentario.
Responder a este comentario
SeeFor Responder:
28 de enero 2009 a las 14:56
Eso lo hizo, gracias por su ayuda.
Esta es una buena manera de proteger sus scripts de shell.
Gracias,
Sif
Responder a este comentario
28 de enero 2009 a las 2:55 pm
Eso lo hizo gracias, estoy usando Fedora 10
Gracias por la ayuda, esto es realmente genial manera de proteger sus scripts de shell.
Responder a este comentario
12 de marzo 2009 a las 5:23 am
Gracias amigo!
Usted ha hecho mi día :) ¡Funciona!
Responder a este comentario
26 de julio 2009 a las 13:59
gracias por este post
pero después me cifrada uno de mis scripts bash y funciona bien
tuve un problema con mi disco duro y tengo sólo la secuencia de comandos cifrada con mi amigo
¿hay alguna manera de descifrar estos archivos?
algunos de estos guiones necesidad de actualización y es sobre la línea 900 no puedo escribirla de nuevo
por favor hágamelo saber si hay alguna manera posible de descifrar estos archivos
Responder a este comentario
Admin Responder:
26 de julio 2009 a las 8:15 pm
Hmm ... supongo que no viste que viene ... Bueno, yo puedo decir dos cosas:
a) Trate de leer el código fuente y ver si puede obtener alguna pista desde allí sobre la forma de desmontarla. Que yo sepa, el script utiliza el algoritmo RC4 para cifrar.
b) Trate de correo electrónico del autor y ver si responde de nuevo. Lo más probable es que no.
http://www.datsi.fi.upm.es/ ~ frosal /
Responder a este comentario
contenedores Responder:
13 de febrero 2013 a las 7:21 am
ejecutar la secuencia de comandos y abrir otra terminal y escriba ps-ef | grep nombre del guión
Responder a este comentario
21 de septiembre 2009 a las 14:18
que tiene un problema.
siempre que intente encrpyt un guión que da este error. Estoy intentando utilizar el comando esperar en el guión, así que estoy adivinando shc no lo reconoce
aquí el error.
shell Desconocido shc (espera): especifique [-i] [-x] [-l]
shc: Éxito
Gracias de antemano
Responder a este comentario
Admin Responder:
23 de septiembre 2009 a las 22:42
Parece que esperar es algún tipo de programa interactivo. Nunca lo he usado, así que no tengo mucha idea. Parece que esperan comando espera (sin doble sentido) algún tipo de entrada de datos. Si usted puede enviar su parte del guión en el que usted está teniendo problemas puede ser que puedo darte más ideas?
Responder a este comentario
Mohammed Responder:
09 de febrero 2010 a las 2:37 am
Usted puede utilizar tclkit y Starkit para cifrar esperar scripts.
Consulte http://www.equi4.com/ para más detalles.
~ Mohammed
Responder a este comentario
16 de abril 2010 a las 10:06 am
El comando ps interruptores con-fwwu seguirá mostrando el guión original. Aparte de añadir un montón de comentarios en blanco al principio de la secuencia de comandos, ¿tiene usted alguna idea de cómo evitar esto?
Responder a este comentario
18 de mayo 2010 a las 7:30 am
¿Puedo tener shell cifrado shc utilidad en mi sistema operativo Red Hat Enterprise Linux. Por favor, dame ligarse a tener el RPM para la misma y el procedimiento a seguir la instalación de la misma.
Responder a este comentario
03 de junio 2010 en 1:00
Maddy,
mira esto:
http://www.linuxsecurity.com/content/view/117920/49/1/1/
~ Mohammed
Responder a este comentario
23 de agosto 2010 a las 23:49
[...] Esto también puede ser serviciales: Cifrado Cifrado de scripts de shell scripts de shell 2 cordial saludo, [...]
25 de agosto 2010 a las 3:12 am
Hola,
Estoy usando SHC-3.8.6-1 bajo Centos. No tengo ningún error al compilar los scripts de shell. Pero creo que tengo después de error al ejecutar el archivo ejecutable test.sh.x o C del script correspondiente.
-Bash:. / Test.sh.x: Permiso denegado
¿Cuál es el problema con shc alguna idea por favor.
Gracias,
Haridas N.
Responder a este comentario
01 de octubre 2010 a las 9:07 am
Hola,
durante la compilación a través shc de test.sh da error siguiente:
[Ghoshd @ / home / ghoshd] #. / SHC-f test.sh
ksh:. / shc: no se puede ejecutar
[Ghoshd @ / home / ghoshd] # w
[Ghoshd @ / home / ghoshd] # ll shc
-Rwxrwxrwx 1 ghoshd orasupp 39767 10 de julio 2006 shc
[Ghoshd @ / home / ghoshd] #
anyidea?
gracias,
Dipankar
Responder a este comentario
Admin Responder:
01 de octubre 2010 a las 9:18 am
Usted está tratando de ejecutar el comando "SHC" como ". / Shc" lo cual es incorrecto. Sólo se utiliza la sintaxis de los scripts. Lo que necesita es la siguiente:
# Shc-f test.sh
# Sh tesh.sh
o
#. / Test.sh
Espero que está claro ahora.
Responder a este comentario
11 de octubre 2010 a las 11:09 am
Yo puedo crear con éxito * archivos sh.x pero cuando trato de ejecutar los recibiré el siguiente error.:
somefilename.sh.x: command not found
Responder a este comentario
Admin Responder:
19 de octubre 2010 a las 4:26 pm
¿Hizo el archivo ejecutable?
Pruebe:
# Sh somefilename.sh.x
Responder a este comentario
19 de octubre 2010 a las 19:54
Gracias por su respuesta. Voy a probar esto y cruzar los dedos. He tratado esto en el remate 4 r1 "start cd persistente" y después de obtener el "comando no encontrado" error de mi disco llena lentamente (4% a la izquierda y luego 0%) y luego simplemente Nuke El disco USB y empezar de nuevo . Estaba empezando a pensar shc era un virus :-)
Responder a este comentario
27 de octubre 2010 a las 4:18 am
He intentado compilar mi script con el comando siguiente
SHC-r-v-f
cuando me encontré con el. / scriptname.sh.x, funciona!
pero cuando copié el scriptname.sh.x a otra máquina linux, darle el permiso (chmod 777), se genera un error ...
-Bash: scriptname.sh.x: no puede ejecutar el archivo binario
alguna idea?
Responder a este comentario
09 de febrero 2011 a las 14:02
Estoy en una máquina de 64 bits de Ubuntu 10.10. He seguido las instrucciones anteriores para hacer que el archivo binario (update.sh.x) que no se puede ejecutar la secuencia de comandos.
$. / Update.sh.x
No se permite la operación:. / Update.sh.x
Muerto
Cuando hice el archivo me encontré con un par de líneas que pueden no haber parecido bien. Esto es lo que me dieron en el terminal. ¿Alguien puede tener sentido de todo esto?
$ SHC-v-e 01/01/2020-m "El script de actualización ha caducado"-f update.sh
shc shll = fiesta
shc [-i] =-c
shc [-x] = exec '% s' "$ @"
shc [-l] =
shc opciones =
shc: cc update.sh.xc-o update.sh.x
update.sh.xc: En la función 'chkenv':
update.sh.xc: 269: aviso: reparto de puntero a entero de tamaño diferente
shc: Tira update.sh.x
shc: chmod go-r update.sh.x
Responder a este comentario
01 de abril 2011 en 12:39a.m.
He cargado shc en RHEL 5.2.
Tengo un script cifrado con la utilidad como test1.sh.x utilizando
SHC-v-r-f test1.sh
Intenté funcionar esto en otra máquina con Red Hat Enterprise Linux 4.4, se está dando un error de punto flotante.
¿Pueden ayudarme.
Responder a este comentario
20 de junio 2011 a las 3:55 am
[...] Fonte: http://linux.koolsolutions.com [...]
16 de septiembre 2011 a las 13:29
¿Funciona con guión awk implementado en shell script?
Responder a este comentario
18 de noviembre 2011 a las 18:47
Tuve que descargar el archivo tar, extraerlo, make install, y las obras de comandos SHC. También tengo las correctas libc6 archivos. Cuando ejecuto shc-f scriptname.sh me da:
shc: primera línea no válido en la escritura: cd / root / Escritorio
shc: Éxito
No crea ningún archivo.
??
Responder a este comentario
01 de febrero 2012 a las 5:45 am
Cómo convers. X archivo a código estándar. Código SH
Responder a este comentario
01 de marzo 2012 a las 18:50
en Centos 6.2, he instalado SHC con la versión rpm es SHC-3.8.6-1.el6.rf.i686
He corrido
# SHC-v-e 01/01/2013-m "Por favor, encontrar la versión actualizada"-f ll.sh
Ahora archivos ll.sh.x y ll.sh.xc están ahí, pero cuando voy a ejecutar ll.sh.x así
SH ll.sh.x o. / ll.sh.x
me da error:
ll.sh.x: ll.sh.x: no puede ejecutar el archivo binario
$ File ll.sh.x
ll.sh.x: ejecutable ELF 32-bit LSB, Intel 80386, versión 1 (SYSV), vinculada dinámicamente (usa librerías compartidas), para GNU / Linux 2.6.18, despojado
haga el favor de ayudarme a este respecto?
Gracias por un buen puesto tal, me ayuda mucho
Me quedo con éxito estos comandos y scripts en CentOS 5 veces
pero el problema es en CentOS 6.2
Responder a este comentario
25 de mayo 2012 a las 12:37a.m.
Me estoy poniendo un
. / Test.sh: ha expirado!
Por favor, póngase en contacto con su proveedor de
¿Alguna idea?
Responder a este comentario