PassForge - オールインワンパスワード生成CLI
本番環境対応の、暗号学的に安全なパスワード生成CLI。17の生成モード、エントロピーの透明性、包括的なカスタマイズオプションを備えています。



機能
17の生成モード
| ジェネレーター | コマンド | 説明 |
|---|
| ランダム | random, r | 暗号学的に安全なランダム文字パスワード |
| パスフレーズ | phrase, p | EFF単語リストを使用した単語ベースのパスフレーズ |
| リーター(Leetspeak) | leet, l | 文字置換(A→4、E→3など)を含むパスフレーズ |
| PIN | pin | 長さ設定可能な数字PIN |
| 発音可能 | pronounce, pr | 話しやすい音節ベースのパスワード |
| UUID | uuid, u | RFC 4122/9562 UUID(v1、v4、v7)およびショート(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(推奨)またはレガシー.vault.keyにより暗号鍵を管理(厳格な0600パーミッション)
- ゼロリーク設計: 🛡️ 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)