#!/bin/bash ## Generador de claves JAZZTEL_XXXX y WLAN_XXXX ## aabilio@gmail.com ## License: http://en.wikipedia.org/wiki/WTFPL function sumar_error () { echo $1 let ERRNO=$ERRNO+1 } function comprobar_errores() { if [ $ERRNO -gt 0 ] then echo echo "Usage: $0 " echo " Example: $0 WLAN_XXXX XX:XX:XX:XX:XX:XX" exit 1 fi } function sacar_claves () { #Pasar a mayúsculas el wlan_xxxx y coger solo los "xxxx" ESSId=$(echo -n "$1" | tr 'a-z' 'A-Z' | cut -d_ -f2) #Pasar a mayúsculas el XX:XX:XX:XX:XX y quitar los dos puntos ":" BSSId=$(echo -n "$2" | tr 'a-z' 'A-Z' | tr -d :) #Cogemos del BSSId solo los 8 primeros caracteres: BSSId8=$(echo -n "$BSSId" | cut -c-8) #Hacemos la suma md5 de bcgbghgg$BSSId8$ESSId$BSSId (20 primeros caracteres): CLAVE=$(echo -n bcgbghgg$BSSId8$ESSId$BSSId | md5 | cut -c-20) } function mostrar_claves () { echo "ESSID: "$1 echo "BSSID: "$2 echo "CLAVE: "$3 } ################################ MAIN ################################## ERRNO=0 #Comprobamos errores de lanzamiento: # - Argumentos distinto de dos: if [ $# -ne 2 ] then sumar_error "ERROR EN EL NÚMERO DE PARÁMETROS" fi compEssid=0 cEssid=$(echo $1 | tr 'a-z' 'A-Z') cBssid=$(echo $2 | tr 'a-z' 'A-Z') #Comprobar primer parámetro en escritura y largura: echo $1 | tr 'a-z' 'A-Z' | grep ^WLAN_[0-9A-F][0-9A-F][0-9A-F][0-9A-F]$ > /dev/null if [ $? -ne 0 ]; then let compEssid=$compEssid+1; fi echo $1 | tr 'a-z' 'A-Z' | grep ^JAZZTEL_[0-9A-F][0-9A-F][0-9A-F][0-9A-F]$ > /dev/null if [ $? -ne 0 ]; then let compEssid=$compEssid+1; fi if [ $compEssid -eq 2 ]; then sumar_error "ESSID INVÁLIDO"; fi #Comprobar segundo parámetro en escritura y largura: echo $2 | tr 'a-z' 'A-Z' | grep ^[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]$ > /dev/null if [ $? -ne 0 ] then sumar_error "BSSID INVÁLIDO" fi comprobar_errores sacar_claves $1 $2 mostrar_claves $cEssid $cBssid $CLAVE