
TOTPベースの二要素認証コードを管理するための、シンプルで安全なコマンドラインツール。

Authy / Google Authenticator のコマンドライン版。
Hotpot は、TOTPベースの二要素認証コードを管理する、シンプルで安全なコマンドラインツールです。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 を実行するだけでインタラクティブダッシュボードが開き、以下の操作が可能です。
ダッシュボードは250msごとに自動更新され、ターミナルサイズ変更にも適切に対応します。
hotpot code <account-name>
例:
hotpot code github
hotpot delete <account-name>
ダッシュボード([E]キー)またはコマンドを使用して、アカウントのQRコードをエクスポートできます。
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
ファイルバックアップストレージのユースケース:
セキュリティに関する注意: ファイルバックアップストレージはシークレットを平文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: インタラクティブターミナルUI、リアルタイム更新、広範なユニットテストlib.rs: 共通エラーハンドリングと共有ユーティリティkeyring, base32, hmac, sha1/sha2clap, crossterm, rpasswordfuzzy-matcher, qrcode, arboardserde, serde_json, url, urlencodingimage, (QRコード検出)MIT License
コントリビューションを歓迎します!気軽にプルリクエストを送信してください。
プロジェクトは高いコード品質基準を維持しています。
cargo test を実行)cargo clippy を実行)rqrr