
Простой и безопасный инструмент командной строки для управления кодами двухфакторной аутентификации на основе TOTP.

Authy / Google Authenticator для командной строки.
Hotpot — это простая и безопасная утилита командной строки для управления TOTP-кодами двухфакторной аутентификации. Hotpot безопасно хранит ваши секреты 2FA в системной связке ключей и генерирует одноразовые пароли по времени, когда они вам нужны.
Создана на Rust для безопасности, производительности и надежности.
Клонируйте репозиторий и выполните:
cargo install --path . --locked
hotpot add <account-name>
Вас попросят ввести секрет Base32 в защищенном режиме.
Пример:
hotpot add github
Enter the Base32 secret: ********
hotpot --load-image /path/to/qr-code.png
Или используйте интерактивный захват скриншота в панели, нажав [A] затем [S].
Просто запустите hotpot, чтобы открыть интерактивную панель, где вы можете:
Панель автоматически обновляется каждые 250 мс и корректно обрабатывает изменение размера терминала.
hotpot code <account-name>
Пример:
hotpot code github
hotpot delete <account-name>
Вы можете экспортировать QR-код для учетной записи либо через панель (нажав [E]), либо с помощью команды:
hotpot export-qr --name <account-name>
Это отобразит QR-код в терминале, который можно отсканировать приложениями-аутентификаторами.
Для переносимых конфигураций или когда доступ к связке ключей невозможен, вы можете использовать флаг --file для хранения учетных записей в JSON-файле вместо защищенной связки ключей.
# Интерактивная панель с файловым хранилищем
hotpot --file ~/.config/hotpot/accounts.json
# Добавление учетной записи в файл
hotpot --file ./my-accounts.json add work-account
# Генерация кода из учетной записи в файле
hotpot --file ./my-accounts.json code work-account
# Удаление учетной записи из файла
hotpot --file ./my-accounts.json delete work-account
Сценарии использования файлового хранилища:
Замечание по безопасности: Файловое хранилище сохраняет секреты в виде plaintext JSON. Убедитесь, что установлены правильные права доступа (600), и рассмотрите возможность шифрования файла для конфиденциальных сред.
Хранилище по умолчанию (защищенное): Hotpot хранит все секреты в системной связке ключей:
Файловое хранилище: При использовании флага --file учетные записи сохраняются в JSON-файл по указанному пути. Файл создается с соответствующими правами доступа (600), а директории создаются автоматически при необходимости. Этот режим полезен для переносимых конфигураций или когда доступ к связке ключей невозможен.
cargo build --release
Бинарный файл будет доступен по пути target/release/hotpot
Проект включает комплексные модульные тесты, покрывающие основную функциональность:
cargo test
Покрытие тестов включает:
# Запуск в режиме разработки
cargo run
# Запуск с определенными аргументами
cargo run -- add github
# Тестирование с файловым хранилищем
cargo run -- --file test-accounts.json add test-account
# Проверка качества кода
cargo clippy
# Быстрая проверка компиляции
cargo check
Hotpot построен с модульной архитектурой, ориентированной на безопасность и удобство сопровождения:
main.rs: CLI-интерфейс и управление хранилищемtotp.rs: Реализация алгоритма TOTP (RFC 6238) с комплексным покрытием тестамиdashboard.rs: Интерактивный терминальный интерфейс с обновлениями в реальном времени и обширными модульными тестамиlib.rs: Общая обработка ошибок и вспомогательные утилитыkeyring, base32, hmac, sha1/sha2clap, crossterm, rpasswordfuzzy-matcher, qrcode, arboardserde, serde_json, url, urlencodingЛицензия MIT
Вклад приветствуется! Не стесняйтесь отправлять Pull Request.
Проект поддерживает высокие стандарты качества кода:
cargo test)cargo clippy)imagerqrr