-- Leo's gemini proxy

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

-- Connected

-- Sending request

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

Un diario minimalista

2022-09-07

#bash #ccrypt #cifrado #terminal #linux

Hace un tiempo que utilizo jrnl.sh como software para redacción de mi diario cifrado. jrnl crea un archivo de texto incremental, con posibilidad de cifrarlo, en el que vas añadiendo entradas con facilidad desde el terminal. Tiene múltiples funcionalidades y funciona muy bien, pero he intentado, con mis escasos conocimientos, simplificar el asunto creando mi propio "software" o más bien método para tener mi propio diario, a costa claro, de perder alguna de las funcionalidades de jrnl. Así que me planteé dos posibilidades, la primera, un diario de texto plano sin cifrar, simplemente con un sencillo alias y la segunda, la creación de un diario cifrado con un spript.


Diario sin cifrado con un simple alias


Editamos el archivo ~/.bashrc añadiendo en una línea este texto, adáptalo a tu gusto:

   alias diario='echo -e "\n" >>~/Documentos/Diario ;
   date "+ ◽️ %a %d-%m-%y  %H:%M ">>~/Documentos/Diario ;
   echo -e $1>>~/Documentos/Diario'

Actualiza .bashrc con el comando "source ~/.bashrc". A partir de ahora podrás ir creando entradas al archivo Diario, por ejemplo:


   diario 'Hoy he tenido una dura mañana en el trabajo. Por la tarde he ido a comprar'

Para el caso de que quieras introducir saltos de línea, sería añadiendo "\n":

   diario 'Hoy he tenido una dura mañana en el trabajo.\nPor la tarde he ido a comprar'

Puedes acceder a leer el contenido del diario con los comandos less, cat o editores como nano, vim, neovim...


Diario cifrado con un simple script

Para disponer de un diario cifrado deberemos asegurarnos de tener instalado ccrypt, que el software de cifrado que usaremos. Si no lo tienes instalado hacerlo es tan fácil como "sudo apt-get install ccrypt". Hace unos meses redacté un tutorial de uso de ccrypt:


- Tutorial ccrypt


Para crear nuestro diario crearemos el archivo que lo contendrá, por ejemplo ~/Documentos/Diario y lo cifraremos con el comando "ccencrypt Diario".


Crearemos después dentro del directorio ~/bin (que está dentro del PATH, para que se pueda ejecutar desde cualquier otro directorio) un archivo de nombre "diario" con este contenido:


   #!/bin/bash

   # desciframos el archivo
   ccdecrypt ~/Documentos/Diario

   # añade una línea en blanco
   echo -e "\n" >>~/Documentos/Diario

   # añade la fecha actual
   date "+ ◽️ %a %d-%m-%y  %H:%M ">>~/Documentos/Diario

   #añadimos el texto que hemos puesto tras la orden "diario"
   echo -e $1>>~/Documentos/Diario

   #volvemos a cifrar el archivo
   ccencrypt ~/Documentos/Diario

   #borramos pantalla para evitar fisgones
   clear

Lo haremos ejecutable con el comando "chmod +x diario". Ahora desde cualquier ubicación en el PC podremos ir añadiendo entradas a nuestro diario cifrado de la misma forma que en el caso de un diario no cifrado anteriormente explicado. Se nos pedirá la contraseña de descifrado y después podremos introducir la misma u otra para volver a dejar el archivo cifrado.


Si quieres que las entradas que vayas añadiendo en tu diario no puedan ser vistas por alguien que acceda posteriormente al historial de tu terminal deberás poner un espacio en blanco antes del comando diario.

   # Así tu entrada en el diario podrá verse después consultando el historial:
   usuario@mipc:~$ diario 'Hoy todo ok'

   # Así tu entrada en el diario NO podrá verse después consultando el historial:
   usuario@mipc:~$  diario 'Hoy todo ok'

Si no queremos introducir ninguna contraseña cada vez que añadamos una nueva entrada al diario, podemos hacerlo con el argumento -k o --keyfile de ccrypt. Entonces podremos poner la contraseña en un archivo aparte, por ejemplo clave.key, para ccrypt la primera línea de ese archivo será la contraseña. Para que ningún otro usuario pueda acceder a leer el archivo clave.key sólo permitiré que mi usuario pueda acceder a él en lectura-escritura con el comando "chmod 600 clave.key". Parece menos seguro pero no habrá problema siempre y cuando nadie acceda a nuestro usuario. El script quedaría así:


   #!/bin/bash

   # desciframos el archivo
   ccdecrypt --keyfile ~/bin/clave.key ~/Documentos/Diario

   # añade una línea en blanco
   echo -e "\n" >>~/Documentos/Diario

   # añade la fecha actual
   date "+ ◽️ %a %d-%m-%y  %H:%M ">>~/Documentos/Diario

   #añadimos el texto que hemos puesto tras la orden "diario"
   echo -e $1>>~/Documentos/Diario

   #volvemos a cifrar el archivo
   ccencrypt --keyfile ~/bin/clave.key ~/Documentos/Diario

   #borramos pantalla para evitar fisgones
   clear

Para consultar el diario podemos optar por descifrar el archivo cifrado Diario.cpt con el comando ccdecrypt, volverlo a cifrar con ccencrypt y borrar el archivo no cifrado que nos queda, pero no es necesario todo este lío, ccrypt permite, con al comando ccat leer el contenido del archivo cifrado sin necesidad de llegar a generar el archivo descifrado. Lo leemos con ccat, así de fácil.

   ccat diario.cpt

Tras leer el contenido del archivo vemos que no se ha generado ningún archivo Diario no cifrado, sólo sigue existiendo el archivo cifrado Diario.cpt.


Pero al leer con ccat vemos que tras mostrar el contenido nos aparece el prompt, por lo tanto no podemos hacer búsquedas dentro del diario. Para poder hacer búsquedas redireccionaremos la salida de ccat a less, con la opción -k - , al introducir el comando la pantalla quedará en negro, ponemos entonces la contraseña y después less nos mostrará el contenido del diario.

   ccat -k - ~/Documentos/Diario.cpt | less

Una vez se visualiza el diario, con less, estas son algunas de las funciones disponibles:

- /palabra o fecha    Para hacer búsqueda en el diario
- 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

En mi caso he creado un simple alias para ver el contenido del diario:

   alias ccless='ccat -k - ~/Documentos/Diario.cpt | less'

Con todo lo explicado y sincronizando entre dispositivos con Syncthing, ya tengo mi diario cifrado, fácil de usar y sin necesidad de instalar nada.



Diario, versión 2.0

2022-10-18


Modificación para que el archivo del diario y el que contiene la clave se generen de forma automática.

La primera vez que se usa ya se puede introducir una primera entrada al diario como un argumento del script, al ejecutarlo te pedirá que crees una clave de cifrado.


#!/bin/bash
if [ ! -f ~/Documentos/Diario.cpt ];
then
     clear
     echo -e "\n\nVamos a crear su diario cifrado en la ruta ~/Documentos/Diario\n"
     read -p "Seleccione una contraseña para cifrarlo: " clave
     read -p "Vuelva a introducir la contraseña: " clave2
        if [[ $clave -eq $clave2 ]];
        then
           touch ~/bin/clave.key
           touch ~/Documentos/Diario
           echo "$clave" > ~/bin/clave.key
           clave=0
           chmod 600 ~/bin/clave.key
           echo -e "\n\n++++++MI DIARIO CIFRADO++++++" >>~/Documentos/Diario
           echo -e "\n" >>~/Documentos/Diario
           date "+ ◽️ %a %d-%m-%y  %H:%M ">>~/Documentos/Diario
           echo -e $1>>~/Documentos/Diario
           ccencrypt --keyfile ~/bin/clave.key ~/Documentos/Diario
           exit
        else
           echo -e "\n LAS CONTRASEÑAS NO SON IGUALES \n\n      VUELVA A INTENTARLO\n "
           exit
        fi
elif [ -f ~/Documentos/Diario.cpt ];
then
   ccdecrypt --keyfile ~/bin/clave.key ~/Documentos/Diario.cpt
   echo -e "\n" >>~/Documentos/Diario
   date "+ ◽️ %a %d-%m-%y  %H:%M ">>~/Documentos/Diario
   echo -e $1>>~/Documentos/Diario
   ccencrypt --keyfile ~/bin/clave.key ~/Documentos/Diario
   clear
else
   clear
fi

This work by SL1200 is licensed under CC BY 4.0


◄ BACK

🏠 Home

-- Response ended

-- Page fetched on Fri May 17 03:44:07 2024