# The3l33tOneimport sysimport md5from optparse import OptionParserdef getOptionsAndArgs(): parser = OptionParser("%prog [options] ") parser.add_option('-d', '--dict', action="store", dest="pathToWordList", default="/usr/share/dict/words", help="Path to word list") parser.add_option('-v', '--verbose', action="store_true", dest="verbose", default=False, help="Show words as they are searched") options, args = parser.parse_args() if not args: parser.print_help() sys.exit(1) return options, argsdef searchForCollisions(targetHash, pathToWordList, verbose=False): for word in open(pathToWordList, "r").readlines(): word = word.strip() hash2Test = md5.md5(word).hexdigest() if verbose: print "Searching...", word, hash2Test if hash2Test == targetHash: print "Collision Detected: The word is ", word return True return Falseif __name__ == "__main__": options, args = getOptionsAndArgs() if not searchForCollisions(targetHash=args[0], pathToWordList=options.pathToWordList, verbose=options.verbose): print "No Collision Detected" print "Done."