
Una herramienta de línea de comandos simple y segura para gestionar códigos de autenticación de dos factores basados en TOTP.

Authy / Google Authenticator para la línea de comandos.
Hotpot es una herramienta de línea de comandos sencilla y segura para gestionar códigos de autenticación de dos factores basados en TOTP. Hotpot almacena de forma segura tus secretos 2FA en el llavero de tu sistema y genera contraseñas de un solo uso basadas en el tiempo cuando las necesitas.
Construido con Rust para garantizar seguridad, rendimiento y fiabilidad.
Clona este repositorio y ejecuta
cargo install --path . --locked
hotpot add <account-name>
Se te pedirá que introduzcas el secreto Base32 de forma segura.
Ejemplo:
hotpot add github
Enter the Base32 secret: ********
hotpot --load-image /path/to/qr-code.png
O usa la captura de pantalla interactiva del panel pulsando [A] y luego [S].
Simplemente ejecuta hotpot para abrir el panel interactivo donde puedes:
El panel se actualiza automáticamente cada 250 ms y gestiona correctamente el redimensionamiento de la terminal.
hotpot code <account-name>
Ejemplo:
hotpot code github
hotpot delete <account-name>
Puedes exportar un código QR de una cuenta desde el panel (pulsa [E]) o mediante el comando:
hotpot export-qr --name <account-name>
Esto mostrará un código QR en la terminal que las aplicaciones de autenticación pueden escanear.
Para configuraciones portables o cuando el acceso al llavero no esté disponible, puedes usar la opción --file para almacenar las cuentas en un archivo JSON en lugar del llavero seguro.
# Interactive dashboard with file storage
hotpot --file ~/.config/hotpot/accounts.json
# Add account to file
hotpot --file ./my-accounts.json add work-account
# Generate code from file-stored account
hotpot --file ./my-accounts.json code work-account
# Delete account from file
hotpot --file ./my-accounts.json delete work-account
Casos de uso del almacenamiento basado en archivo:
Nota de seguridad: el almacenamiento basado en archivo guarda los secretos en JSON en texto plano. Asegúrate de que los permisos del archivo sean adecuados (600) y considera cifrar el archivo en entornos sensibles.
Almacenamiento seguro predeterminado: Hotpot guarda todos los secretos de forma segura en el llavero de tu sistema:
Almacenamiento basado en archivo: al usar la opción --file, las cuentas se almacenan en un archivo JSON en la ruta especificada. El archivo se crea con permisos adecuados (600) y los directorios se crean automáticamente si es necesario. Este modo es útil para configuraciones portables o cuando el acceso al llavero no esté disponible.
cargo build --release
El binario estará disponible en target/release/hotpot
El proyecto incluye pruebas unitarias exhaustivas que cubren la funcionalidad principal:
cargo test
La cobertura de pruebas incluye:
# Run in development mode
cargo run
# Run with specific arguments
cargo run -- add github
# Test with file storage
cargo run -- --file test-accounts.json add test-account
# Check code quality
cargo clippy
# Quick compile check
cargo check
Hotpot está construido con una arquitectura modular centrada en la seguridad y el mantenimiento:
main.rs: interfaz CLI y gestión de almacenamientototp.rs: implementación del algoritmo TOTP (RFC 6238) con cobertura de pruebas exhaustivadashboard.rs: interfaz de terminal interactiva con actualizaciones en tiempo real y amplias pruebas unitariaslib.rs: manejo de errores común y utilidades compartidaskeyring, base32, hmac, sha1/sha2clap, crossterm, rpasswordfuzzy-matcher, qrcode, arboardserde, serde_json, url, urlencodingLicencia MIT
¡Las contribuciones son bienvenidas! No dudes en enviar una Pull Request.
El proyecto mantiene altos estándares de calidad de código:
cargo test)cargo clippy)imagerqrr