2014-09-23 81 views
0

我发现被用于暴力破解下面的代码 -如何使用Python实现蛮力暂停/恢复?

import itertools 

def bruteforce(charset, length): 
    return (''.join(candidate) 
     for candidate in itertools.chain.from_iterable(itertools.product(charset, repeat=i) 
     for i in range(length, length + 1))) 

for attempt in bruteforce('ab', 10): 
    # do something 

但我想有更聪明 - 能够暂停,并从特定的尝试开始。

我正在阅读类似的问题和答案 - Using itertools.product and want to seed a value - 但无法理解如何申请make_product用于那里我的情况。

+1

如果我理解你的话,你想停止暴力强制,然后继续你停下来的地方。 'itertools'函数应该返回迭代器。如果你将这个迭代器赋值给一个变量,你可以迭代它,如果需要的话,跳出循环并在需要时再次迭代它。 – George 2014-09-23 14:57:49

回答

0

我发现实现它的最简单方法是使用数字,然后将它们转换为基于36的数字系统。例如,806031402130等于aaaaaaaa,而229927546474等于2xmkxaay。所以,通过保持数值很容易保持状态。