domingo, 23 de mayo de 2010

Crackeador de MD5 por Fuerza Bruta [Python]

Crackeador de MD5 por Fuerza Bruta [Python]: "Aca les dejo un Crackeador de MD5 por Fuerza Bruta. Hace combinaciones de numeros, letras y simbolos hasta conseguir la pass



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()

"

No hay comentarios:

Publicar un comentario