💾 Archived View for sl1200.dystopic.world › art › diario.gmi captured on 2023-04-26 at 13:21:24. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
2022-09-07
#diario #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.
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...
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:
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.
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