Crackeador de MD5 por fuerza bruta. Hace combinaciones con todo tipo de caracteres hasta que da con la pass. Esta hecho en Python

Código: Seleccionar todo

import sys , string , time
def main():
    "Main"
    title = "MD5 Cracker Brute Force"
    print "\n" + title.center(45) + "\n"
   
def usage():
    "Usage"
    print "[+] Ejemplo : Cracker.py -t md5 -h e10adc3949ba59abbe56e057f20f883e -w 1234567890 -a 9 -i 3 -v"

def usagelarge():
    "Usage Large"
    print "\n  Forma de Uso:"
    print "\n  [+]Ejemplo: Cracker.py -t md5 -h e10adc3949ba59abbe56e057f20f883e -w 1234567890 -a 9 -i 3 -v"
    print ""
    print "\t[Comandos]"
    print "\t   -t: Tipo de Hash"
    print "\t   -h: Hash a Crackear"
    print "\t   -w: Teclas a usar"   
    print "\t   -a: Maximo de Caracteres"
    print "\t   -i: Minimo de Caracteres"
    print "\t   -v: Modo Hacking\n"

def timer():
    "Time"
    now = time.localtime(time.time())
    return time.asctime(now)

if '__main__' == __name__ :

    if len(sys.argv) <= 5:
        main()
        usagelarge()
        sys.exit(1)

    hhash = words = maxw = minw = typeh = ""
    verbose = 0

    for arg in sys.argv[1:]:
        try:
            if arg.lower() == "-v" or arg.lower() == "-verbose":
                    verbose = 1
            if arg.lower() == "-h" or arg.lower() == "-hash":
                    hhash = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-a" or arg.lower() == "-max":
                    maxw = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-i" or arg.lower() == "-min":
                    minw = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-w" or arg.lower() == "-words":
                    words = sys.argv[int(sys.argv[1:].index(arg))+2]
            if arg.lower() == "-t" or arg.lower() == "-type":
                    typeh = sys.argv[int(sys.argv[1:].index(arg))+2]
        except(IndexError):
            print "[+] Comandos Obligatorios -t(Tipo de Hash) -h(Hash) -w(Teclas) -a(Maximo de teclas) -a(Minimo de teclas)"
            usage()
            sys.exit(1)

    if minw == "" : minw = '1'

    main()
    for args in (typeh, hhash, words, maxw, minw):
        try:
            if args != "":
                if args == typeh :
                    if typeh.lower() != 'md5' or 'sha':
                        if typeh.lower() == "md5" :
                            typeh = '1'
                            print "[+] Tipo de Hash : MD5"
                        elif typeh.lower() == "sha" :
                            typeh = '2'
                            print "[+] Tipo de Hash : SHA1"
                    else:
                        print "[+] Tipo Invalido de Hash"
                        sys.exit(1)
                if args == hhash :
                    if typeh == '1' :
                        if len(hhash) == 32 :
                            print "[+] MD5 Hash : " + hhash
                        else:
                            print "[+] Tipo Invalido de Hash"
                            sys.exit(1)
                    if typeh == '2' :
                        if len(hhash) == 40 :
                            print "[+] SHA1 Hash : " + hhash
                        else:
                            print "[+] SHA1 Invalido"
                            sys.exit(1)
                if args == words :
                    print "[+] Teclas a usar : " + words
                if args == maxw :
                    if maxw.isdigit() != False :
                        if int(maxw) >= 15 :
                            print "[+] Maximo de Digitos : 15 : " + maxw
                            sys.exit(1)
                        else:
                            if int(maxw) > int(minw):
                                print "[+] Maximo de Digitos : " + maxw
                            else:
                                print "[+] El Maximo de Digitos debe ser mayor al Minimo de Digitos"
                                sys.exit(1)
                    else:
                        print "[+] Maximo de Teclas = Digitos"
                        sys.exit(1)
                if args == minw :
                        if minw.isdigit() != False :
                            if int(minw) < int(maxw) :
                                print "[+] Minimo de Digitos : " + minw
                            else:
                                print "[+] El minimo de Digitos debe ser menor al maximo de Digitos"
                                sys.exit(1)
                        else:
                            print "[+] Minimo de Teclas = Digitos"
                            sys.exit(1)
            else:
                print "[+] Comandos Obligatorios -t(Tipo de Hash) -h(Hash) -w(Teclas) -a(Maximo de teclas) -a(Minimo de teclas)"
                usage()
                sys.exit(1)
        except(ValueError):
            print "[+] Formato de comandos erroneo"
            sys.exit(1)

    f = open("CRACK.py",'w')
    f.write("#!/usr/bin/env python\n")
    if (typeh == '1') : f.write("import sys , md5 , string , time\n")
    if (typeh == '2') : f.write("import sys , sha , string , time\n")
    tab = '\t'
    f.write("def timer():\n")
    f.write(tab + "now = time.localtime(time.time())\n")
    f.write(tab + "return time.asctime(now)\n")
    f.write("def crackhash():\n")
   
    i = 0 ; inwords = ""
    f.write(tab + "hashh = '" + hhash.lower() +"'\n")
    f.write(tab + "try:\n")
   
    #print words
    for i in words:
        if i == str(words[int(len(words)-1)]) :
            inwords += "'" + i + "'"
            break
        inwords += "'" + i + "',"
    #print inwords
   
    i = int(minw) ; iwords = "" ; a = 0
   
    while (int(i) != int(maxw) + 1) :

        for a in range(i):
            if int(i) != (int(a) + 1):
                iwords += "i" + str(i) + str(a) + " + "
            else:
                 iwords += "i" + str(i) + str(a)

            data = (int(a + 2) * tab + "for i" + str(i) + str(a) + " in (" + inwords + "):\n")
            f.write(data)

        f.write(int(i + 2) * tab + "word = '' ; value = ''\n")
        f.write(int(i + 2) * tab + "word = " + iwords + "\n")
       
        if typeh == '1' : f.write(int(i + 2) * tab + "hash = md5.new()\n")

        if typeh == '2' : f.write(int(i + 2) * tab + "hash = sha.new()\n")

        f.write(int(i + 2) * tab + "hash.update(str(word))\n")
        f.write(int(i + 2) * tab + "value = hash.hexdigest()\n")
        if verbose == 1 : f.write(int(i + 2) * tab + "print " + iwords + ' + " : " + str(value)\n')
        f.write(int(i + 2) * tab + "if str(hashh) == str(value):\n")
        f.write(int(i + 3) * tab + "raise Exception\n")
        iwords = ""
        i += 1

    f.write(tab + "except(Exception):")
    f.write('\n'+ 2 * tab + "print '********************  Hash Crackeado ' + 20 * '*'")
    f.write('\n' + 2 * tab + "print '[+] HASH :', hashh")
    f.write('\n' + 2 * tab + "print '[+] PASS :', str(word)")
    f.write('\n' + 2 * tab + "print '[+] Hora de finalizacion :', timer()")
    f.write('\n' + 2 * tab + "sys.exit(1)")
    f.write('\n' + tab + "except(KeyboardInterrupt):")
    f.write('\n' + 2 * tab + "print '[+] Process Ended ',timer()")
    f.write('\n' + 2 * tab + "sys.exit(1)")
    f.write("\ncrackhash()")
    f.close()

    print '[+] Hora de inicio : ', timer()
   
    import CRACK
    CRACK.crackhash()
Epa!!! este es bueno, me ha sacado una que no me sacaban ni las rainbow tables (al 97% de efectividad), muy buen trabajo

Saludos
Imagen
Hola:
no entiendo mucho pero me he bajado el python 3.1 y e creado un archivo .py con ese codigo.
El problema viene al ejecutarlo que no se como hacerlo
Espero puedan ayudarme
Gracias
dameba escribió:Hola:
no entiendo mucho pero me he bajado el python 3.1 y e creado un archivo .py con ese codigo.
El problema viene al ejecutarlo que no se como hacerlo
Espero puedan ayudarme
Gracias
tienes que hacer uso del comando "cd" y ir a la ubicacion del archivo y ejecutarlo desde ahi :

1-Cd Directorio xxxxxxx

2-Archivo.py más el sintaxis
Tipo de hash, si es de tipo MD5 o el que desees crackear
Hash a crackear es el md5
y modo hacking es por si queres que te muestre en pantalla como va crackeando
depende en que lo encripte la web. Por ejemplo yo consegui una BD de un instituto de un sistema de moodle que almacena las pass en MD5. Entonces con eso ya tengo acceso
Es tuya la herramienta ANTRAX??
Para quien no sepa compilarlo hay que bajar un compilador de python y ponerlo como .py


Gracias buen trabajo!
No, no es mio el codigo, yo solo lo mejore por que tiraba errores. aunque creo que quedo una falla colgada por ahi...
david3716 escribió:Intente ejecutarlo y en todas las lineas de print sale error :S
ayuda :s
recuerda mantener las tabulaciones, el foro deforma el code, ahora lo miro bien

Edita: Usa un interpetre de pyhon 2.x , por ahi arriba a visto alguien que lo utilizaba con uno de 3.x ( en la 3.x print es una funcion, print ("hola")
Responder

Volver a “Otros lenguajes”