-- Leo's gemini proxy

-- Connecting to sl1200.dystopic.world:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=es-ES

Una agenda de contactos cifrada

2022-09-01

#cifrado #bash #terminal #linux

Quería una agenda de contactos cifrada y extremadamente sencilla apoyada en un archivo de fácil cifrado y descifrado. Para ello me he apoyado en estos comandos:


- select, para crear un menú.

- ccrypt, para cifrar. Si no lo tienes, instálalo.

- less, para visualizar el contenido de la salida de ccat (ccrypt) y hacer búsquedas en los contactos

- sed, para poder eliminar contactos a partir de su nombre.

- sort, para ordenar alfabéticamente la salida.

- column, para que la visualización de columnas sea adecuada.


En el proceso de entrada y eliminación de contactos he reducido a un instante el tiempo durante el cual el archivo de contactos existe descifrado en el pc, y para la visualización y búsqueda de contactos, con ccat y less ni tan siquiera llega a generarse el archivo descifrado. Es lo más cercano que he encontrado a lo que sería eso que llaman "cifrado homomórfico", que todavía parece que no existe.


Primeros pasos


Para empezar deberás crear el archivo de contactos y cifrarlo manualmente con ccencrypt, por ejemplo el archivo ~/Documentos/contactos, tras cifrarlo el archivo quedará como contactos.cpt


Para que ccrypt lea automáticamente la contraseña de cifrado para la creación o eliminación de contactos, deberás crear un archivo cuya primera línea será la contraseña, en mi caso es el archivo ~/Documentos/clave.key. A ese archivo dale permiso de lectura y escritura sólo para tu usuario, con "chmod 600 clave.key". Para la lectura y búsqueda de contactos sí que deberás introducir la contraseña. No es del todo seguro pero si nadie se loguea por tí en tu PC supongo que no habrá ningún problema, y si extraen tu archivo de contactos, pues estará cifrado.


Si seleccionas la opción de visualizar contactos, la pantalla se pondrá en negro, introduce entonces la contraseña de cifrado y visualizarás el contenido del archivo de contactos. También podrás buscar y moverte por el listado de contactos con estas opciones, que son las del comando less:


- /palabra Para hacer una búsqueda, se resaltarán los resultados

- n Se va al siguiente resultado de búsqueda

- N Se va al anterior resultado de búsqueda

- q Salimos al prompt

- g Ir al principio

- 20g Ir a la línea 20

- G Ir al final del documento

- 45p o 45% Ir al 45% del documento

- j,k, 10j,5j,3k... Como en VIM, j,k nos movemos hacia abajo o arriba


Script en bash de una agenda de contactos cifrada:


Este es el script, crea un archivo en un directorio que esté incluido en el $PATH para que sea ejecutable desde cualquier directorio. En mi caso tengo el script en el archivo ~/bin/contactos . Copia el contenido del script en ese archivo y haz el archivo ejecutable con 'chmod +x contactos'.

Y ya está, ejecuta 'contactos' y ya tienes una agenda telefónica cifrada.


   #!/bin/bash

   #Creamos un menú con select
   echo -e "\n=====AGENDA DE CONTACTOS CIFRADA=====\n"
   PS3="Selecciona una opción: "
   select opt in "- Añadir un contacto " "- Eliminar contacto " "- Mostrar contactos " "- Salir ";
   do
      case $opt in


         "- Añadir un contacto ")
         echo -e "\n=== AÑADE UN CONTACTO ===\n"
         #introducimos los datos del contacto
               read -p "  Nombre y apellidos : " name
               read -p "  Teléfono fijo      : " phone
               read -p "  Teléfono móvil     : " mobile
               read -p "  email              : " email
               read -p "  Otros              : " other

         #desciframos el archivo de contactos cifrado
         ccdecrypt --keyfile ~/Documentos/clave.key ~/Documentos/contactos.cpt

         #añadimos línea en el archivo de contactos con el nuevo contacto
         echo $name";"$phone";"$mobile";"$email";"$other >> ~/Documentos/contactos

         #como daremos a intro para saltar algunos campos, sustituimos ;; por ;-;
         sed -i 's/;;/;-;/g' ~/Documentos/contactos

         #ciframos el archivo de nuevo
         ccencrypt --keyfile ~/Documentos/clave.key ~/Documentos/contactos
         ;;


         "- Eliminar contacto ")
         read -p "Nombre del contacto a eliminar : " remove

         #desciframos el archivo de contactos cifrado
         ccdecrypt --keyfile ~/Documentos/clave.key ~/Documentos/contactos.cpt

         #eliminamos la línea corresponciente al contacto a eliminar
         sed -i "/^${remove}/d" ~/Documentos/contactos

         #ciframos el archivo de nuevo
         ccencrypt --keyfile ~/Documentos/clave.key ~/Documentos/contactos
         ;;


         "- Mostrar contactos ")
         ccat -k - ~/Documentos/contactos.cpt | sort | column -t -s ";" | less
         ;;


         "- Salir ")
         echo -e "\nSu agenda de contactos está cifrada.\nHasta luego.\n"
         break
         ;;


         *)
         echo "$REPLY no es una opción válida"
         ;;


      esac
   done


This work by SL1200 is licensed under CC BY 4.0


◄ BACK

🏠 Home

-- Response ended

-- Page fetched on Fri May 17 03:41:27 2024