Me gustaría generar una lista de palabras que contenga palabras y números de 2 dígitos. Quiero que el crujido los mezcle como 15password15, password15, 15password ...
¿Hay alguna manera de que pueda hacerlo con crunch o necesito otro script?
Dependiendo de su caso de uso, hay un par de opciones:
Si desea tener un gran control sobre los contenidos, pero también desea muchas permutaciones, entonces la única forma de hacerlo es una secuencia de comandos (como ya se sugirió en los comentarios).
De lo contrario, las herramientas de la familia hashcat se pueden usar para generar todas las permutaciones posibles hasta un recuento de elementos dado. Especialmente para el caso de uso general del título de su pregunta "usar palabras como caracteres", princeprocessor es una opción efectiva.
Como mínimo, suena como si necesitaras usar un script para generar todos los números de dos dígitos posibles, y luego combinar esa lista con tu otro diccionario y luego introducirlos en una herramienta que generará muchas combinaciones diferentes para ti. Hay un par de maneras de hacer esto.
Aquí están los archivos que usaré en algunos ejemplos.
$ cat - >words.list
password
qwerty
iloveyou
$ seq -w 1 99 >digits.list
$ head -1 digits.list
01
$ tail -1 digits.list
99
Combinar una lista de cadenas en todas las combinaciones posibles es lo que los crackers de contraseñas usualmente denominan combinator attack . Algunas variantes de este ataque solo combinan cada elemento dos o tres veces, pero parece que estás buscando un rango de conteos de elementos. De lo contrario, el combinator y el combinator3 de hashcat-utils podrían generar las listas:
$ combinator words.list digits.list | head -5
password01
password02
password03
password04
password05
$ combinator3 digits.list words.list digits.list | head -5
01password01
01password02
01password03
01password04
01password05
Si solo necesitaras recorrer todos los números posibles en una posición específica (al final o al principio), un ataque híbrido (lista de palabras + máscara) funcionaría, y podrías usar el hashcat Opción --stdout
para generar la lista:
$ hashcat --stdout -a 6 words.list ?d?d | head -5
password12
password08
password20
password31
password98
$ hashcat --stdout -a 7 ?d?d words.list | head -5
12password
08password
20password
31password
98password
Pero si desea más de 3 elementos por resultado: cadenas como '1515password15', 'passwordpassword1515', '15password15password' - etc, entonces se encontrará con los límites de dos o tres elementos por cadena de estos enfoques.
Si está dispuesto a estar un poco relajado con respecto a la composición, en otras palabras, si está bien si algunas de las cadenas son solo dígitos, como "013522" o palabras sin dígitos, puede escapar de esas limitaciones con princeprocessor ( pp64
), así:
$ cat words.list | pp64 | tail -5
iloveyouquerty
passwordpassword
iloveyoupassword
passwordiloveyou
iloveyouiloveyou
princeprocessor generará todas las permutaciones posibles, hasta el recuento de elementos que especifique.
Un problema potencial es que princeprocessor intentará ordenar la salida a favor de cadenas más cortas primero, por lo que obtendrás muchos números antes de comenzar a tocar las palabras:
$ cat digits.list words.list | pp64 | head -100000000 | tail -5
07743573
08743573
09743573
10743573
11743573
Si desea más control sobre los contenidos, por ejemplo, todas las cadenas resultantes deben contener al menos un conjunto de no dígitos, simplemente filtraría los resultados con grep
:
$ cat digits.list words.list | pp64 | egrep [a-z] | head
password
iloveyou
01qwerty
02qwerty
03qwerty
04qwerty
05qwerty
06qwerty
07qwerty
08qwerty
09qwerty
10qwerty
$ cat digits.list words.list | pp64 | egrep [a-z] | egrep [0-9] | head -5000 | tail
4145qwerty
4245qwerty
4345qwerty
4445qwerty
4545qwerty
4645qwerty
4745qwerty
4845qwerty
4945qwerty
5045qwerty
Si solo desea resultados que garanticen al menos un elemento de ambas listas, pero también desea un número variable de elementos, filtrar la salida de princeprocessor es la mejor manera que conozco.
Filtrar la salida de princeprocessor con grep
es una solución alternativa (porque no existe ninguna herramienta que entienda de forma nativa que desea al menos un elemento de cada lista). Por lo que sé, si ese es su caso de uso, se requeriría un nuevo desarrollo (ya sea escribiendo su propio script o modificando la fuente del princeprocessor).
Lea otras preguntas en las etiquetas password-cracking dictionary crunch