Я пытаюсь сделать генератор строк для bruteforce в Python, а itertools.combinations_with_replacement
, похоже, сделал всего лишь трюк.Комбинации python bruteforce с заданной стартовой строкой
gen = itertools.combinations_with_replacement('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',12)
for combination in gen:
check(''.join(combination))
Say пользователь запускает программу в течение нескольких часов и доходит до строки aaaeabdouzIU
.
Есть ли способ передать строку, где они остановились, чтобы начать делать комбинации с этой точки дальше?
Так что, если я передать строку «acc
» он должен начать пытаться «acd
», «ace
», ...
itertools.combinations_with_replacement
не обеспечивает это изначально, есть ли способ, кто-то может achive это?
Я ничего не знаю, но документация itertools содержит эквивалентный фрагмент кода (два, фактически), который вы могли бы попытаться применить к вашему использованию. – Evert
Также бонус лакомый кусочек. Если вы не хотите печатать все буквы. 'import string; string.ascii_letters' – cr1msonB1ade
Вы хотите иметь возможность «увеличивать» первый результат, чтобы получить второй, а n-й - получить n + 1-й. Нет встроенного способа. Попробуйте преобразовать выходной диапазон в целочисленный диапазон и обратно. Если это возможно, вы можете легко увеличивать целые числа, начиная с любого места в последовательности, и генерировать любую подпоследовательность, которую вы желаете. – mehtunguh