Мне надоело постоянно использовать Google Authentificator и переключаться между ПК и телефоном для подтверждения двухфакторной аутентификации. Поэтому я сделал эту TUI, которая позволит хранить, управлять, просматривать, копировать 2FA ключ в пару нажатий.
Go2FA TOTP - это легковесное, терминальное приложение, предназначенное для безопасного хранения и управления вашими ключами Time-Based One-Time Password (TOTP).
TUI основан на bubbletea
- Безопасное хранение: Хранилище TOTP хранит ваши секретные в зашифрованном виде, гарантируя безопасность вашей чувствительной информации.
- Быстрый доступ: Легко копируйте коды TOTP с помощью одной команды, устраняя необходимость ручного ввода кодов или переключения между приложениями.
- Фильтрация: Организуйте свои TOTP-коды с помощью пользовательских имен, описание, что позволяет легко найти и получить доступ к кодам, которые вам нужны.
- Легковесность: Хранилище TOTP - это терминальное приложение, требующее минимальных системных ресурсов и не имеющее зависимостей, написанное на Go.
Homebrew (Linux/MacOS)
Убедитесь, что стоит Xclip или Xsel. Иначе не будет работать копирование.
brew install curkan/public/go2fa
go install github.com/curkan/go2fa@latest
Скачайте последний релиз и добавьте бинарник в ваш PATH.
Запустите с помощью команды go2fa
На экране просмотра ключей вы можете фильтровать, удалять и копировать нужный TOTP ключ.
d
- вызвать удаление (Enter - подтвердить, Esc - вернуться назад)enter
- скопировать в буфер обмена. При копировании левая граница становится толще./
- фильтрация по имени
Чтобы добавить новый ключ, введите Имя и SecretKey, Описание по желанию.
SecretKey формата base32 иначе отобьет ошибку.
Используется хранилище в формате JSON для дополнительной информации vault.json
При первом запуске приложение создаст publicKey и privateKey для шифрования вашего Vault.
{
"iterator": 4,
"db": "CtSRXlMkbXrMmLh/IeMiJCzRbzJkTMagWGVwnvaOkqroDUViVJaBaMbih258o..."
}
db
- зашифрованное поле, к котором хранится структура name, description, secretKey
iterator
- дополнительное поле, которое инкрементируется при каждом изменении хранилища. По iterator можно быстро понять, какая версия была предыдущая и восстановить его из бекапа.
JSON структура с открытым форматом была выбрана для удобного расширения приложения. Не все дополнительные поля должны быть зашифрованы.
Все используемые файлы хранятся в пути: $HOME/.local/share/go2fa
go2fa
├── backups
├── keys
└── stores
backups
- при добавлении/удалении ключей создаются бекапы с временем, когда произошло изменение. Это позволит вам восстановить нужную версию. Файлы бекапов шифрвуются, как и основной файл vault.json
keys
- хранятся privateKey и publicKey
└── keys
├── private.pem
└── public.pem
stores
- хранилища, на текущий момент только vault.json
- Добавить синхронизацию в Git репозиторием
- Добавить короткие команды, для быстрого получения в clipboard нужного TOTP
- Экран восстановления из бекапа
GO2FA лицензирован в соответствии с условиями лицензии MIT. Полный текст лицензии можно найти в файле LICENSE
.