pwned-check
Verificador de vazamento de senhas via k-anonymity (HIBP range API, só 5 chars do SHA-1 saem).
9 testes · 9 passou · 0 falhou · 0 skip
- test_sha1_hex_known_value0.00s
- test_sha1_hex_is_uppercase0.00s
- test_split_hash_lengths0.00s
- test_match_suffix_count_found0.00s
- test_match_suffix_count_not_found0.00s
- test_match_suffix_count_case_insensitive0.00s
- test_check_password_offline0.00s
- test_check_password_online_erro_rede0.00s
- test_check_password_online_sucesso0.00s
Entrypoints (CLI)
pwned-check
Módulos e funções principais
src/pwned_check/checker.py
sha1_hex()— Retorna o SHA-1 da senha em maiúsculas hexadecimais.split_hash()— Divide o hash em (prefixo, sufixo) segundo o comprimento do prefixo.match_suffix_count()— Procura o sufixo na resposta do range HIBP e devolve a contagem.
src/pwned_check/cli.py
build_parser()build_result_message()— Monta a mensagem de saída com base na contagem de vazamentos.main()
src/pwned_check/hibp.py
query_hibp()— Consulta a API de range da HIBP enviando apenas o prefixo de 5 chars.check_password_online()— Calcula hash, envia só o prefixo e retorna quantas vezes vazou.load_local_hashes()— Carrega um arquivo de hashes SHA-1 (um por linha, maiúsculas).check_password_offline()— Verifica a senha contra um conjunto local de hashes SHA-1.
Estrutura de arquivos
- LICENSE
- README.md
- pyproject.toml
- src/pwned_check.egg-info/PKG-INFO
- src/pwned_check.egg-info/SOURCES.txt
- src/pwned_check.egg-info/dependency_links.txt
- src/pwned_check.egg-info/entry_points.txt
- src/pwned_check.egg-info/top_level.txt
- src/pwned_check/__init__.py
- src/pwned_check/checker.py
- src/pwned_check/cli.py
- src/pwned_check/hibp.py
- tests/test_checker.py
README
# pwned-check
Verificador defensivo de vazamento de senhas baseado em **k-anonymity** (modelo
do [Have I Been Pwned](https://haveibeenpwned.com/)). A senha **nunca** sai da
sua máquina: apenas os 5 primeiros caracteres do SHA-1 são enviados à API.
## Aviso ético
Ferramenta **educacional e defensiva**. Use apenas para verificar suas próprias
senhas ou em contextos com autorização. Não a utilize para perseguir, expor ou
atacar terceiros. O autor não se responsabiliza por uso indevido.
## Instalação
```bash
pip install -e .
```
Requer Python 3.10+ (apenas biblioteca padrão; nenhuma dependência externa).
## Uso
### Online (HIBP range API)
```bash
pwned-check "minhaSenha123"
```
### Offline (arquivo local de hashes)
```bash
pwned-check --file hashes.txt "minhaSenha123"
```
No modo offline, o arquivo deve conter um hash SHA-1 (maiúsculas) por linha.
## Como funciona
1. Calcula `SHA-1` da senha (em maiúsculas hexadecimais).
2. Envia **só os 5 primeiros caracteres** (prefixo) à API pública da HIBP.
3. Confere o sufixo na lista de respostas retornadas (k-anonymity).
Como a API só recebe o prefixo, ela não sabe qual senha você está testando.
## Testes
```bash
pip install pytest
pytest tests/
```
## Licença
MIT — Copyright (c) 2026 Diogo Damasceno. Veja `LICENSE`.
Como rodar na prática (entrada → saída):
$ pwned-check 's3nh4fraca'
Vazada 381 vezes\nSenha NAO e segura