PassForge - Generador de contraseñas CLI todo en uno
Un generador de contraseñas CLI listo para producción, criptográficamente seguro, con 17 modos de generación, transparencia de entropía y amplias opciones de personalización.



Características
17 Modos de Generación
| Generador | Comando | Descripción |
|---|
| Aleatorio | random, r | Contraseñas de caracteres aleatorios criptográficamente seguras |
| Frase de contraseña | phrase, p | Frases de contraseña basadas en palabras usando la lista de palabras EFF |
| Leetspeak | leet, l | Frases de contraseña con sustitución de caracteres (A→4, E→3, etc.) |
| PIN | pin | PINs numéricos de longitud configurable |
| Pronunciable | pronounce, pr | Contraseñas fáciles de pronunciar basadas en sílabas |
| UUID | uuid, u | UUIDs RFC 4122/9562 (v1, v4, v7) y Cortos (Base58) |
| Base64 | base64, b64 | Secretos codificados en base64 seguros para URL |
| Secreto JWT | jwt | Secretos de alta entropía para firma JWT (HS256/384/512) |
| Clave WiFi | wifi | Claves compatibles con WPA2/WPA3 (8-63 caracteres) |
| Clave de licencia | license | Claves de licencia de software (formato AXB, ej. 5x5) |
| Códigos de recuperación | recovery | Códigos de respaldo 2FA (numéricos o basados en palabras) |
| Código/Secreto OTP | otp | Códigos y secretos TOTP/HOTP con URI otpauth |
| Patrón | pattern | Contraseñas de patrón basadas en cuadrícula visual |
| Frase temática | phrase (personalizado) | Frases de contraseña de listas de palabras temáticas (animales, ciencia ficción, etc.) |
- Perfiles predefinidos: Generación con un clic para casos de uso comunes (Fuerte, Memorable, Dev, etc.)
- Menú interactivo: Menú completo para generación guiada
- Lanzadores de plataforma: Scripts dedicados
.bat y .sh con menús interactivos
- Seguridad criptográfica: Usa el módulo
secrets de Python para CSPRNG
- Transparencia de entropía: Cálculo de entropía en tiempo real y análisis de fortaleza
- Análisis zxcvbn: Verificación de fortaleza de contraseñas basada en patrones (ataques de diccionario, secuencias)
- Portapapeles seguro: Borrado automático del portapapeles después de un tiempo configurable
- Códigos OTP en vivo: Genera códigos TOTP actuales de 6/8 dígitos junto con el secreto
- Códigos QR para OTP: Códigos QR escaneables para aplicaciones de autenticación
- Salida con códigos de colores: Distinción visual entre tipos de caracteres
- Exportación JSON: Salida legible por máquina para scripts
- Modo equilibrado: Asegura una distribución legible (60% Letras, 20% Dígitos, 20% Símbolos)
- Guía del Generador: Documentación completa para los 14 tipos de generadores.
- Historial cifrado (Bóveda): Cifra automáticamente las contraseñas guardadas usando AES-128 (Fernet).
- Almacenamiento seguro de bóveda: El almacén dedicado maneja las claves criptográficas mediante
.env (recomendado) o el heredado .vault.key con permisos de archivo estrictos 0600
Instalación
# Clonar el repositorio
git clone https://github.com/krishnakanthb13/password_generator.git
cd password_generator
# Instalar dependencias (colorama, cryptography, pyperclip, etc.)
pip install -r requirements.txt
Inicio Rápido
# Generar una contraseña aleatoria de 20 caracteres
python main.py random -l 20
# Generar una frase de contraseña de 4 palabras
python main.py phrase -w 4 --capitalize
# Generar una frase de contraseña leetspeak
python main.py leet -w 3 -s _
# Generar con análisis de entropía
python main.py --show-entropy random -l 16
# Iniciar modo interactivo
python main.py --interactive
# Usar un perfil predefinido (Fuerte)
python main.py --preset strong --show-entropy
Ejemplos de Uso
Contraseñas Aleatorias
# Contraseña básica de 16 caracteres
python main.py random
# 24 caracteres, solo letras
python main.py random -l 24 --no-symbols --no-digits
# Fácil de leer (sin 0/O, 1/l/I)
python main.py --easy-read random -l 20
# Con requisitos mínimos
python main.py random -l 16 --min-upper 2 --min-digits 2 --min-symbols 1
# Modo equilibrado (mayormente letras, menos símbolos)
python main.py random -l 24 --balanced
Frases de Contraseña
# Frase de contraseña estándar de 4 palabras
python main.py phrase -w 4
# Capitalizada con separador de guion bajo
python main.py phrase -w 5 -s _ --capitalize
# Mayúsculas/minúsculas alternadas (Alta Entropía)
python main.py phrase -w 4 -s . --alternate
# Salida: aPpLe.bAnAnA.cHeRrY.dAtE
# Todo en mayúsculas con separador de guion (Alta Entropía)
python main.py phrase -w 4 -s . --uppercase
# Salida: APPLE-BANANA-CHERRY-DATE
# Versión leetspeak (Sustitución inteligente 50%)
python main.py leet -w 4 -s -
# Salida: 4PPl3.8@N@[email protected]
# Frase temática (usando 'animals.txt')
python main.py phrase -w 4 --capitalize --wordlist data/wordlists/animals.txt
# Salida: Tiger-Falcon-Shark-Wolf
Claves de Software (A x B)
# 5 segmentos de 5 caracteres
python main.py license --segments 5 --segment-length 5
# 4 segmentos de 8 caracteres
python main.py license --segments 4 --segment-length 8
Tokens para Desarrolladores
# Secreto JWT para HS256
python main.py jwt --bits 256
# Clave API Base64
python main.py base64 -b 32 --url-safe
# Token UUID (v4 Aleatorio)
python main.py uuid --upper
# UUID v7 (Basado en tiempo, ordenable)
python main.py uuid --ver 7
# O acceso directo
python main.py uuid --v7
# UUID corto (codificado en Base58, ~22 caracteres)
python main.py uuid --short
# Generar un UUID v7 usando el acceso directo
python main.py u --v7
# Generar 10 UUIDs v4 cortos
python main.py uuid --v4 --short -n 10
# Conversión Fonética OTAN
python main.py phonetic --text "PassForge"
# Salida: Papa-Alpha-Sierra-Sierra-Foxtrot-Oscar-Romeo-Golf-Echo
Seguridad y Registro
# Analizar una contraseña existente
python main.py analyze "p@ssword123"
# Registrar en el historial
python main.py --log random -l 16
# Ver las últimas 10 entradas del historial (predeterminado)
python main.py history
# Ver todas las entradas del historial (descifradas sobre la marcha)
python main.py history --all
# Ver historial con contraseñas redactadas
python main.py history --redact
# Exportar historial (Redactado por defecto)
python main.py history --export backup.json
# Exportar historial (Texto plano - requiere precaución)
python main.py history --export secrets.csv --no-redact
# Salida JSON para scripts
python main.py --json jwt --bits 256
Referencia de Comandos
Opciones Específicas del Generador
Random (random, r)
Passphrase (phrase, p)
Leetspeak (leet, l)
PIN (pin)
| Indicador | Predeterminado | Descripción |
|---|
-l, --length | 6 | Longitud del PIN (4-64) |
-n, --count | 1 | Número a generar |
Pronounceable (pronounce, pr)
| Indicador | Predeterminado | Descripción |
|---|
-l, --length | 12 | Longitud de la contraseña (4-128) |
-n, --count | 1 | Número a generar |
UUID (uuid)
Base64 (base64, b64)
| Indicador | Predeterminado | Descripción |
|---|
-b, --bytes | 32 | Número de bytes aleatorios |
--url-safe | - | Usar caracteres seguros para URL |
JWT Secret (jwt)
| Indicador | Predeterminado | Descripción |
|---|
--bits | 256 | Longitud en bits (256, 384, 512) |
--hex | - | Salida como cadena hexadecimal |
WiFi Key (wifi)
| Indicador | Predeterminado | Descripción |
|---|
-l, --length | 24 | Longitud de la clave (8-63, predeterminado: 24) |
--simple | - | Solo alfanumérico (sin símbolos) |
License Key (license)
| Indicador | Predeterminado | Descripción |
|---|
--segments | 4 | Número de segmentos (2-64) |
--segment-length | 4 | Caracteres por segmento (2-32) |
Recovery Codes (recovery)
OTP Secret (otp)
| Indicador | Predeterminado | Descripción |
|---|
--digits | 6 | Longitud del código (6 u 8) |
Pattern (pattern)
| Indicador | Predeterminado | Descripción |
|---|
--grid | 3 | Tamaño de cuadrícula (ej. 3x3) |
Phonetic (phonetic, ph)
| Indicador | Predeterminado | Descripción |
|---|
--text | - | Texto a convertir al alfabeto OTAN |
-l, --length | 8 | Longitud de la secuencia aleatoria (4-64) |
History (history)
Guía de Entropía
PassForge proporciona un Informe de Entropía completo que incluye el tamaño del conjunto de caracteres, bits de Shannon y estimaciones de tiempo de fuerza bruta.
Nota: Para una explicación detallada de cada tipo de generador, consulta LITERATURE.md.
Estructura del Proyecto
password_generator/
├── main.py # Punto de entrada
├── requirements.txt # Dependencias
├── src/
│ ├── __init__.py
│ ├── cli.py # Analizador de argumentos y banner
│ ├── command_handler.py # Enrutamiento de comandos
│ ├── interactive.py # Menú interactivo
│ ├── generators/ # Todos los generadores de contraseñas
│ │ ├── base.py # Clase base abstracta
│ │ ├── random_password.py # Generador de contraseñas aleatorias
│ │ ├── passphrase.py # Generador de frases de contraseña
│ │ ├── leetspeak.py # Generador de leetspeak
│ │ ├── pin.py # Generador de PIN
│ │ ├── pronounceable.py # Generador de contraseñas pronunciables
│ │ ├── uuid_token.py # Generador de tokens UUID
│ │ ├── base64_secret.py # Generador de secretos Base64
│ │ ├── jwt_secret.py # Generador de secretos JWT
│ │ ├── wifi_key.py # Generador de claves WiFi
│ │ ├── license_key.py # Generador de claves de licencia
│ │ ├── recovery_codes.py # Generador de códigos de recuperación
│ │ ├── otp.py # Generador OTP
│ │ ├── pattern.py # Generador de patrones
│ │ └── phonetic.py # Generador fonético OTAN
│ ├── security/
│ │ ├── entropy.py # Calculadora de entropía
│ │ ├── strength_checker.py # Integración zxcvbn
│ │ └── vault.py # Cifrado seguro del historial
│ ├── output/
│ │ ├── formatter.py # Salida con códigos de colores
│ │ ├── logger.py # Registro de historial
│ │ ├── clipboard.py # Manejo seguro del portapapeles
│ │ └── qrcode_gen.py # Generación de códigos QR para OTP
│ ├── config/
│ │ ├── loader.py # Cargador de configuración YAML/JSON
│ │ └── presets.py # Perfiles de seguridad predefinidos
├── data/
│ └── wordlists/ # Listas de palabras temáticas (animals.txt, biology.txt, etc.)
└── tests/
Pruebas
# Ejecutar todas las pruebas
python -m pytest tests/ -v
# Ejecutar una clase de prueba específica
python -m pytest tests/test_generators.py::TestRandomPasswordGenerator -v
# Ejecutar con cobertura
python -m pytest tests/ --cov=src --cov-report=html
Todas las 53 pruebas unitarias cubren:
- Los 15 modos de generador especializados
- Calculadoras de entropía y fortaleza zxcvbn
- Borrado automático del portapapeles y almacenamiento seguro
- Lógica de generación de códigos QR ASCII
- Carga de configuración y ajustes predefinidos
Configuración
PassForge admite archivos de configuración en formato YAML o JSON.
Ubicaciones de los archivos de configuración (buscados en orden):
./passforge.yaml o ./passforge.json
./.passforge.yaml o ./.passforge.json
~/.passforge/config.yaml o ~/.passforge/config.json
Ejemplo de Configuración
{
"random": {
"length": 20,
"easy_read": true
},
"passphrase": {
"words": 5,
"capitalize": true
},
"output": {
"show_entropy": true
}
}
Consulta passforge.example.json para todas las opciones disponibles.
Compilación de Ejecutable Independiente
PassForge se puede compilar en un único ejecutable independiente usando PyInstaller.
Windows
# Usando el script de compilación
passforge_build.bat
# O manualmente
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Linux/macOS
# Usando el script de compilación
chmod +x passforge_build.sh
./passforge_build.sh
# O manualmente
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
El ejecutable se creará en la carpeta dist/ (~7 MB, cero dependencias).
🌐 PassForge Web (Complemento PWA)
PassForge ahora incluye una interfaz web moderna y responsiva (PWA) que proporciona una forma visual de generar y gestionar contraseñas, manteniendo total paridad con la versión CLI.
Características Principales
- Interfaz de barra lateral: Navegación sencilla entre todos los tipos de generadores.
- Deslizadores visuales: Ajusta longitudes y conteos de palabras con deslizadores interactivos.
- Soporte QR: Generación instantánea de códigos QR para compartir contraseñas o secretos OTP.
- Modo oscuro/claro: Estética premium con cambio de tema según el sistema.
- Instalable: Soporte para instalación PWA en Windows, Linux y móviles.
- Historial compartido: Utiliza el mismo archivo de registro cifrado que la CLI.
Inicio de la PWA
Para iniciar la interfaz web, ejecuta el script lanzador para tu sistema operativo:
- Windows:
passforge_pwa.bat
- Linux/macOS:
passforge_pwa.sh
[!IMPORTANT]
Fortalecimiento de seguridad (v34+): La PWA ahora utiliza un controlador SecureStaticFiles que bloquea explícitamente el acceso del navegador a archivos fuente de Python, registros y claves criptográficas. El acceso al historial está protegido mediante un protocolo de enlace de clave API interna. La lógica del frontend también incluye envoltorios defensivos para activos CDN externos para garantizar la funcionalidad incluso si un CDN está bloqueado.
[!TIP]
Disponibilidad de compilación: Los archivos de la PWA están incluidos en las distribuciones de Código Fuente y ZIP/Tarball. La PWA no está incrustada en el binario de un solo archivo .exe.
El lanzador instalará automáticamente las dependencias necesarias (fastapi, uvicorn), iniciará un servidor local en http://127.0.0.1:8093 y abrirá tu navegador.
Licencia
Licencia GPL v3 - consulta LICENSE para más detalles.
Contribuciones
¡Las contribuciones son bienvenidas! Por favor, lee nuestras guías de contribución antes de enviar PRs.