
Generador de patrones de contraseñas comunes usando listas de cadenas
$ 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)
Aquí definimos dónde queremos que nuestro script comience y termine de iterar sobre los años. Muchas veces las personas incluyen el año actual en un esfuerzo por agregar algo de entropía. Como las contraseñas pueden estar desactualizadas, o los años incluidos pueden estar en un (cercano) futuro, los agregaremos como un rango. Para entornos en línea, adoptaríamos un enfoque conservador e incluiríamos solo rangos del orden de (-1, +1) o (-2, +2). Para entornos fuera de línea, el rango podría ser más amplio hasta (-20, +5) o incluso (-50, +10). Ejemplo de salida:
password2017
[...]
password2018
[...]
password2019
Al iterar años, también agrega su forma más corta de dos dígitos. Ejemplo de salida:
password17
[...]
password18
[...]
password19
En este argumento seleccionaremos un archivo que contenga números que las personas agregan frecuentemente a sus contraseñas. Por defecto he incluido 6 conjuntos, siendo el más grande el 6, y el resto subconjuntos del anterior. Es más probable que los números incluidos en los primeros conjuntos (1,2…) estén presentes que aquellos solo incluidos en los últimos conjuntos (…5,6). Nuevamente, para entornos en línea, usaríamos los primeros tres conjuntos, mientras que en entornos fuera de línea, podríamos usar los últimos. Por defecto, el script utiliza el conjunto número 2. Ejemplo de salida:
password1
[...]
password123
[...]
password1234
En este argumento seleccionaremos un archivo que contenga símbolos que las personas agregan frecuentemente a sus contraseñas. De nuevo, el conjunto número 1 es el más corto, el conjunto número 6 es el más grande. Es más probable que los símbolos incluidos en los primeros conjuntos (1,2…) estén presentes que aquellos solo incluidos en los últimos conjuntos (…5,6). Por defecto, el script utiliza el conjunto número 2. Ejemplo de salida:
password123!
[...]
password2018?
[...]
password1234.
Aquí agregamos cualquier otra cosa que sepamos sobre nuestros objetivos (y que no se considere la “base” de la contraseña en sí). ¡Dejemos volar la creatividad! Puede ir desde iniciales de empresa, fechas de nacimiento, fechas especiales… hasta años específicos, palabras clave cortas, etc. Estas cadenas personalizadas se tratarán de la misma manera que los años/números. Ejemplo de salida:
passwordABC
[...]
password01011980!
[...]
password.admin
En este parámetro seleccionaremos cómo funcionará la herramienta al desplazar cadenas. Puedes elegir uno de tres:
Archivo que contiene cadenas a mutar. Si por ejemplo estás realizando una prueba de penetración y no sabes por dónde empezar, te sugeriría usar una herramienta como CeWL para rastrear el sitio web de la empresa y quedarte con las palabras más recurrentes (incluyendo el nombre de la empresa, por supuesto).
Simplemente, el archivo donde queremos escribir las cadenas mutadas.
Cuando esta bandera está habilitada y ejecutamos la herramienta en modo suffix-mode o dual-mode, el script también agregará los símbolos antes de años/números/personalizados. Ejemplo de salida:
password2018!
[...]
password!2018
[...]
Cuando esta bandera está habilitada y ejecutamos la herramienta en modo prefix-mode o dual-mode, el script también agregará los símbolos después de años/números/personalizados. Ejemplo de salida:
!2018password
[...]
2018!password
[...]
En este parámetro definimos qué métodos de mutación se van a realizar. Los métodos de mutación son transformaciones base realizadas antes de comenzar a iterar sobre años/números/símbolos/personalizados. Puedes seleccionar tantos métodos de mutación como desees. Para una lista de todos los métodos de mutación válidos, consulta: MUTATION_METHODS.md.
Por defecto, m4ngl3m3! se ejecuta con los siguientes: Normal, UpperCase, FirstUp y ReplaceVowels.
Para ver algunos ejemplos básicos de uso, por favor consulta: USAGE_EXAMPLES.md
Ver: LICENSE.md