Estas aquiContenido / Cómo convertir tu memoria externa en la llave de tu distribución

Cómo convertir tu memoria externa en la llave de tu distribución


Porantoniofelixes- Publicado el05 Noviembre 2008

Por Antonio Félix Enríquez

Leyendo por una wiki encontré un artículo que me facilitó un poco de imaginación y ánimos para intentar mejorar un script que parecía bastante interesante.

La cuestión es utilizar el número de serie de una memoria externa (pen-drive, mp3, mp4, etcétera) para hacer una comprobación al inicio del sistema y permitir el acceso o no.

Yo utilizo Slackware en su versión más reciente 12.1, pero el script que mostraré a continuación podría valer en la mayoría de las distribuciones...

 

(Descargar script).

 

Continúo para explicar el uso, aunque se puede apreciar lo fácil que resulta el script en cuestión (cabe aclarar que no soy ningún experto en bash).

Lo primero que tendríamos que hacer es conectar nuestro dispositivo de almacenamiento externo al pc y más tarde:

./script.sh listar

Resultado:

 

 

Ahí pueden ver el número de serie del dispositivo que conecte al pc, 125101124CD30002.

Ahora tendríamos que modicar el script y añadir los cuatro primeros dígitos o carácteres a la variable ID.

ID="1251"

Luego aún con el dispositivo conectado, tendríamos que lanzar nuevamente el script:

./script.sh generar

Resultado:

 

 

Ahí pueden apreciar el hash md5 (cc888a28ab2f035e4737a2086a3f19d6) del número de serie del dispositivo que conecte al pc, nuevamente modificaremos el script y añadiremos el hash a la variable HASHSTATIC.

HASHSTATIC="cc888a28ab2f035e4737a2086a3f19d6"

Ahora sólo tendrán que lanzar el script con el argumento "autentificar".

./script.sh autentificar

Por último comentar que es conveniente lanzar el script como un usuario sin privilegios, pues el script no requiere ningún privilegio en especial. También comentar para los usuarios de slackware que deberían añadir una entrada al fichero de configuración rc.local (/etc/rc.d/rc.local) para que el script se inicie durante el arranque del sistema.

su user -c "/usr/local/bin/script.sh autentificar"

 

Referencias:

Etiquetas

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).

La segunda foto está duplicada y no muestra el cálculo del MD5 del ID del dispositivo.

Gracias por el aviso.

Se podría arrancar con una live cd y cargarse el script sin problemas, ¿no?

¿Y en caso de fastidiarse el usb?

El script publicado en la página está mal, en cambio el que está en el tarball para descargar sí está bien.

Un saludo.

-------------------------
Hay muchas maneras de matar y una de ellas es el silencio.

A lo burro! ;)

Y muchas gracias Antonio por el trabajo.

Como pequeña critica, tienes varios UUOC (useless use of cat: http://partmaps.org/era/unix/award.html).
En las lineas en las que haces "cat /proc/bus/usb/devices | awk '/SerialNumber/ {print $2}'" puedes ahorrarte un proceso y usar simplemente el awk,
asi: "awk '/SerialNumber/ {print $2}' /proc/bus/usb/devices".

Por lo demas un articulo muy interesante.
Un saludo.

Y no se puede matar el script con Control+C aunque lo pongas en el rc.local ??

#!/bin/bash
trap 'echo "no me he muerto, je je je, no quiero terminar pero si me lo pides por favor..."' 1 2 3 15

while true
do
   echo "hola, aqui estoy"
   read a
   if [ "$a" = "por favor termina" ]
   then
      echo "ok."
      exit
   fi
done

Alejandro Nestor Vargas

En mi PC no funciona el script, ya que parece ser que en Ubuntu 8.04 no se crea la carpeta /proc/bus/usb/, y en su lugar utiliza sysfs.

De todos modos, dudo mucho que incluso teniendo ese directorio pueda funcionar, ya que el script intenta acceder a los parámetros con los que fue llamado ($0, $1) desde dentro de la función check_serial, lo cuál es imposible a no ser que le paséis los parámetros a la función manualmente: check_serial $@

Bueno, en general no acabo de entender por qué el autor ha introducido comprobaciones de parámetros del programa dentro de la función check_serial(), entre otras muchas cosas. No os lo toméis a mal, pero no estáis acostumbrados a programar shell scripts, ¿verdad?

Muchas gracias Antonio por compartir!

Saludos.-

Patrocinadores

Kriptópolis alojado en
Zilos-Veloxia Network

Tu mejor defensa:
Bufet Almeida