
TOTP 기반 2단계 인증 코드를 관리하기 위한 간단하고 안전한 명령줄 도구.

커맨드라인용 Authy / Google Authenticator
Hotpot은 TOTP 기반 2단계 인증 코드를 관리하기 위한 간단하고 안전한 커맨드라인 도구입니다. 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을 실행하기만 하면 인터랙티브 대시보드가 열리며 다음을 수행할 수 있습니다:
대시보드는 250ms마다 자동으로 새로고침되며 터미널 크기 변경도 자연스럽게 처리합니다.
hotpot code <account-name>
예시:
hotpot code github
hotpot delete <account-name>
대시보드에서([E] 누름) 또는 다음 명령어를 사용하여 계정의 QR 코드를 내보낼 수 있습니다:
hotpot export-qr --name <account-name>
그러면 터미널에 인증 앱으로 스캔할 수 있는 QR 코드가 표시됩니다.
휴대용 구성이 필요하거나 키링에 접근할 수 없는 경우, --file 플래그를 사용하여 계정을 안전한 키링 대신 JSON 파일에 저장할 수 있습니다.
# 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
파일 기반 저장의 사용 사례:
보안 참고 사항: 파일 기반 저장은 비밀키를 평문 JSON으로 저장합니다. 적절한 파일 권한(600)을 설정하고, 민감한 환경에서는 파일 암호화를 고려하세요.
기본 보안 저장: Hotpot은 모든 비밀키를 시스템 키링에 안전하게 저장합니다:
파일 기반 저장: --file 플래그를 사용하면 계정이 지정된 경로의 JSON 파일에 저장됩니다. 파일은 적절한 권한(600)으로 생성되며, 필요한 경우 디렉토리도 자동으로 생성됩니다. 이 모드는 휴대용 구성이 필요하거나 키링 접근이 불가능한 환경에서 유용합니다.
cargo build --release
바이너리는 target/release/hotpot에서 확인할 수 있습니다.
이 프로젝트는 핵심 기능을 다루는 포괄적인 단위 테스트를 포함하고 있습니다:
cargo test
테스트 범위는 다음과 같습니다:
# 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은 보안과 유지보수성에 초점을 맞춘 모듈식 아키텍처로 제작되었습니다:
main.rs: CLI 인터페이스 및 저장소 관리totp.rs: 포괄적인 테스트 적용 범위를 갖춘 TOTP 알고리즘 구현(RFC 6238)dashboard.rs: 실시간 업데이트와 광범위한 단위 테스트를 갖춘 인터랙티브 터미널 UIlib.rs: 공통 오류 처리 및 공유 유틸리티keyring, base32, hmac, sha1/sha2clap, crossterm, rpasswordfuzzy-matcher, qrcode, arboardserde, serde_json, url, urlencodingimage, (QR 코드 감지)MIT 라이선스
기여는 언제나 환영합니다! 부담 없이 Pull Request를 제출해 주세요.
이 프로젝트는 높은 코드 품질 기준을 유지합니다:
cargo test 실행)cargo clippy 실행)rqrr