我发现以下代码用于暴力破解 -
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
用于我的案例。
答案 0 :(得分:0)
我发现实现它的最简单方法是使用数字然后将它们转换为基于36的数字系统。例如,806031402130等于aaaaaaaa
,229927546474等于2xmkxaay
。因此,通过保持数值很容易保持状态。