Come generare un dizionario personalizzato per questa struttura di password

0

Sto cercando di eseguire un attacco di dizionario per una password che è di questa struttura:

  • 15 caratteri
  • Lettere minuscole e 0-9
  • Prima una parola di cinque lettere, quindi 4 numeri, quindi 6 lettere

Esempi di password possibili:

creek8937basket
arrow3156hardly
eager4109eleven

Posso usare con successo un programma come crunch per generare una lista di password con 5 lettere minuscole, 4 numeri e poi 6 lettere minuscole, ma voglio usare in qualche modo parole per la prima e l'ultima parte.

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

Come posso creare un dizionario in modo che utilizzi parole inglesi di 5 e 6 lettere per la prima e l'ultima parte della password.

Conosco due dizionari per questo, ma ho bisogno di scoprire come implementarli:

posta NULL 26.01.2017 - 18:29
fonte

1 risposta

2

Questo non è esattamente quello che vuoi ma è una stretta approssimazione di esso. Prenderà una parola a caso da un elenco di 5 lettere e da un elenco di 6 lettere e produrrà tutte le possibili combinazioni di 4 cifre tra le parole e stamperà su un file, pronto per un ulteriore utilizzo.

Puoi ripeterlo tutte le volte che vuoi e salvare tutti questi file come dizionari o anche unirli se desideri farlo. Inoltre, questo salverà il tuo computer dal soffocamento fino alla morte, sia nello spazio che nelle prestazioni.

Uno script 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: entrambi i file di input .txt devono avere una parola per riga per funzionare correttamente.

EDIT: Vorrei aggiungere che puoi stampare un file più grande, se vuoi, ma sai che, anche se molto sottile, le probabilità che il prefisso e il suffisso vengano ripetuti nel file di output . Ecco come puoi modificare il codice.

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)

Non molto carina ma ha fatto il lavoro. Tuttavia, come affermato sopra, le possibilità di duplicare aumentano con la ripetizione. E più grande è il file, più fastidioso è modificarlo manualmente.

    
risposta data 27.01.2017 - 02:34
fonte

Leggi altre domande sui tag