
Gerador de padrões de senhas comuns usando lista de strings
$ git clone https://github.com/localh0t/m4ngl3m3
$ cd m4ngl3m3
$ ./main.py
usage: main.py [-h] [-fy FROM_YEAR] [-ty TO_YEAR] [-sy] [-nf NUMBERS_FILE]
[-sf SYMBOLS_FILE] [-cf CUSTOM_FILE] [-sbs] [-sap]
[-mm MUTATION_METHODS]
MUTATION_MODE STRINGS_FILE OUTPUT_FILE
Common password pattern generator using strings list
positional arguments:
MUTATION_MODE Mutation mode to perform: (prefix-mode |
suffix-mode | dual-mode)
STRINGS_FILE File with strings to mutate
OUTPUT_FILE Where to write the mutated strings
optional arguments:
-h, --help show this help message and exit
-fy FROM_YEAR, --from-year FROM_YEAR
Year where our iteration starts (default:
2015)
-ty TO_YEAR, --to-year TO_YEAR
Year where our iteration ends (default:
2020)
-sy, --short-year Also add shorter year form when iterating
(default: False)
-nf NUMBERS_FILE, --numbers-file NUMBERS_FILE
Numbers prefix/suffix file (default:
./files/numbers/numbers_set2.txt)
-sf SYMBOLS_FILE, --symbols-file SYMBOLS_FILE
Symbols prefix/suffix file (default:
./files/symbols/symbols_set2.txt)
-cf CUSTOM_FILE, --custom-file CUSTOM_FILE
Custom words/dates/initials/etc file
(default: None)
-sbs, --symbols-before-suffix
Insert symbols also before years/numbers/
custom (when in suffix-mode or dual-mode)
(default: False)
-sap, --symbols-after-prefix
Insert symbols also after years/numbers/
custom (when in prefix-mode or dual-mode)
(default: False)
-mm MUTATION_METHODS, --mutation-methods MUTATION_METHODS
Mutation methods to perform (comma
separated, no spaces) (valid: see
MUTATION_METHODS.md)
(default:
normal,uppercase,firstup,replacevowels)
Aqui definimos onde queremos que nosso script comece e termine a iteração sobre os anos. Muitas vezes as pessoas incluem o ano atual na tentativa de adicionar um pouco de entropia. Como as senhas podem estar desatualizadas ou os anos incluídos podem estar no futuro (próximo), vamos adicioná-los como um intervalo. Para ambientes online, adotaremos uma abordagem conservadora e incluiremos apenas intervalos da ordem de (-1, +1) ou (-2, +2). Para ambientes offline, o intervalo pode ser mais amplo, como (-20, +5) ou até (-50, +10). Exemplo de saída:
password2017
[...]
password2018
[...]
password2019
Ao iterar os anos, também adicionar sua forma abreviada de dois dígitos. Exemplo de saída:
password17
[...]
password18
[...]
password19
Neste argumento, selecionamos um arquivo contendo números que as pessoas frequentemente adicionam às suas senhas. Por padrão, incluí 6 conjuntos, sendo o maior o 6 e os demais subconjuntos do anterior. Os números incluídos nos primeiros conjuntos (1,2…) têm maior probabilidade de estarem presentes do que aqueles apenas incluídos nos conjuntos mais recentes (…5,6). Novamente, para ambientes online, usaríamos os três primeiros conjuntos, enquanto em ambientes offline poderíamos usar os últimos. Por padrão, o script usa o conjunto número 2. Exemplo de saída:
password1
[...]
password123
[...]
password1234
Neste argumento, selecionamos um arquivo contendo símbolos que as pessoas frequentemente adicionam às suas senhas. Novamente, o conjunto número 1 é o menor, o conjunto número 6 é o maior. Os símbolos incluídos nos primeiros conjuntos (1,2…) têm maior probabilidade de estarem presentes do que aqueles apenas incluídos nos conjuntos mais recentes (…5,6). Por padrão, o script usa o conjunto número 2. Exemplo de saída:
password123!
[...]
password2018?
[...]
password1234.
Aqui adicionamos qualquer outra coisa que sabemos sobre nossos alvos (e que não é considerada a “base” da senha em si). Deixe a criatividade rolar! Pode ser desde iniciais da empresa, datas de nascimento, datas especiais… até anos específicos, palavras-chave curtas, etc. Essas strings personalizadas serão tratadas da mesma forma que anos/números. Exemplo de saída:
passwordABC
[...]
password01011980!
[...]
password.admin
Neste parâmetro, selecionamos como a ferramenta funcionará ao deslocar strings. Você pode escolher uma das três opções:
Arquivo contendo strings a serem mutadas. Se você estiver, por exemplo, realizando um pentest e não souber por onde começar, sugiro usar uma ferramenta como o CeWL para percorrer o site da empresa e manter as palavras mais recorrentes (incluindo o nome da empresa, claro).
Simplesmente, o arquivo onde queremos escrever as strings mutadas.
Quando esta flag está ativada e estamos executando a ferramenta no modo suffix-mode ou dual-mode, o script também adicionará os símbolos antes de anos/números/personalizados. Exemplo de saída:
password2018!
[...]
password!2018
[...]
Quando esta flag está ativada e estamos executando a ferramenta no modo prefix-mode ou dual-mode, o script também adicionará os símbolos após anos/números/personalizados. Exemplo de saída:
!2018password
[...]
2018!password
[...]
Neste parâmetro, definimos quais métodos de mutação serão executados. Métodos de mutação são transformações base realizadas antes de começar a iterar sobre anos/números/símbolos/personalizados. Você pode selecionar quantos métodos de mutação quiser. Para uma lista de todos os métodos de mutação válidos, consulte: MUTATION_METHODS.md.
Por padrão, o m4ngl3m3! é executado com os seguintes: Normal, UpperCase, FirstUp e ReplaceVowels.
Para ver alguns exemplos básicos de uso, consulte: USAGE_EXAMPLES.md
Consulte: LICENSE.md