Как мне сделать простой сценарий грубой силы в Python без импорта? - PullRequest
0 голосов
/ 01 декабря 2018

Я довольно новичок в Python, поэтому я просто проверяю кое-что и выясняю это.Я нашел скрипт, который делает то, что я хочу, в другом сообщении на форуме, но я понятия не имею, как он работает.

from itertools import product
chars = '0123456789' # chars to look for
for length in range(1, 2): # only do lengths of 1 + 2
    to_attempt = product(chars, repeat=length)
    for attempt in to_attempt:
        print(''.join(attempt))

Это именно то, что я хочу, но это не помогает, так как я не понимаю,Может ли кто-нибудь объяснить самый простой способ сделать это без какого-либо импорта?Моя конечная цель - иметь код, который делает это со всем алфавитом, который останавливается, когда он соответствует переменной, которая является «паролем».

1 Ответ

0 голосов
/ 02 декабря 2018
to_attempt = product('0123456789', repeat=3)

Функция product из модуля itertools позволяет вычислять каждую возможную перестановку длины 3, используя символы, содержащиеся в строке '0123456789'.
Однако модуль itertools предназначен дляБыть очень быстрым и эффективно использовать память, поэтому он не возвращает список строк, он возвращает объект с именем Iterator, для которого вы можете выполнить цикл для получения всех результатов.

for attempt in to_attempt: #for every permutation
    print(''.join(attempt))

Чтобы удалить импорт, не меняя ничеговам нужно определить функцию, которая вычисляет декартово произведение строки и возвращает список символов (чтобы вы могли присоединиться и распечатать их).

Цикл for не нужен, поскольку функция range(i, j) позволяет выполнять итерацию с i до j-1, поэтому цикл выполняется только один раз.

...