
Générateur de motifs de mots de passe courants utilisant une liste de chaînes
$ 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)
Ici, nous définissons où nous voulons que notre script commence et termine l'itération sur les années. Souvent, les gens incluent l'année en cours pour ajouter un peu d'entropie. Comme les mots de passe peuvent être obsolètes, ou les années incluses peuvent être dans le (proche) futur, nous allons les ajouter sous forme de plage. Pour les environnements en ligne, on adoptera une approche conservatrice en incluant seulement des plages de l'ordre de (-1, +1) ou (-2, +2). Pour les environnements hors ligne, la plage peut être plus large, allant jusqu'à (-20, +5) voire (-50, +10). Exemple de sortie :
password2017
[...]
password2018
[...]
password2019
Lors de l'itération sur les années, ajoute également sa forme abrégée à deux chiffres. Exemple de sortie :
password17
[...]
password18
[...]
password19
Avec cet argument, nous sélectionnons un fichier contenant les chiffres que les gens ajoutent fréquemment à leurs mots de passe. Par défaut, j'ai inclus 6 ensembles, le plus grand étant le 6, et les autres étant des sous-ensembles du précédent. Les chiffres inclus dans les premiers ensembles (1,2…) sont plus susceptibles d'être présents que ceux uniquement inclus dans les derniers ensembles (…5,6). Encore une fois, pour les environnements en ligne, nous utiliserions les trois premiers ensembles, tandis que pour les environnements hors ligne, nous pourrions utiliser les derniers. Par défaut, le script utilise l'ensemble numéro 2. Exemple de sortie :
password1
[...]
password123
[...]
password1234
Avec cet argument, nous sélectionnons un fichier contenant les symboles que les gens ajoutent fréquemment à leurs mots de passe. Là encore, l'ensemble numéro 1 est le plus court, l'ensemble numéro 6 est le plus long. Les symboles inclus dans les premiers ensembles (1,2…) sont plus susceptibles d'être présents que ceux uniquement inclus dans les derniers ensembles (…5,6). Par défaut, le script utilise l'ensemble numéro 2. Exemple de sortie :
password123!
[...]
password2018?
[...]
password1234.
Ici, nous ajoutons tout ce que nous savons sur nos cibles (et qui n'est pas considéré comme la « base » du mot de passe lui-même). Laissez libre cours à votre créativité ! Cela peut aller des initiales de l'entreprise, dates de naissance, dates spéciales… aux années spécifiques, mots-clés courts, etc. Ces chaînes personnalisées seront traitées de la même manière que les années/chiffres. Exemple de sortie :
passwordABC
[...]
password01011980!
[...]
password.admin
Ce paramètre permet de sélectionner la façon dont l'outil fonctionnera lors du déplacement des chaînes. Vous pouvez choisir l'une des trois options suivantes :
Fichier contenant les chaînes à muter. Si vous faites par exemple un test d'intrusion et ne savez pas par où commencer, je vous suggère d'utiliser un outil comme CeWL pour explorer le site web de l'entreprise et conserver les mots les plus récurrents (incluant bien sûr le nom de l'entreprise).
Tout simplement, le fichier dans lequel nous voulons écrire les chaînes mutées.
Lorsque ce drapeau est activé et que nous exécutons l'outil en suffix-mode ou dual-mode, le script ajoutera également les symboles avant les années/chiffres/personnalisations. Exemple de sortie :
password2018!
[...]
password!2018
[...]
Lorsque ce drapeau est activé et que nous exécutons l'outil en prefix-mode ou dual-mode, le script ajoutera également les symboles après les années/chiffres/personnalisations. Exemple de sortie :
!2018password
[...]
2018!password
[...]
Ce paramètre définit les méthodes de mutation à appliquer. Les méthodes de mutation sont des transformations de base effectuées avant de commencer l'itération sur les années/chiffres/symboles/personnalisations. Vous pouvez sélectionner autant de méthodes de mutation que vous le souhaitez. Pour une liste de toutes les méthodes de mutation valides, consultez : MUTATION_METHODS.md.
Par défaut, m4ngl3m3! s'exécute avec les méthodes suivantes : Normal, UpperCase, FirstUp et ReplaceVowels.
Pour voir quelques exemples d'utilisation de base, veuillez consulter : USAGE_EXAMPLES.md
Voir : LICENSE.md