#! /usr/bin/python #-*- Encoding:UTF-8 -*- # Copyright (C) 2011 the Hashzor authors and contributors # # This module is part of hashzor and is released under # the GPL License: http://www.gnu.org/licenses/gpl.html # # initial source: http://www.rbgrn.net __version__ = "0.1" __author__ = [ "Lucas Fernandez" ] __license__ = "GNU General Public License" import hashlib class micropown: miniRange = range(97, 123) easyRange = [32,33,36,42,43] + range(48, 58) + range(65, 91) + range(97, 123) allRange = range(32,127) hash = '' password = '' def __init__(self, hash, nbChar, nbRange): ranges = [] ranges.append(self.miniRange) ranges.append(self.easyRange) ranges.append(self.allRange) self.hash = hash for baseWidth in range(1, nbChar + 1): self.recurse(baseWidth, 0, "", ranges[nbRange]) def passFound(self,password): self.password = password def checkPassword(self, password): if (hashlib.md5(password).hexdigest() == hash): self.password = password def recurse(self, width, position, baseString, targetRange): for char in targetRange: if self.password == '': if (position < width - 1): self.recurse(width, position + 1, baseString + "%c" % char, targetRange) self.checkPassword(baseString + "%c" % char) if __name__ == "__main__": hash = 'e61e7de603852182385da5e907b4b232' print "Target Hash [" + hash + "]" m = micropown(hash,3,0) print m.password