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 | 既存のパスワードの強度を分析 |
|
- プリセットプロファイル: 一般的なユースケース(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 および モード
インストール
# リポジトリをクローン
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
コマンドリファレンス
ジェネレーター固有オプション
ランダム(random, r)
パスフレーズ(phrase, p)
リーター(leet, l)
PIN(pin)
| フラグ | デフォルト | 説明 |
|---|
-l, --length | 6 | PIN長(4~64) |
-n, --count | 1 | 生成数 |
発音可能(pronounce, pr)
| フラグ | デフォルト | 説明 |
|---|
-l, --length | 12 | パスワード長(4~128) |
-n, --count | 1 | 生成数 |
UUID(uuid)
Base64(base64, b64)
| フラグ | デフォルト | 説明 |
|---|
-b, --bytes | 32 | ランダムバイト数 |
--url-safe | - | URLセーフ文字を使用 |
JWTシークレット(jwt)
| フラグ | デフォルト | 説明 |
|---|
--bits | 256 | ビット長(256、384、512) |
--hex | - | 16進数文字列として出力 |
WiFiキー(wifi)
| フラグ | デフォルト | 説明 |
|---|
-l, --length | 24 | キー長(8~63、デフォルト: 24) |
--simple | - | 英数字のみ(記号なし) |
ライセンスキー(license)
| フラグ | デフォルト | 説明 |
|---|
--segments | 4 | セグメント数(2~64) |
--segment-length | 4 | セグメントあたりの文字数(2~32) |
リカバリーコード(recovery)
OTPシークレット(otp)
| フラグ | デフォルト | 説明 |
|---|
--digits | 6 | コード桁数(6または8) |
--period | 30 | 時間間隔(秒) |
パターン(pattern)
| フラグ | デフォルト | 説明 |
|---|
--grid | 3 | グリッドサイズ(例:3x3) |
フォネティック(phonetic, ph)
| フラグ | デフォルト | 説明 |
|---|
--text | - | NATOアルファベットに変換するテキスト |
-l, --length | 8 | ランダムシーケンス長(4~64) |
履歴(history)
エントロピーガイド
PassForgeは、生の文字プールサイズ、シャノンビット、ブルートフォース推定時間を含む包括的なエントロピーレポートを提供します。
注: 各ジェネレータータイプの詳細な説明については、LITERATURE.mdを参照してください。
プロジェクト構造
password_generator/
├── main.py # エントリーポイント
├── requirements.txt # 依存関係
├── src/
│ ├── __init__.py
│ ├── cli.py # 引数パーサー & バナー
│ ├── command_handler.py # コマンドルーティング
│ ├── interactive.py # インタラクティブメニュー
│ ├── generators/ # すべてのパスワードジェネレーター
│ │ ├── base.py # 抽象基底クラス
│ │ ├── random_password.py # ランダムパスワードジェネレーター
│ │ ├── passphrase.py # パスフレーズジェネレーター
│ │ ├── leetspeak.py # リータージェネレーター
│ │ ├── pin.py # PINジェネレーター
│ │ ├── pronounceable.py # 発音可能パスワードジェネレーター
│ │ ├── uuid_token.py # UUIDトークンジェネレーター
│ │ ├── base64_secret.py # Base64シークレットジェネレーター
│ │ ├── jwt_secret.py # JWTシークレットジェネレーター
│ │ ├── wifi_key.py # WiFiキージェネレーター
│ │ ├── license_key.py # ライセンスキージェネレーター
│ │ ├── recovery_codes.py # リカバリーコードジェネレーター
│ │ ├── otp.py # OTPジェネレーター
│ │ ├── pattern.py # パターンジェネレーター
│ │ └── phonetic.py # NATOフォネティックジェネレーター
│ ├── security/
│ │ ├── entropy.py # エントロピー計算機
│ │ ├── strength_checker.py # zxcvbn連携
│ │ └── vault.py # 安全な履歴暗号化
│ ├── output/
│ │ ├── formatter.py # 色分け出力
│ │ ├── logger.py # 履歴ログ
│ │ ├── clipboard.py # 安全なクリップボード処理
│ │ └── qrcode_gen.py # OTP用QRコード生成
│ ├── config/
│ │ ├── loader.py # YAML/JSON設定ローダー
│ │ └── presets.py # 定義済みセキュリティプロファイル
├── data/
│ └── wordlists/ # テーマ別単語リスト(animals.txt、biology.txtなど)
└── tests/
テスト
# すべてのテストを実行
python -m pytest tests/ -v
# 特定のテストクラスを実行
python -m pytest tests/test_generators.py::TestRandomPasswordGenerator -v
# カバレッジ付きで実行
python -m pytest tests/ --cov=src --cov-report=html
全53の単体テストが以下をカバー:
- 15種類すべての特殊ジェネレーターモード
- エントロピーおよびzxcvbn強度計算機
- クリップボード自動消去と安全なストレージ
- QRコードASCII生成ロジック
- 設定読み込みとプリセット
設定
PassForgeは、YAMLまたはJSON形式の設定ファイルをサポートしています。
設定ファイルの場所(以下の順で検索):
./passforge.yaml または ./passforge.json
./.passforge.yaml または ./.passforge.json
~/.passforge/config.yaml または ~/.passforge/config.json
設定例
{
"random": {
"length": 20,
"easy_read": true
},
"passphrase": {
"words": 5,
"capitalize": true
},
"output": {
"show_entropy": true
}
}
利用可能なオプションの全リストについては、passforge.example.jsonを参照してください。
スタンドアロン実行可能ファイルのビルド
PassForgeは、PyInstallerを使用して単一のスタンドアロン実行可能ファイルにコンパイルできます。
Windows
# ビルドスクリプトを使用
passforge_build.bat
# 手動で実行
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Linux/macOS
# ビルドスクリプトを使用
chmod +x passforge_build.sh
./passforge_build.sh
# 手動で実行
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
実行可能ファイルはdist/フォルダに作成されます(約7MB、依存関係ゼロ)。
🌐 PassForge Web(PWAアドオン)
PassForgeには、最新のレスポンシブWebインターフェース(PWA)が含まれており、CLIバージョンと完全な互換性を維持しながら、視覚的にパスワードを生成・管理できます。
主な機能
- サイドバーインターフェース: すべてのジェネレータータイプ間の簡単なナビゲーション
- ビジュアルスライダー: インタラクティブスライダーで長さや単語数を調整
- QRサポート: パスワードやOTPシークレットを共有するためのインスタントQRコード生成
- ダーク/ライトモード: システム認識テーマ切り替えによるプレミアムな外観
- インストール可能: Windows、Linux、モバイルでのPWAインストールをサポート
- 共有履歴: CLIと同じ暗号化ログファイルを使用
PWAの起動
Webインターフェースを起動するには、お使いのOS用のランチャースクリプトを実行してください:
- Windows:
passforge_pwa.bat
- Linux/macOS:
passforge_pwa.sh
[!IMPORTANT]
セキュリティ強化(v34以降): PWAはSecureStaticFilesハンドラーを使用し、ブラウザからのPythonソースファイル、ログ、暗号鍵へのアクセスを明示的にブロックします。履歴へのアクセスは内部APIキーハンドシェイクで保護されています。フロントエンドロジックには、外部CDNアセット用の防御的ラッパーも含まれており、CDNがブロックされても機能するようにしています。
[!TIP]
ビルドの提供: PWAファイルはソースコードおよびZIP/Tarball配布物に含まれています。PWAは単一ファイルの.exeバイナリには埋め込まれていません。
ランチャーは必要な依存関係(fastapi、uvicorn)を自動的にインストールし、http://127.0.0.1:8093でローカルサーバーを起動し、ブラウザを開きます。
ライセンス
GPL v3ライセンス - 詳細はLICENSEを参照してください。
コントリビューション
コントリビューションを歓迎します!PRを送る前に、コントリビューションガイドラインをお読みください。