Generación de lista de contraseñas, permutaciones y contraseñas largas

2

Me preguntaba qué podría ser una forma de generar una lista donde las contraseñas eran como:

CorrectHorseBatteryStaple
BanjoTurtleNinjaHobo
PizzaSurfMotherMetal
etc...

Ya jugueteaba un poco con el crujido, pero no pude encontrar una manera de seleccionar grupos de palabras para permutar. Pensé en escribir un guión que se ejecute en una lista de palabras de palabras en inglés (sin contar los artículos y cosas por el estilo) y tome de 3 a 5 palabras al azar y luego las coloque en la lista para las permutaciones, pero pronto me di cuenta de que la lista de mundos resultante llegaría rápidamente. una dimensión más allá de lo útil.

Tal vez haya una forma de generar solo una fracción de las permutaciones para cada conjunto de palabras, la lista no estaría completa, pero al menos podría ser utilizable.

digamos, seleccionando 4 palabras al azar de las primeras 2000 palabras más utilizadas (sin considerar artículos y demás) y permutar esas 4 palabras (o 3 o 5).

Ejecutando algunos números:

combinations of 4 words out of a group of 2000: 664,668,499,500 ( 664 Bilions ).
permutations of 4 words: 4! = 24

24 * 664,668,499,500 = 15,952,043,988,00 ( 15,952 Bilions ).

Y eso significaría algo así como un poco más de 30 PB de lista de palabras. (Asumí 7 bytes para cada palabra). Demasiado.

Incluso tomar la mitad de esas combinaciones significaría tener 15 PB de material para escanear.

Esos son 50 años de descifrado ininterrumpido de contraseñas a 10000 palabras por segundo. No, gracias.

¿Hay una idea más inteligente? Estoy empezando a pensar que este tipo de contraseñas son casi ilegibles.

    
pregunta WhiteEyeTree 18.05.2016 - 17:11
fuente

1 respuesta

1

Tienes 100% de razón en que almacenar todas las permutaciones posibles no se escalaría muy bien.

Una forma eficiente de generar todas las frases de contraseña posibles de una lista de palabras de origen "sobre la marcha" (sin tener que almacenar el resultado) es mediante el uso del proyecto hashcat princeprocessor :

$ cat wordlist.txt
Correct
Horse
Battery
Staple

$ pp64 --elem-cnt-min=4 <wordlist.txt | head
HorseHorseHorseHorse
HorseHorseHorseStaple
HorseHorseStapleHorse
HorseStapleHorseHorse
StapleHorseHorseHorse
HorseHorseStapleStaple
HorseStapleHorseStaple
StapleHorseHorseStaple
HorseStapleStapleHorse
StapleHorseStapleHorse

De forma predeterminada, la longitud máxima de la contraseña que se generará es de 16 caracteres. Para su caso de uso, probablemente querrá aumentar eso (para que funcione lo anterior):

--- pp.c    2018-01-06 14:55:52.259441280 -0900
+++ pp.c.new    2018-01-14 18:20:51.162651928 -0900
@@ -29,7 +29,7 @@
 #define IN_LEN_MAX    32
 #define OUT_LEN_MAX   32 /* Limited by (u32)(1 << pw_len - 1) */
 #define PW_MIN        1
-#define PW_MAX        16
+#define PW_MAX        32
 #define ELEM_CNT_MIN  1
 #define ELEM_CNT_MAX  8
 #define WL_DIST_LEN   0

... y recompilar:

$ make clean
rm -f pp32.bin pp64.bin pp32.exe pp64.exe pp32.app pp64.app

$ make
gcc   -W -Wall -std=c99 -O2 -s -m64 -DLINUX   -o pp64.bin pp.c mpz_int128.h

$ ls -la pp64.bin
-rwxr-xr-x 1 user user 22912 Jan 14 18:27 pp64.bin

Una característica esencial de princeprocessor es su capacidad para continuar donde lo dejó usando la marca -s , si tiene que interrumpir el proceso por alguna razón. Almacena un valor de restauración en el archivo "pp.save" al salir, y ese valor se puede usar para reanudar exactamente dónde se interrumpió, incluso con miles de millones de conjeturas. Esto hace que su valor sobre una gran lista de palabras estática sea aún mejor. p>     

respondido por el Royce Williams 15.01.2018 - 04:32
fuente

Lea otras preguntas en las etiquetas