Python - how to generate wordlist from given characters of specific length
我想执行字典攻击,为此我需要单词表。如何从特定长度的给定字符(或从最小长度到最大长度的单词长度)生成单词列表?我试过
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | >>> import itertools >>> >>> chrs = 'abc' >>> n = 2 >>> >>> for xs in itertools.product(chrs, repeat=n): ... print ''.join(xs) ... aa ab ac ba bb bc ca cb cc |
从最小长度到最大长度获取单词:
1 2 3 4 5 | chrs = 'abc' min_length, max_length = 2, 5 for n in range(min_length, max_length+1): for xs in itertools.product(chrs, repeat=n): print ''.join(xs) |
号
这是NA?ve实施:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | list='abcdefg' depth=8 def generate(l,d): if d<1: return for c in l: if d==1: yield c else: for k in generate(l,d-1): yield c+k for d in range(1,depth): for c in generate(list,d): print c |
我还没有足够的声誉来发表评论,因此,根据上面的itertools示例制作完整的列表:
1 2 3 4 5 6 | import itertools chrs='abc' n=6 for i in range(1,n): for xs in itertools.product(chrs, repeat=i): print ''.join(xs) |
。
这样,列表中所有单词的长度从1到n不等。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from itertools import product def allwords(chars, length): for letters in product(chars, repeat=length): yield ''.join(letters) def main(): letters ="abc" for wordlen in range(3, 5): for word in allwords(letters, wordlen): print(word) if __name__=="__main__": main() |
退货
1 2 3 4 5 6 7 8 9 10 11 12 | aaa aab aac aba abb ... ccbc ccca cccb cccc |
。
def word_gen(开始=3,结束=3,元素=1):"hud seidu daanna单词表gen信息安全理学硕士,CEH"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | README #for start&end #e.g. start= 3,end= 3 #means first words to last words should be 3 characters #for elements 1 is asci 2 is numbers 3 is asci&numbers """ import itertools #types of elements if elements ==1: elements= 'abcdefghijklmnopqrstuvwxyx' if elements ==2: elements= '0123456789' if elements== 3: elements= 'abcdefghijklmnopqrstuvwxyx0123456789' else: pass wl = [] for i in range(start,end+1): for xs in itertools.product(elements, repeat=i): wl.append(''.join(xs)) return wl |
。