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
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...
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:
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 ??
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.-