
命令行版的 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 许可证
欢迎任何形式的贡献!请随时提交拉取请求。
该项目保持较高的代码质量标准:
cargo test)cargo clippy)rqrr