Última actualización 15/05/2025
Gestor de contraseñas en terminal
Un gestor de contraseñas es una herramienta que permite almacenar y organizar contraseñas de forma segura, evitando que el usuario tenga que recordarlas todas manualmente. Estos programas utilizan métodos de cifrado para proteger los datos, de modo que solo el propietario legítimo pueda acceder a ellos. En este caso, las contraseñas están cifradas mediante GPG (GNU Privacy Guard), un sistema de criptografía asimétrica que garantiza que solo quien posea la clave privada correspondiente puede descifrar el contenido.
Este programa escrito en Go implementa una interfaz interactiva en terminal para gestionar contraseñas cifradas utilizando pass, el gestor de contraseñas basado en GPG. Hace uso de la biblioteca Bubble Tea para ofrecer una experiencia visual en modo texto que permite navegar jerárquicamente entre carpetas y archivos, similar a exploradores de archivos en terminal.
Al iniciar, el programa carga el directorio raíz del almacén de contraseñas y presenta su contenido en una vista por columnas. Cada archivo representa una contraseña cifrada, y las carpetas permiten organizar las entradas. El usuario puede desplazarse por el contenido usando las teclas h, j, k, l o las flechas del teclado, acceder a subdirectorios, abrir archivos de contraseña o activar un menú de edición con la tecla e.
Desde el menú de edición es posible realizar acciones como eliminar la carpeta actual (con confirmación), crear una nueva carpeta, renombrar la carpeta actual o entrar a un submenú para agregar nuevas contraseñas. Las contraseñas pueden generarse automáticamente usando openssl o ingresarse manualmente en un flujo de tres etapas: nombre, contraseña y confirmación. En ambos casos, la contraseña se guarda utilizando el comando pass.
Cuando se selecciona un archivo de contraseña, se presenta un menú con opciones para visualizar su contenido, copiarla al portapapeles o eliminarla con confirmación. Las acciones se implementan internamente ejecutando comandos como pass show, pass -c o pass insert, y la interfaz refleja estos cambios de inmediato.
El programa mantiene su estado mediante un modelo que contiene las columnas actuales, cursores de selección, modos activos (navegación, edición, submenús, confirmaciones) y mensajes temporales, como la notificación de que una contraseña fue copiada al portapapeles. La función Update procesa las teclas presionadas y actualiza el estado del modelo, mientras que View genera dinámicamente la interfaz de usuario en texto.
En conjunto, este programa permite gestionar contraseñas cifradas de forma segura y eficiente desde la terminal, combinando la robustez de pass con una interfaz visual que facilita la organización, navegación y edición sin necesidad de comandos manuales.
Actualmente sigo trabajando en este proyecto y afinando su funcionamiento. Cuando esté listo, lo publicaré para que cualquiera pueda utilizarlo y adaptarlo a sus necesidades.