password-auditor
Auditor de qualidade de senhas: entropia, tempo de quebra e detecção de senhas comuns.
10 testes · 10 passou · 0 falhou · 0 skip
- test_common_password_is_flagged0.00s
- test_strong_password_scores_high0.00s
- test_charset_size0.00s
- test_sequence_detection0.00s
- test_entropy_monotonic_with_length0.00s
- test_shannon_entropy_zero_for_empty0.00s
- test_reuse_detection0.00s
- test_crack_times_present0.00s
- test_masking0.00s
- test_audit_file_resume0.00s
Entrypoints (CLI)
pwaudit
Módulos e funções principais
password_auditor/__init__.py
- —
password_auditor/analyzer.py
shannon_entropy()— Entropia de Shannon baseada na distribuição real dos caracteres.search_space_entropy()— Entropia teórica: log2(charset_size ^ length).audit_password()— Audita uma senha e retorna um AuditResult completo.audit_file()— Audita senhas de um arquivo (uma por linha) e resume as fracas.
password_auditor/cli.py
main()
Estrutura de arquivos
- LICENSE
- README.md
- password_auditor.egg-info/PKG-INFO
- password_auditor.egg-info/SOURCES.txt
- password_auditor.egg-info/dependency_links.txt
- password_auditor.egg-info/entry_points.txt
- password_auditor.egg-info/requires.txt
- password_auditor.egg-info/top_level.txt
- password_auditor/__init__.py
- password_auditor/analyzer.py
- password_auditor/cli.py
- pyproject.toml
- tests/test_analyzer.py
README
# Password Auditor
Ferramenta de linha de comando para **auditar a qualidade de senhas** — sem quebrar senhas de terceiros. Analisa entropia, estima tempo de quebra em vários cenários de ataque, detecta senhas comuns/vazadas, sequências de teclado e reuso, e sugere melhorias.
> Projeto educacional de cybersegurança. Use apenas em senhas próprias.
## Recursos
- Cálculo de **entropia** (Shannon + espaço de busca, medida conservadora)
- **Tempo estimado de quebra** em 4 cenários (online com/sem rate-limit, offline bcrypt, offline MD5 em GPU)
- Detecção de **senhas comuns** (amostra de wordlist)
- Detecção de **sequências de teclado** e repetições
- Detecção de **reuso** entre senhas (via hash, nunca compara texto puro)
- **Sugestões** acionáveis de melhoria
- Saída colorida no terminal ou em **JSON**
## Instalação
```bash
git clone https://github.com/Diogo-Damasceno/password-auditor.git
cd password-auditor
pip install -e .
```
## Uso
```bash
# modo interativo (senha oculta, recomendado)
pwaudit
# passando direto (cuidado: fica no histórico do shell)
pwaudit 'MinhaSenha123!'
# saída JSON
pwaudit --json 'MinhaSenha123!'
# sem cores
pwaudit --plain 'MinhaSenha123!'
```
### Exemplo de saída
```
Senha: M**********!
Comprimento: 12
Charset: 95 símbolos possíveis
Entropia: 78.9 bits
Força: Forte [3/4] ▅▅▅▅
Tempo estimado para quebra:
Online (limitado, 100/s): 1.23e+15 séculos
Offline (MD5 em GPU): 12.5 anos
```
## Testes
```bash
pip install -e '.[dev]'
pytest -q
```
## Como funciona
A entropia é estimada de forma conservadora tomando o mínimo entre:
- **Espaço de busca**: `comprimento × log2(tamanho_do_charset)`
- **Shannon** ajustada pela distribuição real dos caracteres
Sequências e senhas comuns aplicam penalidades ao score final (0–4).
## Aviso legal
Ferramenta para fins **educacionais e defensivos**. Analise apenas senhas que você tem autorização para testar.
## Licença
MIT
Como rodar na prática (entrada → saída):
$ password-auditor 'P@ssw0rd'
entropia: 42.1 bits em wordlist comum: SIM (rockyou) tempo de quebra estimado: < 1s qualidade: FRACA
$ password-auditor 'Tr0ub4dor&3'
entropia: 28.0 bits sequencia de teclado detectada qualidade: FRACA