from itertools import chain, product
def bruteforce(charset, maxlength):
return (''.join(candidate)
for candidate in chain.from_iterable(product(charset, repeat=i)
for i in range(1, maxlength + 1)))
your_list = 'abcdefghijklmnopqrstuvwxyz'
complete_list = []
for current in xrange(10):
a = [i for i in your_list]
for y in xrange(current):
a = [x+i for i in your_list for x in a]
complete_list = complete_list+a
使用^{} ,结合^{} 将各种长度放在一起:
演示:
这将有效地使用输入集生成逐渐增大的单词,最大长度为maxlength。
不要试图生成一个包含26个字符、最长为10个字符的内存列表;而是对生成的结果进行迭代:
我发现了另一种使用itertools创建词典的简单方法。
这将遍历“a”、“b”、“c”和“d”的所有组合,并创建总长度为1到4的组合。即a、b、c、d、aa、ab……..、dddc、dddd。生成器是一个itertool对象,您可以像这样正常循环
每个密码实际上都是tuple类型的,您可以像平常一样处理它们。
如果你真的想用暴力来逼迫它,试试这个,但这需要你很长时间:
在一个较小的示例中,其中list='ab',我们只增加到5,这将打印以下内容:
相关问题 更多 >
编程相关推荐