2014-09-23 78 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。所以,通過保持數值很容易保持狀態。