Ir al contenido

Recommended Posts

Muy buenas compañeros linuxeros :P

 

Me gustaria compartir con vosotros un pequeño proyecto que surgio al estudiar en clase los comandos gpg.

Estabamos estudiandos las distintas ordenes de este comando y me parecia un poco engorroso el tener que andar escribiendo todo cuando querias ejecutar una simple opcion. Asique me pregunte si habia forma de hacer algun tipo de script que automatizara el proceso. Y ahi es donde surgio ese proyecto :P

 

Aqui os muestro la imagen de la primera version que hice,a la que le faltaban algunas funciones. El codigo contiene el resto de funciones restantes :P

 

*

 

Y por ultimo os dejo el codigo en bash de la version final que hice con los cambios y funciones añadidas. (Probado en Mint y Ubuntu es posible que no funciones en otras versiones)

 

 

 

#!/bin/bash
# Autor: Sergio B.

# Declaro los colores
amarillo='\033[1;33m'
rojo='\033[1;31m'
verde='\033[1;32m'
azul='\033[1;34m'
morado='\033[1;35m'
marron='\033[0;33m'
normal='\033[0m' # color por defecto

# Empezamos con el programa
clear
echo "${rojo}//=======================================================================//${normal}"
echo "${amarillo}"
echo "                            GPG Órdenes Automatizadas"
echo
echo "${amarillo}                        ================================"
echo "${amarillo}                        =    Diseñado por Sergio B.    ="
echo "${amarillo}                        ================================"
echo 
echo "${amarillo}                                    V 4.0               "
echo "${rojo}//=======================================================================//${normal}"
echo
while [ "$opcion" != 20 ]
do
 echo ${azul}" Escoja una opcion "${normal}
 echo "1. Listar claves públicas"
 echo "2. Listar claves privadas"
 echo "3. Listar huella de usuario"
 echo ${morado}"4. Generar anillo de confianza"
 echo "5. Generar par de claves"${normal}
 echo ${amarillo}"6. Exportar clave pública"
 echo "7. Exportar clave privada"
 echo "8. Exportar huella de usuario"
 echo "9. Exportar revocación"${normal}
 echo ${azul}"10. Importar clave pública"
 echo "11. Importar clave privada"
 echo "12. Importar revocación"${normal}
 echo ${verde}"13. Cifrar archivo con la clave pública"
 echo "14. Descifrar archivo con la clave privada"${normal}
 echo ${marron}"15. Cifrar archivo con algoritmo simetrico"
 echo "16. Descifrar archivo con algoritmo simetrico"${normal}
 echo ${morado}"17. Enviar clave pública al servidor RedIRIS"
 echo "18. Buscar clave pública en el servidor RedIRIS"
 echo "19. Enviar revocación al servidor RedIRIS"${normal}
 echo "20. Salir"
 read -p "Seleccione una opcion [1 - 20]" opcion
 case $opcion in
 
  1) echo
  echo ${verde}
  gpg --list-public-keys
  echo ${normal};; 
  
  2) echo
  echo ${verde}
  gpg --list-secret-keys
  echo ${normal};;
  
  3) echo
  echo ${verde}
  gpg --fingerprint
  echo ${normal};;
  
  4)
  echo
  echo ${verde}
  gpg -k
  echo ${verde};;
  
    5)
  echo
  echo ${verde}
  gpg --gen-key
  echo ${normal};;
  
  6) echo ${verde}
  echo 'Introduce el '${rojo}'ID del usuario'${verde}' a exportar y pulsa Enter.'
  read usuario1
  echo
  if [ -d "$usuario1" ];
  then
  gpg -a --export echo $usuario1 >  "$usuario1"/'pública.asc'
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'pública.asc'
  echo ${normal}
  else
  mkdir "$usuario1"
  gpg -a --export echo $usuario1 >  "$usuario1"/'pública.asc'
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'pública.asc'
  echo ${normal}
  fi;;
  
    7) echo ${verde}
  echo 'Introduce el '${rojo}'ID del usuario '${verde}'a exportar y pulsa Enter.'
  read usuario1
  echo
  if [ -d "$usuario1" ];
  then
  gpg -a --export-secret-key echo $usuario1 > "$usuario1"/'privada.asc'
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'privada.asc'
  echo ${normal}
  else
  mkdir "$usuario1"
  gpg -a --export-secret-key echo $usuario1 > "$usuario1"/'privada.asc'
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'pública.asc'
  echo ${normal}
  fi
  ;;
  
    8) echo ${verde}
  echo 'Introduce el '${rojo}'ID del usuario '${verde}'a exportar y pulsa Enter.'
  read usuario1
  echo
  if [ -d "$usuario1" ];
  then
  gpg --fingerprint echo $usuario1 > "$usuario1"/'huella.asc'
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'huella.asc'
  echo ${normal}
  else
  mkdir "$usuario1"
  gpg --fingerprint echo $usuario1 > "$usuario1"/'huella.asc'
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'huella.asc'
  echo ${normal}
  fi
  ;;
  
     9) echo ${verde}
  echo 'Introduce el '${rojo}'ID numérico del usuario'${verde}' a exportar y pulsa Enter.'
  read usuario1
  echo
  if [ -d "$usuario1" ];
  then
  gpg --output "$usuario1"/'revo.asc' --gen-revoke $usuario1 
  echo
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'revo.asc'
  echo ${normal}
  else
  mkdir "$usuario1"
   gpg --output "$usuario1"/'revo.asc' --gen-revoke $usuario1
  echo
  echo 'Exportado al directorio '${rojo} $PWD/$usuario1 ${verde}' con el nombre '${rojo}'revo.asc'
  echo ${normal}
  fi
  ;;
  
     10) echo ${verde}
  echo 'El archivo a importar ha de estar en el mismo directorio que este script.'
  echo 'Introduce el nombre del archivo a importar.'
  read archivo1
  echo
  gpg --import $archivo1
  echo
  echo ${normal};;
  
      11) echo ${verde}
  echo 'El archivo a importar ha de estar en el mismo directorio que este script.'
  echo 'Introduce el nombre del archivo a importar.'
  read archivo1
  echo
  gpg --allow-secret-key-import --import $archivo1
  echo
  echo ${normal};;
  
    12) echo ${verde}
  echo 'El archivo a importar ha de estar en el mismo directorio que este script.'
  echo 'Introduce el nombre del archivo a importar.'
  read archivo1
  echo
  gpg --import $archivo1
  echo
  echo ${normal};;
  
      13) echo ${verde}
  echo 'Introduce el '${rojo}'ID numérico del usuario'${verde}' con el que cifraras.'
  read usuariocodi1
  echo 'Introduce el nombre del archivo a cifrar.'
  read nombrecodi1
  echo
  if [ -d "Cifrados" ];
  then
  gpg --encrypt --recipient $usuariocodi1 $nombrecodi1 
  sleep 3
  mv $nombrecodi1'.gpg' 'Cifrados'
  echo
  echo 'Guardado en el directorio '${rojo} $PWD/'Cifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'.gpg'
  echo ${normal}
  else
  mkdir "Cifrados"
   gpg --encrypt --recipient $usuariocodi1 $nombrecodi1 
sleep 3
    mv $nombrecodi1'.gpg' 'Cifrados'
  echo
  echo 'Guardado en el directorio '${rojo} $PWD/'Cifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'.gpg'
  echo ${normal}
  fi;;
  
      14) echo ${verde}
  
  echo 'Introduce el nombre del archivo a descifrar.'
  read nombrecodi1
  if [ -d "Descifrados" ];
  then
  gpg -o $nombrecodi1'des.txt' -d $nombrecodi1 
sleep 3
   mv $nombrecodi1'des.txt' 'Descifrados'
  echo
  echo 'Guardado en el directorio '${rojo} $PWD/'Descifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'des.txt'
  echo ${normal}
  else
  mkdir "Descifrados"
  gpg -o $nombrecodi1'des.txt' -d $nombrecodi1 
sleep 3
   mv $nombrecodi1'des.txt' 'Descifrados'
    echo
  echo 'Guardado en el directorio '${rojo} $PWD/'Descifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'des.txt'
  echo ${normal}
  fi;;
  
     15) echo ${verde}
  
  echo 'Introduce el nombre del archivo a cifrar.'
  read nombrecodi1
  if [ -d "Cifrados" ];
  then
  gpg -a --symmetric --cipher-alg AES -o $nombrecodi1'sim.asc' $nombrecodi1
  sleep 3
   mv $nombrecodi1'sim.asc' 'Cifrados'
  echo
 echo 'Guardado en el directorio '${rojo} $PWD/'Cifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'sim.asc'
  echo ${normal}
  else
   mkdir "Cifrados"
  gpg -a --symmetric --cipher-alg AES -o $nombrecodi1'sim.asc' $nombrecodi1
  sleep 3
 mv $nombrecodi1'sim.asc' 'Cifrados'
  echo
  echo 'Guardado en el directorio '${rojo} $PWD/'Cifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'sim.asc'
  echo ${normal}
  fi;;
  
   16) echo ${verde}
  
  echo 'Introduce el nombre del archivo a descifrar.'
  read nombrecodi1
  if [ -d "Descifrados" ];
  then
  gpg --decrypt -o $nombrecodi1'simdes.txt' $nombrecodi1
  sleep 3
   mv $nombrecodi1'simdes.txt' 'Descifrados'
  echo
  echo 'Guardado en el directorio '${rojo} $PWD/'Descifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'simdes.txt'
  echo ${normal}
  else
   mkdir "Descifrados"
    gpg --decrypt -o $nombrecodi1'simdes.txt' $nombrecodi1
	sleep 3
   mv $nombrecodi1'simdes.txt' 'Descifrados'
  echo
  echo 'Guardado en el directorio '${rojo} $PWD/'Descifrados'${verde}' con el nombre '${rojo}''$nombrecodi1'simdes.txt'
  echo ${normal}
  fi;;
  
   17)  echo ${verde}
  echo 'Introduce el '${rojo}'ID numerico del usuario'${verde}' a enviar y pulsa Enter.'
  read usuario1
  echo
  gpg --keyserver pgp.rediris.es --send-key "$usuario1"
  echo 'Enviada la clave del usuario '${rojo} $usuario1 ${verde}
  echo ${normal}
  ;;
   
     18)  echo ${verde}
  echo 'Introduce un '${rojo}'identificativo del usuario'${verde}' a buscar y pulsa Enter.'
  read usuario1
  echo
  gpg --keyserver pgp.rediris.es --search-keys "$usuario1"
  echo ${normal}
  ;;
  
       19)  echo ${verde}
  echo 'Introduce el '${rojo}'ID del usuario'${verde}' al que'${rojo}' YA'${verde} 'importaste la revocación y pulsa Enter.'
  read usuario1
  echo
  gpg --keyserver pgp.rediris.es --send "$usuario1"
  echo ${normal}
  ;;
  
  20) exit 0;;
  
  *) echo "$opc es una opcion invalida.";
   echo "Presiona una tecla para continuar...";
   read foo;;
 esac
done

 

 

 

Sois libres de modificar el codigo a vuestro antojo, lo unico que pido es que añadais vuestros cambios en este mensaje para que todos disfrutemos de ello,y si me nombrais es los creditos mejor que mejor jaja.

 

Un saludo Vagos :P

Editado por elmoyer

Compartir este post


Enlace al post
Compartir en otros sitios

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder en este tema...

×   Has incluido contenido con formato.   Eliminar formato

  Sólo se permiten 75 emoticonos como máximo.

×   Tu enlace ha sido insertado automáticamente.   Deshacer y mostrar como enlace

×   Su contenido anterior ha sido restaurado.   Limpiar editor

×   No puedes pegar imágenes directamente. Súbelas a algún hosting de imágenes y pega la dirección URL

Conéctate para seguir esto  

×
×
  • Crear Nuevo...