[Release] EnForcer v0.1

Iniciado por encode, Enero 06, 2014, 06:24:38 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 06, 2014, 06:24:38 PM Ultima modificación: Enero 06, 2014, 06:37:18 PM por 11Sep
Buenas, hace tiempo hice un crackeador de hashes md5, ahora lo dejo mejorado.

El uso es simple, como argumentos el hash y el modo, m(minusculas), M(mayusculas) y N(numeros) los cuales se pueden juntar Ejemplo: "mMN".

Código simple pero muy mejorable, optimizable.

Código: python
import sys
import itertools
import hashlib
import time

#Const
_m = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
      'w', 'x', 'y', 'z']

_M = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
      'W', 'X', 'Y', 'Z']

_N = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']


#Help
def _help():
    print ("==========================================================================\n"
           "  EnForcer v0.1 | encode\n"
           "--------------------------------------------------------------------------\n"
           "  Usage: EnForcer.py [md5] [mode: m/M/N]\n"
           "\n"
           "  Example: EnForcer.py 97a57645a3f0e1518f8c9f4d340d4c4f mMN\n"
           "==========================================================================")


#Break
def _break(_md5, _chars):
    _clen = 0
    print '========================================='
    print ' Breaking: ' + time.asctime()
    print '-----------------------------------------'
    while 1:
        _clen += 1
        for word in itertools.product(_chars, repeat=_clen):
            _word = ''.join(word)
            if _md5 == hashlib.md5(_word).hexdigest():
                print ' Text: ' + _word
                print ' MD5: ' + _md5
                print '-----------------------------------------'
                print ' Hash Cracked: ' + time.asctime()
                print '========================================='
                return
    print ' Hash Not Cracked: ' + time.asctime()
    print '========================================='


#Main
def _main(_md5, _mode):
    _chain = ''
    if 'm' in _mode:
        _chain = _chain.join(_m)
    if 'M' in _mode:
        _chain = _chain.join(_M)
    if 'N' in _mode:
        _chain = _chain.join(_N)
    if _chain == '':
        _help()
        return
    _break(_md5, _chain)

#Args
if len(sys.argv) == 3:
    _main(sys.argv[1], sys.argv[2])
else:
    _help()

Enero 06, 2014, 09:13:40 PM #1 Ultima modificación: Enero 06, 2014, 09:15:48 PM por WhiZ
Buen code @encode! Te quedó muy limpio!

Para la próxima versión podrías implementar una función que analice el primer parámetro (teóricamente un hash md5) para no perder tiempo con los que no lo son. ;)

Por ej., podrías verificar el tamaño y si es una cadena de tipo alfanumérica.

Saludos!
WhiZ


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Buen code @encode! Te quedó muy limpio!

Para la próxima versión podrías implementar una función que analice el primer parámetro (teóricamente un hash md5) para no perder tiempo con los que no lo son. ;)

Por ej., podrías verificar el tamaño y si es una cadena de tipo alfanumérica.

Saludos!
WhiZ

La proxima versión la quiero desarrollar en c++, multithreading y optimizada.
Hacía mucho tiempo que no tocaba python y mejoré el código que tenia de hace años.

Genial! Publicala ni bien tengas el code!

Con respecto al multithreading, te recomiendo hacerlo opcional, para las máquinas mas viejitas jeje.

Espero la próxima versión.

Saludos!
WhiZ


Muy buena encode! esta genial el codigo!
Espero ver mas!! Ahi lo comparti en las redes sociales!

Saludos!
ANTRAX