PassForge - All-in-One Passwort-Generator CLI
Ein produktionsreifer, kryptographisch sicherer Passwort-Generator CLI mit 17 Generierungsmodi, Entropie-Transparenz und umfassenden Anpassungsmöglichkeiten.



Funktionen
17 Generierungsmodi
| Generator | Befehl | Beschreibung |
|---|
| Random | random, r | Kryptographisch sichere zufällige Zeichen-Passwörter |
| Passphrase | phrase, p | Wortbasierte Passphrasen mit der EFF-Wortliste |
| Leetspeak | leet, l | Passphrasen mit Zeichenersetzung (A→4, E→3, etc.) |
| PIN | pin | Numerische PINs mit konfigurierbarer Länge |
| Pronounceable | pronounce, pr | Leicht aussprechbare silbenbasierte Passwörter |
| UUID | uuid, u | RFC 4122/9562 UUIDs (v1, v4, v7) & Kurz (Base58) |
| Base64 | base64, b64 | URL-sichere base64-kodierte Geheimnisse |
| JWT Secret | jwt | Hochentropische Geheimnisse für JWT-Signierung (HS256/384/512) |
| WiFi Key | wifi | WPA2/WPA3-kompatible Schlüssel (8-63 Zeichen) |
| License Key | license | Software-Lizenzschlüssel (AXB-Format, z.B. 5x5) |
| Recovery Codes | recovery | 2FA-Backup-Codes (numerisch oder wortbasiert) |
| OTP Code/Secret | otp | TOTP/HOTP-Codes & Geheimnisse mit otpauth-URI |
| Pattern | pattern | Visuelle gitterbasierte Muster-Passwörter |
| Themed Phrase | phrase (benutzerdefiniert) | Passphrasen aus thematischen Wortlisten (Tiere, Sci-Fi, etc.) |
| NATO Phonetic | phonetic, |
- Voreingestellte Profile: Ein-Klick-Generierung für häufige Anwendungsfälle (Strong, Memorable, Dev, etc.)
- Interaktives Menü: Voll ausgestattetes Menü für geführte Generierung
- Plattformstarter: Dedizierte
.bat- und .sh-Skripte mit interaktiven Menüs
- Kryptographische Sicherheit: Verwendet Pythons
secrets-Modul für CSPRNG
- Entropie-Transparenz: Echtzeit-Entropieberechnung und Stärkeanalyse
- zxcvbn-Analyse: Musterbasierte Passwortstärkeprüfung (Wörterbuchangriffe, Sequenzen)
- Sichere Zwischenablage: Automatisches Löschen der Zwischenablage nach konfigurierbarem Timeout
- Live-OTP-Codes: Generiert aktuelle 6/8-stellige TOTP-Codes zusammen mit dem Geheimnis
- QR-Codes für OTP: Scanbare QR-Codes für Authenticator-Apps
- Farbcodierte Ausgabe: Visuelle Unterscheidung zwischen Zeichentypen
- JSON-Export: Maschinenlesbare Ausgabe für Skripte
- Ausgeglichener Modus: Stellt eine lesbare Verteilung sicher (60% Buchstaben, 20% Ziffern, 20% Symbole)
- Generator-Leitfaden: Umfassende Dokumentation für alle 14 Generatortypen.
- Verschlüsselter Verlauf (Tresor): Verschlüsselt gespeicherte Passwörter automatisch mit AES-128 (Fernet).
- Sichere Tresor-Speicherung: Dedizierter Tresor verwaltet kryptographische Schlüssel über
.env (empfohlen) oder veraltete .vault.key mit strengen 0600-Dateiberechtigungen
- Zero-Leakage-Architektur: 🛡️ Quellcode und Protokolle werden im PWA-Modus vom Browserzugriff blockiert; sensible Eingaben werden im CLI-Modus für die Entropieanalyse maskiert.
Installation
# Clone the repository
git clone https://github.com/krishnakanthb13/password_generator.git
cd password_generator
# Install dependencies (colorama, cryptography, pyperclip, etc.)
pip install -r requirements.txt
Schnellstart
# Generate a 20-character random password
python main.py random -l 20
# Generate a 4-word passphrase
python main.py phrase -w 4 --capitalize
# Generate a leetspeak passphrase
python main.py leet -w 3 -s _
# Generate with entropy analysis
python main.py --show-entropy random -l 16
# Launch interactive mode
python main.py --interactive
# Use a preset profile (Strong)
python main.py --preset strong --show-entropy
Verwendungsbeispiele
Zufällige Passwörter
# Basic 16-character password
python main.py random
# 24-character, letters only
python main.py random -l 24 --no-symbols --no-digits
# Easy to read (no 0/O, 1/l/I)
python main.py --easy-read random -l 20
# With minimum requirements
python main.py random -l 16 --min-upper 2 --min-digits 2 --min-symbols 1
# Balanced mode (mostly letters, fewer symbols)
python main.py random -l 24 --balanced
Passphrasen
# Standard 4-word passphrase
python main.py phrase -w 4
# Capitalized with underscore separator
python main.py phrase -w 5 -s _ --capitalize
# Alternate case (High Entropy)
python main.py phrase -w 4 -s . --alternate
# Output: aPpLe.bAnAnA.cHeRrY.dAtE
# Uppercase with hyphen separator (High Entropy)
python main.py phrase -w 4 -s . --uppercase
# Output: APPLE-BANANA-CHERRY-DATE
# Leetspeak version (Smart 50% substitution)
python main.py leet -w 4 -s -
# Output: 4PPl3.8@N@[email protected]
# Themed Passphrase (using 'animals.txt')
python main.py phrase -w 4 --capitalize --wordlist data/wordlists/animals.txt
# Output: Tiger-Falcon-Shark-Wolf
Software-Schlüssel (A x B)
# 5 segments of 5 characters
python main.py license --segments 5 --segment-length 5
# 4 segments of 8 characters
python main.py license --segments 4 --segment-length 8
Entwickler-Tokens
# JWT secret for HS256
python main.py jwt --bits 256
# Base64 API key
python main.py base64 -b 32 --url-safe
# UUID token (v4 Random)
python main.py uuid --upper
# UUID v7 (Time-based, sortable)
python main.py uuid --ver 7
# Or shortcut
python main.py uuid --v7
# Short UUID (Base58 encoded, ~22 chars)
python main.py uuid --short
# Generate a v7 UUID using the shortcut
python main.py u --v7
# Generate 10 short v4 UUIDs
python main.py uuid --v4 --short -n 10
# NATO Phonetic Conversion
python main.py phonetic --text "PassForge"
# Output: Papa-Alpha-Sierra-Sierra-Foxtrot-Oscar-Romeo-Golf-Echo
Sicherheit & Protokollierung
# Analyze an existing password
python main.py analyze "p@ssword123"
# Log to history
python main.py --log random -l 16
# View last 10 history entries (default)
python main.py history
# View all history entries (decrypted on the fly)
python main.py history --all
# View history with redacted passwords
python main.py history --redact
# Export history (Redacted by default)
python main.py history --export backup.json
# Export history (Plaintext - requires caution)
python main.py history --export secrets.csv --no-redact
# JSON output for scripts
python main.py --json jwt --bits 256
Befehlsreferenz
Generatorspezifische Optionen
Random (random, r)
Passphrase (phrase, p)
Leetspeak (leet, l)
PIN (pin)
| Flag | Standard | Beschreibung |
|---|
-l, --length | 6 | PIN-Länge (4-64) |
-n, --count | 1 | Anzahl der zu generierenden |
Pronounceable (pronounce, pr)
| Flag | Standard | Beschreibung |
|---|
-l, --length | 12 | Passwortlänge (4-128) |
-n, --count | 1 | Anzahl der zu generierenden |
UUID (uuid)
Base64 (base64, b64)
| Flag | Standard | Beschreibung |
|---|
-b, --bytes | 32 | Anzahl der zufälligen Bytes |
--url-safe | - | URL-sichere Zeichen verwenden |
JWT Secret (jwt)
| Flag | Standard | Beschreibung |
|---|
--bits | 256 | Bitlänge (256, 384, 512) |
--hex | - | Ausgabe als Hex-String |
WiFi Key (wifi)
| Flag | Standard | Beschreibung |
|---|
-l, --length | 24 | Schlüssellänge (8-63, Standard: 24) |
--simple | - | Nur alphanumerisch (keine Symbole) |
License Key (license)
| Flag | Standard | Beschreibung |
|---|
--segments | 4 | Anzahl der Segmente (2-64) |
--segment-length | 4 | Zeichen pro Segment (2-32) |
Recovery Codes (recovery)
OTP Secret (otp)
| Flag | Standard | Beschreibung |
|---|
--digits | 6 | Codelänge (6 oder 8) |
|
Pattern (pattern)
| Flag | Standard | Beschreibung |
|---|
--grid | 3 | Gittergröße (z.B. 3x3) |
Phonetic (phonetic, ph)
| Flag | Standard | Beschreibung |
|---|
--text | - | In NATO-Alphabet umzuwandelnder Text |
-l, --length | 8 | Zufällige Sequenzlänge (4-64) |
History (history)
Entropie-Leitfaden
PassForge bietet einen umfassenden Entropiebericht, der die Rohzeichenpoolgröße, Shannon-Bits und Brute-Force-Zeitschätzungen enthält.
Hinweis: Für eine detaillierte Erklärung jedes Generatortyps siehe LITERATURE.md.
Projektstruktur
password_generator/
├── main.py # Entry point
├── requirements.txt # Dependencies
├── src/
│ ├── __init__.py
│ ├── cli.py # Argument parser & banner
│ ├── command_handler.py # Command routing
│ ├── interactive.py # Interactive menu
│ ├── generators/ # All password generators
│ │ ├── base.py # Abstract base class
│ │ ├── random_password.py # Random password generator
│ │ ├── passphrase.py # Passphrase generator
│ │ ├── leetspeak.py # Leetspeak generator
│ │ ├── pin.py # PIN generator
│ │ ├── pronounceable.py # Pronounceable password generator
│ │ ├── uuid_token.py # UUID token generator
│ │ ├── base64_secret.py # Base64 secret generator
│ │ ├── jwt_secret.py # JWT secret generator
│ │ ├── wifi_key.py # WiFi key generator
│ │ ├── license_key.py # License key generator
│ │ ├── recovery_codes.py # Recovery codes generator
│ │ ├── otp.py # OTP generator
│ │ ├── pattern.py # Pattern generator
│ │ └── phonetic.py # NATO Phonetic generator
│ ├── security/
│ │ ├── entropy.py # Entropy calculator
│ │ ├── strength_checker.py # zxcvbn integration
│ │ └── vault.py # Secure history encryption
│ ├── output/
│ │ ├── formatter.py # Color-coded output
│ │ ├── logger.py # History logging
│ │ ├── clipboard.py # Secure clipboard handling
│ │ └── qrcode_gen.py # QR code generation for OTP
│ ├── config/
│ │ ├── loader.py # YAML/JSON config loader
│ │ └── presets.py # Predefined security profiles
├── data/
│ └── wordlists/ # Themed wordlists (animals.txt, biology.txt, etc.)
└── tests/
Testen
# Run all tests
python -m pytest tests/ -v
# Run specific test class
python -m pytest tests/test_generators.py::TestRandomPasswordGenerator -v
# Run with coverage
python -m pytest tests/ --cov=src --cov-report=html
Alle 53 Unit-Tests decken ab:
- Alle 15 spezialisierten Generatormodi
- Entropie- und zxcvbn-Stärkerechner
- Automatisches Löschen der Zwischenablage und sicherer Speicher
- QR-Code-ASCII-Generierungslogik
- Konfigurationsladung und Voreinstellungen
Konfiguration
PassForge unterstützt Konfigurationsdateien im YAML- oder JSON-Format.
Konfigurationsdatei-Speicherorte (in folgender Reihenfolge durchsucht):
./passforge.yaml or ./passforge.json
./.passforge.yaml or ./.passforge.json
~/.passforge/config.yaml or ~/.passforge/config.json
Beispielkonfiguration
{
"random": {
"length": 20,
"easy_read": true
},
"passphrase": {
"words": 5,
"capitalize": true
},
"output": {
"show_entropy": true
}
}
Siehe passforge.example.json für alle verfügbaren Optionen.
Erstellen einer eigenständigen ausführbaren Datei
PassForge kann mit PyInstaller zu einer einzigen eigenständigen ausführbaren Datei kompiliert werden.
Windows
# Using the build script
passforge_build.bat
# Or manually
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Linux/macOS
# Using the build script
chmod +x passforge_build.sh
./passforge_build.sh
# Or manually
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Die ausführbare Datei wird im Ordner dist/ erstellt (~7 MB, keine Abhängigkeiten).
🌐 PassForge Web (PWA-Erweiterung)
PassForge enthält jetzt eine moderne, responsive Weboberfläche (PWA), die eine visuelle Möglichkeit bietet, Passwörter zu generieren und zu verwalten, während die volle Parität mit der CLI-Version erhalten bleibt.
Hauptfunktionen
- Seitenleisten-Oberfläche: Einfache Navigation zwischen allen Generatortypen.
- Visuelle Schieberegler: Längen und Wortanzahlen mit interaktiven Schiebereglern anpassen.
- QR-Unterstützung: Sofortige QR-Code-Generierung zum Teilen von Passwörtern oder OTP-Geheimnissen.
- Dunkel/Hell-Modus: Hochwertige Ästhetik mit systembewusstem Themenwechsel.
- Installierbar: Unterstützung für PWA-Installation unter Windows, Linux und mobilen Geräten.
- Gemeinsamer Verlauf: Nutzt dieselbe verschlüsselte Protokolldatei wie die CLI.
Starten der PWA
Um die Weboberfläche zu starten, führen Sie das Startskript für Ihr Betriebssystem aus:
- Windows:
passforge_pwa.bat
- Linux/macOS:
passforge_pwa.sh
[!IMPORTANT]
Sicherheitshärtung (v34+): Die PWA verwendet jetzt einen SecureStaticFiles-Handler, der den Browserzugriff auf Python-Quelldateien, Protokolle und kryptografische Schlüssel explizit blockiert. Der Zugriff auf den Verlauf wird durch einen internen API-Key-Handshake geschützt. Die Frontend-Logik enthält auch defensive Wrapper für externe CDN-Assets, um die Funktionalität auch bei blockiertem CDN sicherzustellen.
[!TIP]
Verfügbarkeit des Builds: Die PWA-Dateien sind in den Quellcode- und ZIP/Tarball-Distributionen enthalten. Die PWA ist nicht in die einzelne .exe-Binärdatei eingebettet.
Der Starter installiert automatisch die erforderlichen Abhängigkeiten (fastapi, uvicorn), startet einen lokalen Server unter http://127.0.0.1:8093 und öffnet Ihren Browser.
Lizenz
GPL v3 Lizenz - siehe LICENSE für Details.
Mitwirken
Beiträge sind willkommen! Bitte lesen Sie unsere Richtlinien für Mitwirkende, bevor Sie PRs einreichen.