💾 Archived View for sl1200.dystopic.world › art › contactos.gmi captured on 2023-01-29 at 02:59:57. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Una agenda de contactos cifrada

2022-09-01

#contactos #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