# Gerando Wordlist

As melhores wordlists, são aquelas em que conhecemos bem o nosso alvo, por exemplo, as pessoas costumam colocar em suas senhas, palavras ou números que são fáceis de memorizar ou são importantes, como datas comemorativas, nome familiares, namorado(a), número de telefone, CEP, nome do animal de estimação, time de futebol, etc. Reunir todas essas informações, já entra na área da Engenharia Social e muitas vezes as redes sociais podem nos dar essas informações de forma fácil.

###

### Combinações de Palavras

Uma prática muito comum das pessoas é juntar algo fácil de memorizar (por exemplo uma data comemorativa) com uma sequência simples (como o ano atual ou algo como "1234").\
Podemos então pegar uma mini-wordlist que contém essas sequências básicas que geralmente as pessoas usam, e combinar com uma wordlist personalizada sobre determinada pessoa

###

### Crunch

{% hint style="warning" %}
**DICA:** Caso receba o erro `Error: setlocale() failed`, execute os comandos abaixo:\
export LC\_CTYPE=en\_US.UTF-8\
export LC\_ALL=en\_US.UTF-8
{% endhint %}

Vamos gerar então uma wordlist com no mínimo 10 caracteres e no máximo 10 caracteres, sendo os primeiros 5 caracteres definido como "teste". Os `%` serão substituídos pelos dígitos de 0 a 9. O resultado será salvo em um arquivo chamado "wordlist.txt". Caso queira letras minúsculas no lugar números, utilize `@` no lugar de `%`, ou `,` para letras MAIÚSCULAS, e `^` para símbolos

```bash
crunch 10 10 -t teste%%%% > wordlist.txt
```

Agora vamos gerar uma wordlist que tem no mínimo 10 caracteres e no máximo 10 caracteres, sendo os primeiros 5 caracteres definido como "teste". Os arrobas serão substituídos pelos caracteres "A, z, 8, 9, %" O resultado será salvo em um arquivo chamado "wordlist.txt"

```bash
crunch 10 10 Az89% -t teste@@@@ > wordlist.txt
```

Agora no mínimo 1 caractere e no máximo 4 caracteres, sendo estes contendo somente os dígitos 1, 2, 3 e 4.

```bash
crunch 1 4 1234 > wordlist.txt
```

No arquivo `/usr/share/crunch/charset.lst`, é possível encontrar atalhos para determinados caracteres/dígitos, por exemplo:

```bash
crunch 3 5 -f /usr/share/crunch/charset.lst lalpha > <arquivo_saida.txt> # Wordlist de "a" à "z", de 3 caracteres
crunch 8 8 -f /usr/share/crunch/charset.lst hex-lower
crunch 9 9 -f /usr/share/crunch/charset.lst numeric -t admin@@@@
crunch 9 9 -f /usr/share/crunch/charset.lst numeric -t a@d@m@i@n@ -o <wordlist-saida.txt>
```

###

### Hashcat

Crie um arquivo de senhas simples, depois utilize o hashcat para adicionar mutações nessa wordlist base e gerar uma nova. No diretório `/usr/share/hashcat/rules` podemos ver mais scripts do hashcat.

```bash
hashcat --force --stdout <default_pass.txt> -r /usr/share/hashcat/rules/best64.rule -r /usr/share/hashcat/rules/toggles1.rule | sort -u | awk 'length($0) > 8' > <output.txt>
```



### CUPP

Gerando Wordlist de acordo com o perfil de uma pessoa

```bash
python cupp.py
```

###

### Genpmk

```bash
genpmk -f <wordlist_palavras_chave> -d <arquivo_saida> -s <ssid>
```

###

### Wordlist de uma Página HTML

#### Cewl

Pegando todas as palavras de um site e gerando uma wordlist

```bash
# -d = Profundidade do scanner (Por padrão o valor é 2)
# -m = Quantidade mínima de caracteres para entrar na wordlist
cewl -d 2 -m 7 <site> -w <wordlist.txt>
```

#### Html2Dic

Primeiro vamos pegar o código fonte

```bash
curl http://<site>.com > <output.txt>
```

Agora execute

```bash
html2dic <output.txt>
```

Feito isso, remova os valores duplicados. Isso pode ser feito facilmento com o comando `uniq` do Linux



### NameMash

Ferramenta que lê um arquivo de texto com nomes e sobrenomes e ele faz possíveis combinações de logins. Isso é útil para descobrir logins de rede e endereço  de e-mails.

```bash
python3 namemash.py <wordlist-names.txt>
```

####

### Sites

```bash
# Tutorial sobre Crunch
https://null-byte.wonderhowto.com/how-to/hack-like-pro-crack-passwords-part-4-creating-custom-wordlist-with-crunch-0156817/

# Namemash
https://gist.github.com/superkojiman/11076951
```
