Contraseña alfanumérica de fuerza bruta utilizando JohnTheRipper

2

Recientemente recuperé un archivo zip con algunos archivos a los que necesito acceder, pero no recuerdo la contraseña. Todo lo que puedo recordar es que la contraseña era corta (alrededor de 3-4 caracteres) y contenía solo caracteres en minúscula y posiblemente números). Sin embargo, no existe un modo incremental para esta situación particular en John the Ripper. El más cercano es lanman, que también aumenta el conjunto de posibles contraseñas al incluir caracteres en mayúsculas, y estoy seguro de que la contraseña no incluye ninguna.

Aunque puedo editar el archivo john.conf para que un modo específico vaya solo a 4 caracteres, por ejemplo, no sé cómo personalizar el conjunto de caracteres para probar. ¿Cómo podría hacer esto?

    
pregunta andrepd 25.08.2014 - 21:33
fuente

2 respuestas

4

números + minúsculos

Incremental en realidad tiene un modo predefinido para números en minúsculas +:

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

De la documentación :

  

"LowerNum" (letras minúsculas más dígitos, para un total de 36)

Solo ajusta MinLen y MaxLen .

Crear nuevo modo incremental con ciertos caracteres

Si desea crear su propio archivo chr con un conjunto personalizado de caracteres, lo haría así:

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

filter_lowernum es el filtro que determina qué caracteres estarán en su archivo chr . Se define en su john.conf (bajo [List.External:Filter_LowerNum] ), y puede crear sus propios filtros ahí también. El código para LowerNum se ve así:

[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;
    }
}

Luego simplemente agrega el filtro incremental a tu configuración.

    
respondido por el tim 25.08.2014 - 22:36
fuente
3

puedes ejecutar el siguiente código de Python para hacer esto

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)

este programa no necesita ninguna biblioteca externa. Es puro pitón. simplemente ejecuta llke

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

    
respondido por el ebola virus 26.08.2014 - 09:31
fuente

Lea otras preguntas en las etiquetas