La password alfanumerica della forza bruta utilizza JohnTheRipper

2

Recentemente ho recuperato un archivio zip con alcuni file a cui ho bisogno di accedere, ma non ricordo la password. Tutto quello che posso ricordare è che la password era breve (circa 3-4 caratteri) e conteneva solo caratteri minuscoli e possibilmente numeri). Tuttavia non esiste una modalità Incrementale per questa particolare situazione in John the Ripper. Il più vicino è lanman, che aumenta anche l'insieme delle possibili password, includendo caratteri maiuscoli, che sono sicuro che la password non ne includa.

Sebbene io possa modificare il file john.conf in modo che una modalità specifica vada solo a 4 caratteri, ad esempio, non so come personalizzare il set di caratteri da provare. Come potrei fare questo?

    
posta andrepd 25.08.2014 - 21:33
fonte

2 risposte

4

lettere minuscole + numeri

Incrementale ha in realtà una modalità predefinita per i numeri minuscoli +:

[Incremental:LowerNum]
File = $JOHN/lowernum.chr
MinLen = 1
MaxLen = 13
CharCount = 36

Dalla documentazione :

"LowerNum" (lowercase letters plus digits, for 36 total)

Regola solo MinLen e MaxLen .

Crea una nuova modalità incrementale con determinati caratteri

Se vuoi creare il tuo file chr con un set personalizzato di caratteri, dovresti farlo in questo modo:

john --pot=YOUR.pot --make-charset=YOUR_NEW_FILE.chr --external=filter_lowernum

filter_lowernum è il filtro che determina quali caratteri saranno presenti nel tuo file chr . È definito in john.conf (sotto [List.External:Filter_LowerNum] ) e puoi creare i tuoi filtri anche lì. Il codice per LowerNum ha il seguente aspetto:

[List.External:Filter_LowerNum]
void filter()
{
    int i, c;

    i = 0;
    while (c = word[i++])
    if (((c < 'a' || c > 'z') && (c < '0' || c > '9')) || i > 13) {
        word = 0; return;
    }
}

Quindi aggiungi il filtro incrementale alla tua configurazione.

    
risposta data 25.08.2014 - 22:36
fonte
3

puoi eseguire il seguente codice Python per fare ciò

import zipfile,sys,time
import itertools
def extractFile(zFile, password):
    try:
        answer= zFile.extractall(pwd=password)
        print 'Fount password : ', password
        return True
    except:
        #print password + " was incorrect"
        return False
def main(ifile):
    zFile = zipfile.ZipFile(ifile)
    pass_str = "abcdebcdefghijklmnopqrstuvwxyz0123456789"
    for pass_len in range(1,5):
        passwords = itertools.permutations(pass_str,pass_len)
        for password in passwords:
            #print password
            #time.sleep(.01)
            password = ''.join(password)
            sys.stdout.write("\r checking .. %s" % password )
            sys.stdout.flush()

            if (extractFile(zFile, password)):
                print "checked  "+password+"  ..."
                sys.exit()

if __name__ == '__main__':
    try:
        ifile = sys.argv[1]
    except:
        print "please run like  'python python-file-name.py zip-file-name.zip'"
        sys.exit()    
    main(ifile)

questo programma non ha bisogno di alcuna libreria esterna. il suo vero pitone. basta eseguire llke

python python-file-name.py zip-file-name.zip

    
risposta data 26.08.2014 - 09:31
fonte

Leggi altre domande sui tag