import itertools, sys def combList(charString, maxLength): """Genorate inital word list. This is just diff combinations""" #var to keepmtrack of how many times we've been through the loop times = 0 #list to hold combinations poss = [] for iteration in range(maxLength): #Use try statment to make sure the max length isn't longer #than the characters we're going to use try: #Iter genorator for combos comb = itertools.combinations(charString,times+1) except ValueError: print "Character string larger than max lenght\nplease try again" sys.exit() #Genorator gives tuple with seporated values ex: ('w','o','r','d') for word in comb: #join tupe as string and add to list s = ''.join(word) poss.append(s) times += 1 return poss def permList(combinations): """Genorates permutations of the genorated combonation list""" #going to write ultimate list to a file #if not, you can run into virtual memory errors if the list gets above 4Gb f = open("wordlist.txt","w") #var to hold how many words we have x = 0 for word in combinations: #loop through combonations and genorate a list of all #possable ways to combine letters permutation = itertools.permutations(word) for permWord in permutation: f.write(''.join(permWord)+"\n") x += 1 #del used permutation to free up some memory #not so much needed, but this script will rape memory if #appending to a list insteady of writing to a file del permutation #always close file handles f.close() return x def main(): """Main program, gets user info and computes the lists""" ch = raw_input("characters to try: ") num = input("max length: ") combo = combList(ch,num) print "list genorated" print "doing wordlist now" permTotal = permList(combo) f = open("wordlist.txt","r") print "working..." for i in range(permTotal+1): word = f.readline().strip() #This is where you would be doing the actule brute forcing #you could try and log into a website or crack a password protected #zip file, genorate md5's and crack a password dump #if linux, brute force WPA wifi with iwconfig #and any thing else you might need for a password print word f.close() print "done\n" raw_input(".....") main()