Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Delacure Mihawk en 8 Septiembre 2011, 13:58 pm



Título: [BASH] Ayuda para mejorar
Publicado por: Delacure Mihawk en 8 Septiembre 2011, 13:58 pm
Bueno pues por culpa del warzone, se me paso por la cabeza hacer un mini scrip para descifrar el cifrado de julio cesar (más info+ (http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar)), y ya que estaba me propuse también añadir la función de cifrar, hace bastante que no toco bash, y antes tampoco es que supiera mucho.. El scrip funciona, que era mi objetivo, pero estoy bastante seguro de que se puede mejorar, y ahí mi pregunta--> ¿Como lo abrías echo vosotros?

Código:
#!/bin/bash
#
### DeCrip
#
function decrip(){
DIRS=`dirs`
clear
echo "Intrudueix el missatge xifrat:"
# echo "introduce el mensaje cifradado:"
read MISS
echo $MISS | tr "a-z" "b-za" >> Decript.txt
echo $MISS | tr "a-z" "c-zab" >> Decript.txt
echo $MISS | tr "a-z" "d-za-c" >> Decript.txt
echo $MISS | tr "a-z" "e-za-d" >> Decript.txt
echo $MISS | tr "a-z" "f-za-e" >> Decript.txt
echo $MISS | tr "a-z" "g-za-f" >> Decript.txt
echo $MISS | tr "a-z" "h-za-g" >> Decript.txt
echo $MISS | tr "a-z" "i-za-h" >> Decript.txt
echo $MISS | tr "a-z" "j-za-i" >> Decript.txt
echo $MISS | tr "a-z" "k-za-j" >> Decript.txt
echo $MISS | tr "a-z" "l-za-k" >> Decript.txt
echo $MISS | tr "a-z" "m-za-l" >> Decript.txt
echo $MISS | tr "a-z" "n-za-m" >> Decript.txt
echo $MISS | tr "a-z" "o-za-n" >> Decript.txt
echo $MISS | tr "a-z" "p-za-o" >> Decript.txt
echo $MISS | tr "a-z" "q-za-p" >> Decript.txt
echo $MISS | tr "a-z" "r-za-q" >> Decript.txt
echo $MISS | tr "a-z" "s-za-r" >> Decript.txt
echo $MISS | tr "a-z" "t-za-s" >> Decript.txt
echo $MISS | tr "a-z" "u-za-t" >> Decript.txt
echo $MISS | tr "a-z" "v-za-u" >> Decript.txt
echo $MISS | tr "a-z" "w-za-v" >> Decript.txt
echo $MISS | tr "a-z" "x-za-w" >> Decript.txt
echo $MISS | tr "a-z" "y-za-x" >> Decript.txt
echo $MISS | tr "a-z" "za-y" >> Decript.txt
echo "25 possibilidades generadas 100%"
echo "Decript.txt guardado en $DIRS "
echo  
echo "----------------------------------------------------"
}
#############################
#
### Encrip
#
function encrip(){
while :
do
  echo "Número de desplaçaments? (1-25)"
# echo "numero de desplazamientos? (1-25)"
  read NUMERO
  echo "Escriu el missatge a cifrar (recorda no utilitzar la 'ñ' ni cap caràcter especial):"
# echo " Escribe el mensaje a cifrar (recuerda no utilizar la letra 'ñ' ni ningún carácter especial.)
  read MIS
  case $NUMERO in
1) echo $MIS | tr "a-z" "b-za";menu;;
2) echo $MIS | tr "a-z" "c-zab";menu;;
3) echo $MIS | tr "a-z" "d-za-c";menu;;
4) echo $MIS | tr "a-z" "e-za-d";menu;;
5) echo $MIS | tr "a-z" "f-za-e";menu;;
6) echo $MIS | tr "a-z" "g-za-f";menu;;
7) echo $MIS | tr "a-z" "h-za-g";menu;;
8) echo $MIS | tr "a-z" "i-za-h";menu;;
9) echo $MIS | tr "a-z" "j-za-i";menu;;
10) echo $MIS | tr "a-z" "k-za-j";menu;;
11) echo $MIS | tr "a-z" "l-za-k";menu;;
12) echo $MIS | tr "a-z" "m-za-l";menu;;
13) echo $MIS | tr "a-z" "n-za-m";menu;;
14) echo $MIS | tr "a-z" "o-za-n";menu;;
15) echo $MIS | tr "a-z" "p-za-o";menu;;
16) echo $MIS | tr "a-z" "q-za-p";menu;;
17) echo $MIS | tr "a-z" "r-za-q";menu;;
18) echo $MIS | tr "a-z" "s-za-r";menu;;
19) echo $MIS | tr "a-z" "t-za-s";menu;;
20) echo $MIS | tr "a-z" "u-za-t";menu;;
21) echo $MIS | tr "a-z" "v-za-u";menu;;
22) echo $MIS | tr "a-z" "w-za-v";menu;;
23) echo $MIS | tr "a-z" "x-za-w";menu;;
24) echo $MIS | tr "a-z" "y-za-x";menu;;
25) echo $MIS | tr "a-z" "za-y";menu;;
  esac
done
}
#
#################
##### Menu ######
#################
#
function menu(){
while :
do
  echo
  echo
  echo "Elige una opcion"
  echo "1) cifrar"
  echo "2) descifrar"
  echo "3) Salir"
  read OPCION
  case $OPCION in
    1)
encrip;;
    2)
decrip;;
    3)
echo
echo "byee :)"
echo
exit
   esac
done
}

####### Executem/ejecutamos el menu ###########
menu

Y tambien un par de preguntas:

1-  al principio hago DIRS=`dirs`  para luego echo "Decript.txt guardado en $DIRS " , estoy seguro de que hay alguna forma más limpia de indicar donde se crea el archivo de texto  :xD
2- y en la funcion "while" si alguien me puede explicar el significado de los dos puntos " : ", me lo imagino pero no estoy 100% seguro xdd

salu2.