PassForge - CLI de Gerador de Senhas Tudo-em-Um
Um gerador de senhas CLI criptograficamente seguro, pronto para produção, com 17 modos de geração, transparência de entropia e opções abrangentes de personalização.



Funcionalidades
17 Modos de Geração
| Gerador | Comando | Descrição |
|---|
| Aleatório | random, r | Senhas aleatórias criptograficamente seguras |
| Frase-senha | phrase, p | Frases-senha baseadas em palavras (lista EFF) |
| Leetspeak | leet, l | Frases-senha com substituição de caracteres (A→4, E→3, etc.) |
| PIN | pin | PINs numéricos de comprimento configurável |
| Pronunciável | pronounce, pr | Senhas fáceis de falar baseadas em sílabas |
| UUID | uuid, u | UUIDs RFC 4122/9562 (v1, v4, v7) e Curto (Base58) |
| Base64 | base64, b64 | Segredos codificados em base64 seguros para URL |
| Segredo JWT | jwt | Segredos de alta entropia para assinatura JWT (HS256/384/512) |
| Chave WiFi | wifi | Chaves compatíveis com WPA2/WPA3 (8-63 caracteres) |
| Chave de Licença | license | Chaves de licença de software (formato AXB, ex.: 5x5) |
| Códigos de Recuperação | recovery | Códigos de backup 2FA (numéricos ou baseados em palavras) |
| Código/Segredo OTP | otp | Códigos TOTP/HOTP e segredos com URI otpauth |
| Padrão | pattern | Senhas baseadas em grade visual |
| Frase Temática | phrase (personalizado) | Frases-senha de listas de palavras temáticas (animais, sci-fi, etc.) |
| Fonético OTAN |
- Perfis Predefinidos: Geração com um clique para casos de uso comuns (Forte, Memorável, Dev, etc.)
- Menu Interativo: Menu completo para geração guiada
- Lançadores de Plataforma: Scripts dedicados
.bat e .sh com menus interativos
- Segurança Criptográfica: Usa o módulo
secrets do Python para CSPRNG
- Transparência de Entropia: Cálculo de entropia em tempo real e análise de força
- Análise zxcvbn: Verificação de força de senha baseada em padrões (ataques de dicionário, sequências)
- Área de Transferência Segura: Limpeza automática da área de transferência após tempo configurável
- Códigos OTP ao Vivo: Gera códigos TOTP atuais de 6/8 dígitos junto com o segredo
- Códigos QR para OTP: Códigos QR digitalizáveis para aplicativos autenticadores
- Saída Colorida: Distinção visual entre tipos de caracteres
- Exportação JSON: Saída legível por máquina para scripts
- Modo Balanceado: Garante distribuição legível (60% Letras, 20% Dígitos, 20% Símbolos)
- Guia do Gerador: Documentação abrangente para todos os 14 tipos de geradores.
- Histórico Criptografado (Cofre): Criptografa automaticamente as senhas salvas usando AES-128 (Fernet).
- Armazenamento Seguro em Cofre: Cofre dedicado gerencia chaves criptográficas via
.env (recomendado) ou .vault.key legado com permissões restritas 0600
- Arquitetura de Zero Vazamento: 🛡️ Código-fonte e logs são bloqueados do acesso do navegador no modo PWA; entradas sensíveis são mascaradas no modo CLI para análise de entropia.
Instalação
# Clone o repositório
git clone https://github.com/krishnakanthb13/password_generator.git
cd password_generator
# Instale as dependências (colorama, cryptography, pyperclip, etc.)
pip install -r requirements.txt
Início Rápido
# Gere uma senha aleatória de 20 caracteres
python main.py random -l 20
# Gere uma frase-senha de 4 palavras
python main.py phrase -w 4 --capitalize
# Gere uma frase-senha leetspeak
python main.py leet -w 3 -s _
# Gere com análise de entropia
python main.py --show-entropy random -l 16
# Inicie o modo interativo
python main.py --interactive
# Use um perfil predefinido (Forte)
python main.py --preset strong --show-entropy
Exemplos de Uso
Senhas Aleatórias
# Senha básica de 16 caracteres
python main.py random
# 24 caracteres, apenas letras
python main.py random -l 24 --no-symbols --no-digits
# Fácil de ler (sem 0/O, 1/l/I)
python main.py --easy-read random -l 20
# Com requisitos mínimos
python main.py random -l 16 --min-upper 2 --min-digits 2 --min-symbols 1
# Modo balanceado (principalmente letras, menos símbolos)
python main.py random -l 24 --balanced
Frases-senha
# Frase-senha padrão de 4 palavras
python main.py phrase -w 4
# Capitalizado com separador sublinhado
python main.py phrase -w 5 -s _ --capitalize
# Caixa alternada (Alta Entropia)
python main.py phrase -w 4 -s . --alternate
# Saída: aPpLe.bAnAnA.cHeRrY.dAtE
# Maiúsculas com separador hífen (Alta Entropia)
python main.py phrase -w 4 -s . --uppercase
# Saída: APPLE-BANANA-CHERRY-DATE
# Versão leetspeak (Substituição inteligente de 50%)
python main.py leet -w 4 -s -
# Saída: 4PPl3.8@N@[email protected]
# Frase-senha temática (usando 'animals.txt')
python main.py phrase -w 4 --capitalize --wordlist data/wordlists/animals.txt
# Saída: Tiger-Falcon-Shark-Wolf
Chaves 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 de Desenvolvedor
# Segredo JWT para HS256
python main.py jwt --bits 256
# Chave API Base64
python main.py base64 -b 32 --url-safe
# Token UUID (v4 Aleatório)
python main.py uuid --upper
# UUID v7 (Baseado em tempo, ordenável)
python main.py uuid --ver 7
# Ou atalho
python main.py uuid --v7
# UUID Curto (Codificado Base58, ~22 caracteres)
python main.py uuid --short
# Gere um UUID v7 usando o atalho
python main.py u --v7
# Gere 10 UUIDs v4 curtos
python main.py uuid --v4 --short -n 10
# Conversão Fonética OTAN
python main.py phonetic --text "PassForge"
# Saída: Papa-Alpha-Sierra-Sierra-Foxtrot-Oscar-Romeo-Golf-Echo
Segurança e Registro
# Analise uma senha existente
python main.py analyze "p@ssword123"
# Registre no histórico
python main.py --log random -l 16
# Veja as últimas 10 entradas do histórico (padrão)
python main.py history
# Veja todas as entradas do histórico (descriptografadas em tempo real)
python main.py history --all
# Veja o histórico com senhas ocultadas
python main.py history --redact
# Exporte o histórico (Ocultado por padrão)
python main.py history --export backup.json
# Exporte o histórico (Texto simples - requer cuidado)
python main.py history --export secrets.csv --no-redact
# Saída JSON para scripts
python main.py --json jwt --bits 256
Referência de Comandos
Opções Específicas do Gerador
Aleatório (random, r)
Frase-senha (phrase, p)
Leetspeak (leet, l)
PIN (pin)
| Flag | Padrão | Descrição |
|---|
-l, --length | 6 | Comprimento do PIN (4-64) |
-n, --count | 1 | Quantidade a gerar |
Pronunciável (pronounce, pr)
| Flag | Padrão | Descrição |
|---|
-l, --length | 12 | Comprimento da senha (4-128) |
-n, --count | 1 | Quantidade a gerar |
UUID (uuid)
Base64 (base64, b64)
| Flag | Padrão | Descrição |
|---|
-b, --bytes | 32 | Número de bytes aleatórios |
--url-safe | - | Usar caracteres seguros para URL |
Segredo JWT (jwt)
| Flag | Padrão | Descrição |
|---|
--bits | 256 | Comprimento em bits (256, 384, 512) |
--hex | - | Saída como string hexadecimal |
Chave WiFi (wifi)
| Flag | Padrão | Descrição |
|---|
-l, --length | 24 | Comprimento da chave (8-63, padrão: 24) |
--simple | - | Apenas alfanumérico (sem símbolos) |
Chave de Licença (license)
| Flag | Padrão | Descrição |
|---|
--segments | 4 | Número de segmentos (2-64) |
--segment-length | 4 | Caracteres por segmento (2-32) |
Códigos de Recuperação (recovery)
Segredo OTP (otp)
| Flag | Padrão | Descrição |
|---|
--digits | 6 | Comprimento do código (6 ou 8) |
|
Padrão (pattern)
| Flag | Padrão | Descrição |
|---|
--grid | 3 | Tamanho da grade (ex.: 3x3) |
Fonético (phonetic, ph)
| Flag | Padrão | Descrição |
|---|
--text | - | Texto a converter para alfabeto OTAN |
-l, --length | 8 | Comprimento da sequência aleatória (4-64) |
Histórico (history)
Guia de Entropia
PassForge fornece um Relatório de Entropia abrangente, incluindo o tamanho bruto do conjunto de caracteres, bits de Shannon e estimativas de tempo de força bruta.
Nota: Para uma explicação detalhada de cada tipo de gerador, consulte LITERATURE.md.
Estrutura do Projeto
password_generator/
├── main.py # Ponto de entrada
├── requirements.txt # Dependências
├── src/
│ ├── __init__.py
│ ├── cli.py # Analisador de argumentos e banner
│ ├── command_handler.py # Roteamento de comandos
│ ├── interactive.py # Menu interativo
│ ├── generators/ # Todos os geradores de senha
│ │ ├── base.py # Classe base abstrata
│ │ ├── random_password.py # Gerador de senha aleatória
│ │ ├── passphrase.py # Gerador de frase-senha
│ │ ├── leetspeak.py # Gerador leetspeak
│ │ ├── pin.py # Gerador de PIN
│ │ ├── pronounceable.py # Gerador de senha pronunciável
│ │ ├── uuid_token.py # Gerador de token UUID
│ │ ├── base64_secret.py # Gerador de segredo Base64
│ │ ├── jwt_secret.py # Gerador de segredo JWT
│ │ ├── wifi_key.py # Gerador de chave WiFi
│ │ ├── license_key.py # Gerador de chave de licença
│ │ ├── recovery_codes.py # Gerador de códigos de recuperação
│ │ ├── otp.py # Gerador OTP
│ │ ├── pattern.py # Gerador de padrão
│ │ └── phonetic.py # Gerador fonético OTAN
│ ├── security/
│ │ ├── entropy.py # Calculadora de entropia
│ │ ├── strength_checker.py # Integração zxcvbn
│ │ └── vault.py # Criptografia segura do histórico
│ ├── output/
│ │ ├── formatter.py # Saída colorida
│ │ ├── logger.py # Registro do histórico
│ │ ├── clipboard.py # Manuseio seguro da área de transferência
│ │ └── qrcode_gen.py # Geração de código QR para OTP
│ ├── config/
│ │ ├── loader.py # Carregador de configuração YAML/JSON
│ │ └── presets.py # Perfis de segurança predefinidos
├── data/
│ └── wordlists/ # Listas de palavras temáticas (animals.txt, biology.txt, etc.)
└── tests/
Testes
# Execute todos os testes
python -m pytest tests/ -v
# Execute uma classe de teste específica
python -m pytest tests/test_generators.py::TestRandomPasswordGenerator -v
# Execute com cobertura
python -m pytest tests/ --cov=src --cov-report=html
Todos os 53 testes unitários cobrem:
- Todos os 15 modos de gerador especializados
- Calculadoras de entropia e força zxcvbn
- Limpeza automática da área de transferência e armazenamento seguro
- Lógica de geração de código QR ASCII
- Carregamento de configuração e predefinições
Configuração
PassForge suporta arquivos de configuração nos formatos YAML ou JSON.
Locais do Arquivo de Configuração (pesquisados em ordem):
./passforge.yaml ou ./passforge.json
./.passforge.yaml ou ./.passforge.json
~/.passforge/config.yaml ou ~/.passforge/config.json
Exemplo de Configuração
{
"random": {
"length": 20,
"easy_read": true
},
"passphrase": {
"words": 5,
"capitalize": true
},
"output": {
"show_entropy": true
}
}
Veja passforge.example.json para todas as opções disponíveis.
Construindo Executável Autônomo
PassForge pode ser compilado em um único executável autônomo usando PyInstaller.
Windows
# Usando o script de construção
passforge_build.bat
# Ou manualmente
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
Linux/macOS
# Usando o script de construção
chmod +x passforge_build.sh
./passforge_build.sh
# Ou manualmente
pip install pyinstaller
pyinstaller --onefile --name passforge --console main.py
O executável será criado na pasta dist/ (~7MB, zero dependências).
🌐 PassForge Web (Complemento PWA)
PassForge agora inclui uma Interface Web (PWA) moderna e responsiva que fornece uma maneira visual de gerar e gerenciar senhas, mantendo total paridade com a versão CLI.
Principais Funcionalidades
- Interface com Barra Lateral: Navegação fácil entre todos os tipos de geradores.
- Controles Deslizantes Visuais: Ajuste comprimentos e contagens de palavras com controles deslizantes interativos.
- Suporte a QR: Geração instantânea de código QR para compartilhar senhas ou segredos OTP.
- Modo Escuro/Claro: Estética premium com alternância de tema sensível ao sistema.
- Instalável: Suporte para instalação PWA no Windows, Linux e dispositivos móveis.
- Histórico Compartilhado: Utiliza o mesmo arquivo de log criptografado que o CLI.
Iniciando o PWA
Para iniciar a interface web, execute o script lançador do seu sistema operacional:
- Windows:
passforge_pwa.bat
- Linux/macOS:
passforge_pwa.sh
[!IMPORTANT]
Reforço de Segurança (v34+): O PWA agora utiliza um manipulador SecureStaticFiles que bloqueia explicitamente o acesso do navegador a arquivos-fonte Python, logs e chaves criptográficas. O acesso ao histórico é protegido por um handshake interno de chave de API. A lógica do frontend também inclui wrappers defensivos para ativos CDN externos para garantir funcionalidade mesmo se um CDN estiver bloqueado.
[!TIP]
Disponibilidade da Construção: Os arquivos PWA estão incluídos nas distribuições Código Fonte e ZIP/Tarball. O PWA não está embutido no binário .exe de arquivo único.
O lançador instalará automaticamente as dependências necessárias (fastapi, uvicorn), iniciará um servidor local em http://127.0.0.1:8093 e abrirá seu navegador.
Licença
Licença GPL v3 - veja LICENSE para detalhes.
Contribuindo
Contribuições são bem-vindas! Por favor, leia nossas diretrizes de contribuição antes de enviar PRs.