PassForge - 올인원 비밀번호 생성기 CLI
프로덕션 준비 완료, 암호학적으로 안전한 비밀번호 생성기 CLI로, 17가지 생성 모드, 엔트로피 투명성 및 포괄적인 사용자 정의 옵션을 제공합니다.



기능
17가지 생성 모드
| 생성기 | 명령어 | 설명 |
|---|
| 랜덤 | random, r | 암호학적으로 안전한 무작위 문자 비밀번호 |
| 패스프레이즈 | phrase, p | EFF 단어 목록을 사용한 단어 기반 패스프레이즈 |
| 리트스피크 | leet, l | 문자 치환(A→4, E→3 등)이 적용된 패스프레이즈 |
| PIN | pin | 구성 가능한 길이의 숫자 PIN |
| 발음 가능 | pronounce, pr | 말하기 쉬운 음절 기반 비밀번호 |
| UUID | uuid, u | RFC 4122/9562 UUID(v1, v4, v7) 및 짧은 UUID(Base58) |
| Base64 | base64, b64 | URL 안전 base64 인코딩 시크릿 |
| JWT 시크릿 | jwt | JWT 서명(HS256/384/512)을 위한 고엔트로피 시크릿 |
| WiFi 키 | wifi | WPA2/WPA3 호환 키(8-63자) |
| 라이선스 키 | license | 소프트웨어 라이선스 키(AxB 형식, 예: 5x5) |
| 복구 코드 | recovery | 2FA 백업 코드(숫자 또는 단어 기반) |
| OTP 코드/시크릿 | otp | TOTP/HOTP 코드 및 시크릿, otpauth URI 포함 |
| 패턴 | pattern | 시각적 그리드 기반 패턴 비밀번호 |
| 테마 프레이즈 | phrase (사용자 지정) | 테마 단어 목록(동물, SF 등)을 사용한 패스프레이즈 |
| NATO 음성 | phonetic, ph | 텍스트/비밀번호를 NATO 알파벳(Alpha-Bravo)으로 변환 |
| 분석 | analyze, check | 기존 비밀번호의 강도 분석 |
| 기록 | history | 비밀번호 생성 기록 보기(기본 10개 항목) |
- 사전 설정 프로필: 일반적인 사용 사례에 대한 원클릭 생성(Strong, Memorable, Dev 등)
- 대화형 메뉴: 안내식 생성을 위한 완전한 기능의 메뉴
- 플랫폼 런처: 대화형 메뉴가 포함된 전용
.bat 및 .sh 스크립트
- 암호학적 보안: CSPRNG를 위해 Python의
secrets 모듈 사용
- 엔트로피 투명성: 실시간 엔트로피 계산 및 강도 분석
- zxcvbn 분석: 패턴 기반 비밀번호 강도 확인(사전 공격, 시퀀스)
- 안전한 클립보드: 구성 가능한 시간 초과 후 자동 클립보드 지우기
- 실시간 OTP 코드: 시크릿과 함께 현재 6/8자리 TOTP 코드 생성
- OTP용 QR 코드: 인증 앱용 스캔 가능 QR 코드
- 색상 코드 출력: 문자 유형 간 시각적 구분
- JSON 내보내기: 스크립팅을 위한 기계 판독 가능 출력
- 균형 모드: 읽기 가능한 분포 보장(문자 60%, 숫자 20%, 기호 20%)
- 생성기 가이드: 14개 생성기 유형에 대한 포괄적인 문서.
- 암호화된 기록(Vault): AES-128(Fernet)을 사용하여 저장된 비밀번호 자동 암호화.
- 안전한 Vault 저장소: 전용 vault는
.env(권장) 또는 엄격한 0600 파일 권한이 있는 레거시 .vault.key를 통해 암호화 키를 처리합니다.
- 제로 누출 아키텍처: 🛡️ PWA 모드에서 브라우저 액세스로부터 소스 코드 및 로그 차단; 엔트로피 분석을 위해 CLI 모드에서 민감한 입력이 마스킹됩니다.
- 편집된 내보내기: 기본적으로 비밀번호가 자동 편집되는 보안 우선 기록 내보내기
- 제로 들여쓰기 UI: 모든 모드에서 깔끔하고 전문적인 왼쪽 정렬 출력
- 스마트 리트스피크: 보다 자연스럽고 읽기 쉬운 비밀번호를 위한 확률적 치환
- 강력한 유효성 검사: 기본값과 재귀적 오류 처리가 포함된 대화형 프롬프트
- 방어적 PWA 프론트엔드: 🛡️ CDN 자산에 대한 내장 안전 검사로 초기화 충돌 방지.
- 전역 수정자:
--easy-read 및 --easy-say 모드
- 편집증 모드: 최대 보안을 위해 키보드 타이밍 지터를 통한 선택적 수동 엔트로피 수집.
설치
# 저장소 복제
git clone https://github.com/krishnakanthb13/password_generator.git
cd password_generator
# 의존성 설치 (colorama, cryptography, pyperclip 등)
pip install -r requirements.txt
빠른 시작
# 20자 랜덤 비밀번호 생성
python main.py random -l 20
# 4단어 패스프레이즈 생성
python main.py phrase -w 4 --capitalize
# 리트스피크 패스프레이즈 생성
python main.py leet -w 3 -s _
# 엔트로피 분석과 함께 생성
python main.py --show-entropy random -l 16
# 대화형 모드 실행
python main.py --interactive
# 사전 설정 프로필 사용 (Strong)
python main.py --preset strong --show-entropy
사용 예제
랜덤 비밀번호
# 기본 16자 비밀번호
python main.py random
# 24자, 문자만
python main.py random -l 24 --no-symbols --no-digits
# 읽기 쉬운 (0/O, 1/l/I 제외)
python main.py --easy-read random -l 20
# 최소 요구 사항 포함
python main.py random -l 16 --min-upper 2 --min-digits 2 --min-symbols 1
# 균형 모드 (대부분 문자, 적은 기호)
python main.py random -l 24 --balanced
패스프레이즈
# 표준 4단어 패스프레이즈
python main.py phrase -w 4
# 대문자화 및 밑줄 구분자
python main.py phrase -w 5 -s _ --capitalize
# 교차 대소문자 (높은 엔트로피)
python main.py phrase -w 4 -s . --alternate
# 출력: aPpLe.bAnAnA.cHeRrY.dAtE
# 모두 대문자 및 하이픈 구분자 (높은 엔트로피)
python main.py phrase -w 4 -s . --uppercase
# 출력: APPLE-BANANA-CHERRY-DATE
# 리트스피크 버전 (스마트 50% 치환)
python main.py leet -w 4 -s -
# 출력: 4PPl3.8@N@[email protected]
# 테마 패스프레이즈 ('animals.txt' 사용)
python main.py phrase -w 4 --capitalize --wordlist data/wordlists/animals.txt
# 출력: Tiger-Falcon-Shark-Wolf
소프트웨어 키 (A x B)
# 5개 세그먼트, 각 5자
python main.py license --segments 5 --segment-length 5
# 4개 세그먼트, 각 8자
python main.py license --segments 4 --segment-length 8
개발자 토큰
# HS256용 JWT 시크릿
python main.py jwt --bits 256
# Base64 API 키
python main.py base64 -b 32 --url-safe
# UUID 토큰 (v4 랜덤)
python main.py uuid --upper
# UUID v7 (시간 기반, 정렬 가능)
python main.py uuid --ver 7
# 또는 단축 명령어
python main.py uuid --v7
# 짧은 UUID (Base58 인코딩, ~22자)
python main.py uuid --short
# 단축 명령어로 v7 UUID 생성
python main.py u --v7
# 10개의 짧은 v4 UUID 생성
python main.py uuid --v4 --short -n 10
# NATO 음성 변환
python main.py phonetic --text "PassForge"
# 출력: Papa-Alpha-Sierra-Sierra-Foxtrot-Oscar-Romeo-Golf-Echo
보안 및 로깅
# 기존 비밀번호 분석
python main.py analyze "p@ssword123"
# 기록에 로그
python main.py --log random -l 16
# 마지막 10개 기록 항목 보기 (기본)
python main.py history
# 모든 기록 항목 보기 (실시간 복호화)
python main.py history --all
# 편집된 비밀번호로 기록 보기
python main.py history --redact
# 기록 내보내기 (기본 편집됨)
python main.py history --export backup.json
# 기록 내보내기 (평문 - 주의 필요)
python main.py history --export secrets.csv --no-redact
# 스크립트용 JSON 출력
python main.py --json jwt --bits 256
명령어 참조
| 플래그 | 설명 |
|---|
--preset | 사전 정의된 보안 프로필 사용 (strong, memorable, dev, pin, web, wifi, key) |
-i, --interactive | 대화형 메뉴 모드 실행 |
--paranoid | 편집증 모드 활성화 (수동 엔트로피 수집) |
--json | JSON 형식으로 출력 |
--show-entropy | 엔트로피 분석 표시 (런처에서 기본 활성화) |
--check-strength | zxcvbn 패턴 분석 실행 |
-c, --clipboard | 결과를 클립보드에 복사 |
--confirm-copy | 클립보드 복사 전 확인 프롬프트 표시 |
--clipboard-timeout | N초 후 클립보드 자동 지우기 (기본: 30) |
--log | 비밀번호를 기록에 로그 (AES-128 암호화) |
--no-color | 색상 출력 비활성화 |
--easy-read | 모호한 문자 제외 (0/O, 1/l/I) |
--easy-say | 발음 가능한 문자만 (기호 없음) |
생성기별 옵션
랜덤 (random, r)
| 플래그 | 기본값 | 설명 |
|---|
-l, --length | 16 | 비밀번호 길이 (4-1024) |
--no-uppercase | - | 대문자 제외 |
--no-lowercase | - | 소문자 제외 |
--no-digits | - | 숫자 제외 |
--no-symbols | - | 기호 제외 |
--include | - | 포함할 추가 문자 |
--exclude | - | 제외할 문자 |
--no-repeats | - | 반복 문자 없음 |
--min-upper | 0 | 최소 대문자 수 |
--min-lower | 0 | 최소 소문자 수 |
--min-digits | 0 | 최소 숫자 수 |
--min-symbols | 0 | 최소 기호 수 |
--balanced | - | 균형 비율 (60/20/20) |
-n, --count | 1 | 생성할 개수 |
패스프레이즈 (phrase, p)
| 플래그 | 기본값 | 설명 |
|---|
-w, --words | 4 | 단어 수 (2-64) |
-s, --separator | - | 단어 구분자 |
--capitalize | - | 각 단어 대문자화 |
--uppercase | - | 모든 단어 대문자 |
--alternate | - | 교차 대소문자 (aLtErNaTe) |
--wordlist | - | 사용자 정의 단어 목록 경로 |
-n, --count | 1 | 생성할 개수 |
리트스피크 (leet, l)
| 플래그 | 기본값 | 설명 |
|---|
-w, --words | 3 | 단어 수 (2-64) |
-s, --separator | - | 단어 구분자 ( - _ . , ) |
-n, --count | 1 | 생성할 개수 |
PIN (pin)
| 플래그 | 기본값 | 설명 |
|---|
-l, --length | 6 | PIN 길이 (4-64) |
-n, --count | 1 | 생성할 개수 |
발음 가능 (pronounce, pr)
| 플래그 | 기본값 | 설명 |
|---|
-l, --length | 12 | 비밀번호 길이 (4-128) |
-n, --count | 1 | 생성할 개수 |
UUID (uuid)
| 플래그 | 기본값 | 설명 |
|---|
--ver | 4 | UUID 버전 (1, 4, 7) |
--short | - | 짧은 형식 (Base58) |
--upper | - | 대문자 출력 (16진수만) |
-n, --count | 1 | 생성할 개수 |
Base64 (base64, b64)
| 플래그 | 기본값 | 설명 |
|---|
-b, --bytes | 32 | 랜덤 바이트 수 |
--url-safe | - | URL 안전 문자 사용 |
JWT 시크릿 (jwt)