Cómo generar un diccionario personalizado para esta estructura de contraseña

0

Estoy intentando llevar a cabo un ataque de diccionario para una contraseña que tenga esta estructura:

  • 15 caracteres
  • letras minúsculas y 0-9
  • Primero una palabra de cinco letras, luego 4 números, luego una palabra de 6 letras

Ejemplos de contraseñas posibles:

creek8937basket
arrow3156hardly
eager4109eleven

Puedo usar con éxito un programa como crujido para generar una lista de contraseñas con 5 letras minúsculas, 4 números y luego 6 letras minúsculas, pero quiero usar palabras para la primera y la última parte.

crunch 15 15 -d 2% -d 2@ -t @@@@@%%%%@@@@@@ | aircrack-ng -e ESSID -w - Desktop/wpa2.cap 

¿Cómo puedo crear un diccionario para que use palabras en inglés de 5 y 6 letras para la primera y la última parte de la contraseña?

Sé de dos diccionarios para esto, pero necesito saber cómo implementarlos:

pregunta NULL 26.01.2017 - 18:29
fuente

1 respuesta

2

Esto no es exactamente lo que quieres pero es una aproximación cercana de esto. Tomará una palabra aleatoria de una lista de palabras de 5 letras y una lista de palabras de 6 letras y generará todas las combinaciones posibles de 4 dígitos entre las palabras e imprimirá en un archivo, listo para su uso posterior.

Puede repetir esto tantas veces como desee y guardar todos estos archivos como diccionarios o incluso fusionarlos si así lo desea. También esto evitará que su computadora se ahogue, tanto en espacio como en rendimiento.

Una secuencia de comandos de python:

import sys

orig_stdout = sys.stdout
f = file('pass_list', 'w') # Specify the name and path of the output file.
sys.stdout = f

import itertools
from itertools import product
import random

digits = '0123456789' # Set the digits.

prefix = open('5-letter.txt').read().split() # Specifiy the path to 5 letter word list.
first = random.choice(prefix)

suffix = open('6-letter.txt').read().split() # Specifiy the path to 6 letter word list.
last = random.choice(suffix)

for keygen in itertools.product(digits, repeat=4): # Specify the length of the digit combinations.
print (first+ ''.join(keygen)+last)

sys.stdout = orig_stdout
f.close()

Nota: Ambos archivos de entrada .txt deben tener una palabra por línea para que funcione correctamente.

EDITAR: Me gustaría agregar que puede imprimir un archivo más grande si lo desea, pero sabe que es posible que las palabras de prefijo y sufijo se repitan en el archivo de salida, aunque sean muy delgadas. . Aquí es cómo puede modificar el código.

prefix = open('5-letter.txt').read().split() 
a = random.choice(prefix)
b = random.choice(prefix)
c = random.choice(prefix)

suffix = open('6-letter.txt').read().split() 
x = random.choice(suffix)
y = random.choice(suffix)
z = random.choice(suffix)

for keygen in itertools.product(digits, repeat=4): 
print (a+ '' .join(keygen)+x)
for keygen in itertools.product(digits, repeat=4): 
print (b+ '' .join(keygen)+y)
for keygen in itertools.product(digits, repeat=4): 
print (c+ '' .join(keygen)+z)

No es muy bonito pero hace el trabajo. Sin embargo, como se indicó anteriormente, las posibilidades de duplicación aumentan con la repetición. Y cuanto más grande sea el archivo, más molesto es editarlo manualmente.

    
respondido por el user633551 27.01.2017 - 02:34
fuente

Lea otras preguntas en las etiquetas