Come posso generare dizionari brute-force personalizzati?

12

Durante i test ho scoperto che le aziende utilizzano spesso le varianti dei loro nomi per password importanti (ad esempio, la password di Microsoft potrebbe essere M1cr0s0f + o m1cros0ft etc etc).

Quindi, se avessi indicato la frase "stack exchange", sarebbe ideale calcolare quante più varianti logiche possibili includendo cose come:

stack_exchange!

Ho visto molti generatori di dizionari ma sembrano tutti fare qualcosa sulla falsariga di

aaaaaaa
aaaaaab
aaaaaac
aaaaaad

Mi chiedo se ci sono strumenti disponibili che mi permetteranno di generare un gran numero di permutazioni dato una parola 'iniziale'.

    
posta NULLZ 11.09.2013 - 04:04
fonte

6 risposte

6

Prova a utilizzare crunch - generatore di elenchi di parole .

L'utilizzo è:

./crunch <from-len> <to-len> [-f <path to charset.lst> charset-name] [-o wordlist.txt or START] [-t [FIXED]@@@@] [-s startblock]
L'opzione

-t ti consente di specificare un modello, ad esempio: st% ck ^% xch% ng%

Dove solo

  • i @ 's cambieranno con lettere minuscole
  • i, cambieranno con lettere maiuscole
  • i% cambieranno con i numeri
  • i ^ 's cambieranno con i simboli

Funzionando come segue:

./crunch 14 14 -t st%ck^%xch%ng% -o wordlist.txt

fornisce 330000 risultati:

st0ck!0xch0ng0
st0ck!0xch0ng1
st0ck!0xch0ng2
st0ck!0xch0ng3
st0ck!0xch0ng4
st0ck!0xch0ng5
st0ck!0xch0ng6
...

Puoi anche modificare il set di caratteri se ritieni che sia insufficiente.

    
risposta data 11.09.2013 - 15:19
fonte
5

Ho appena creato uno strumento che farà ciò di cui stai parlando. Praticamente prende una parola e genera diverse password possibili sostituendo i caratteri con lettere maiuscole / minuscole e sostituzioni comuni. Sentiti libero di dare un'occhiata qui:

link

Per una parola target di stackexchange la password potenziale diventa piuttosto lunga poiché essenzialmente sta creando un prodotto cartesiano di tutte le possibili sostituzioni di caratteri. La chiamata di seguito:

python passgen.py -f stackexchange

Genera una lista con 11.943.936 password, come mostrato di seguito:

stackexchange
stackexchangE
stackexchang3
stackexchanGe
stackexchanGE
.
.
.
574<K3+<#4N9e
574<K3+<#4N9E
574<K3+<#4N93
    
risposta data 19.08.2014 - 17:56
fonte
2

Non sono sicuro delle implicazioni algoritmiche (il che significa che probabilmente c'è molto da migliorare nella mia soluzione) ma qui va:

Ogni lettera ha un'ortografia alternativa. Dal tuo esempio, o avrebbe l'array di O,0 (l'ultimo è uno zero). Allo stesso modo s otterrebbe S,5 ecc. Anche NULL può essere sostituito con !,1,2,3 ... ecc. I Digraph sono possibili anche laddove applicabile.

Quindi non permetti le parole, permetti le lettere. Non sono sicuro che esista un set di regole precompilato, ma non importa; la parte che richiede più tempo è quella di digitare le permutazioni delle lettere. Il ciclo principale sarebbe perfettamente semplice.

for($i=0; $i<strlen($word); $i++){
    $l=$word[$i];
    for($j=0; $j<strlen($perms[$l]); $j++){
        save(perms[$l][$j]);
    isUpper($l) ? $word[$i]=tolower($l) : $word[$i]=toupper($l);
    save($word);
}

per alcuni pseudocodici con sapore PHP. Ho scelto PHP perché gli array associativi lo rendono un po 'più comodo. In altre parole: scrivere lo strumento da solo potrebbe essere più veloce della ricerca effettiva di uno.

    
risposta data 11.09.2013 - 07:48
fonte
2

ecco qui! l'ho fatto qualche mese fa, è uno script Python 2.7 : p spero che ti aiuti

import time
print ("---------------------------------------------------");
print ("Welcome to BruteForce List Generator!");
print ("---------------------------------------------------");
print ("File output can be long, sometimes in x100Mbs!");
print ("so, have patience fgt,");
print (" ");
print ("Press ^C to exit");
print ("---------------------------------------------------");
length=int(raw_input("Enter the maximum of characters: "))
name=raw_input("Enter destination file name with extension (.txt): ")
tic = time.clock()
print ("---------------------------------------------------");
print ("Running, Please Wait!");
print ("---------------------------------------------------");
lista=[0 for x in xrange(length)]
x=length-1
string="abcdefghijklnmopqrstuvwxyz1234567890"
list_of_results=[]
file1=file(name,"w")
while(x>-1):
    result=""
    if lista[x]==len(string)-1:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]=0
        x-=1
    elif x==length-1:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]+=1
    else:
        for z in xrange(length):
            result+=string[lista[z]]
        lista[x]+=1
        if x>0:
            x+=1
        else:
            x=length-1
    file1.write(result+"\n")
toc = time.clock()
ttn = toc - tic
print ("Done! in "+str(ttn)+" seconds.");
print ("Please check "+str(name)+" in your directory");
print ("---------------------------------------------------");

Cheers!

    
risposta data 06.09.2014 - 16:16
fonte
1

Ho iniziato a creare un'applicazione Qt per fare ciò. È progettato per essere utilizzato contro un utente specifico. L'ho creato per soddisfare le mie esigenze, quindi è orientato in un modo, ma ho intenzione di renderlo più personalizzabile. Devi compilare te stesso al momento ma è Qt in modo che funzioni sulla maggior parte delle piattaforme.

È su Github

Gli dai il nome di società e facoltativamente alcune parole chiave aggiuntive e genererà password basate su di esse. È a 0.1 in questo momento e in fase di sviluppo attivo. Il codice è semplice, quindi se non fa esattamente quello che ti serve puoi apportare modifiche (e persino contribuire di nuovo)

    
risposta data 06.09.2014 - 14:52
fonte
0

Hmmm. potresti usarlo con configurazioni extra

link

    
risposta data 30.12.2016 - 14:52
fonte

Leggi altre domande sui tag