#-*- coding: utf-8 -*- # import hashlib import sys print "##############################################################" print "# FSBV2 Brute Forcer ! V0.2 #" print "# Experimental tool for rechearch only #" print "# Only for insecure demonstration or webmaster recovery #" print "# by Sorcier FXK for Staff DK & Project Kalkulator's Knights #" print "# www.tdark-knight.com #" print "# http://forum.kalkulators.org/ #" print "# sorcierfxk@kalkulators.org #" print "##############################################################" print " " print "Entrer hash user" hash = raw_input("Data:") print "Entrer le salt" salt = raw_input("Data:") if len(hash) == 32: type = 0 if len(hash) == 40: type = 1 #if len(hash) != 32 and len(hash) != 40 or len(salt) != 10: # error_enter() #Initialisation easyRange = range(97, 123) + range(65, 91) + range(48, 58) + [32,33,36,42,43] allRange = range(32,127) #hash = "abaa79ef13450862649f4f936370be11" #salt = "0123456789" def checkPassword(password): #print password if type == 0: hash_attack = hashlib.md5(password+salt).hexdigest() if type == 1: hash_attack = hashlib.sha1(password+salt).hexdigest() if hash_attack == hash: print "Password found :", password sys.exit() def recurse(width, position, baseString): #current position for char in easyRange: if (position < width - 1): recurse(width, position + 1, baseString + "%c" % char) checkPassword(baseString + "%c" % char) print "Target : Hash [" + hash + "] Salt [" + salt + "]" if len(hash) == 32: print "Type : MD5 detected..." if len(hash) == 40: print "Type : SHA1 detected..." maxChars = 13 for baseWidth in range(1, maxChars + 1): print "checking passwords width [" + `baseWidth` + "]" recurse(baseWidth, 0, "")