O **John** é uma ferramenta de [[quebra de senhas]] via _brute force_, _dictionary attack_ e _incremental attack_. Ele suporta vários formatos de [[hash]], como **MD5, SHA1, NTLM, bcrypt**, entre outros.
## Exemplos de uso
Crack simples com dicionário
```shell
john --wordlist=rockyou.txt hash.txt
```
Ver senhas quebradas
```shell
john --show hash.txt
```
Como quebrar de forma incremental:
```shell
john --incremental hash.txt
```
❗O modo incremental será explicado mais abaixo.
Como visualizar os tipos de formatos suportados:
```shell
john --list=formats
```
### Modo Incremental
O modo **`--incremental`** é uma forma de **força bruta** inteligente. Em vez de tentar _todas_ as combinações possíveis no universo aleatoriamente, o John tenta as senhas **mais prováveis primeiro**, com base em **estatísticas de senhas reais**.
Ele usa um **algoritmo incremental** que prioriza combinações com **caracteres mais comuns**, com base em **frequência e padrões observados** (ex: "123", "abc", "qwe", etc).
Por padrão, ele tenta:
- Senhas de 1 até 8 caracteres (pode ser alterado)
- Com todos os tipos de caracteres: letras minúsculas, maiúsculas, números e símbolos
- Seguindo perfis como `All`, `Digits`, `Alpha`, etc
```shell
john --incremental=Digits hash.txt
```
Visualizar perfis disponíveis:
```shell
john --list=incremental-modes
```