Добавление функции паузы и возобновления в программе Wordlist Generator - PullRequest
0 голосов
/ 23 ноября 2018

Я создаю список слов для 8-символьного пароля, используя 13 типов символов.
Мой код:

import itertools
import pickle
import pathlib
import time
from typing import TextIO, Tuple

path = pathlib.Path('backup1.pkl')
if path.exists():
inputfile = open("backup1.pkl", "rb")
val_comb = pickle.load(inputfile)

print( val_comb  )
time.sleep(3)

f: TextIO=open("all_pass_combo_8_(3).txt","w")

res = itertools.product('abcdefghjklm', repeat=8) .
for i in res:
        print( val_comb  )
        f.write(val_comb)
        val_comb = (''.join(i) + "\n")
        output = open("backup1.pkl", 'wb')
        pickle.dump(val_comb, output)

output.close()
inputfile.close()
f.close()

Итак, мне потребуется несколько часов, чтобы завершить выполнение кода,Но проблема в том, что я не могу долго держать компьютер включенным.И если я закрою / прерву процесс в любом случае, я сохраню комбинации только до этого экземпляра, а затем, когда я попытаюсь снова запустить выполнение, он начнёт с самого начального состояния.

Некоторые пожилые люди сказали мне, чтобы я выполнил желаемую работу, используя "pickle()", и предоставили мне официальную ссылку "pickle() Описание проекта".Я прочитал статью и перепрыгнул на YouTube для дальнейшей помощи.Затем я попытался отредактировать свой код в формате, который вы можете увидеть выше, но мне не удалось выполнить то, что я хотел сделать.

Итак, именно то, что я хочу сделать:
Я буду запускать свою программу.Он будет работать и генерировать список слов.Теперь я должен выключить компьютер.Итак, мне придется прекратить казнь.Теперь я хочу сохранить (или остановить) мой прогресс в процессе, и когда я снова начну выполнение программы, она должна возобновиться с той же стадии, на которой я ее оставила;например, если бы я прекратил это на 'aaaafhgj'.Затем он должен начать объединять перестановки и комбинации прямо с 'aaaafhgk', и он не должен повторять 'aaaaaaaa' и так далее, снова.Но мой код делает то же самое, что я не хочу делать.

1 Ответ

0 голосов
/ 23 ноября 2018

Для сохранения прогресса вы можете вместо этого поставить «паузу» внутри самого скрипта, а затем сохранить в файл.

Пример использования pickle

import time
import pickle
import os

save_file = "save_file.tmp"

if os.path.exists(save_file):
    with open(save_file, "rb") as in_file:
        try:
            my_array = pickle.loads(in_file.read()) # reload the last operation
        except Exception:
            my_array = []
else:
    my_array = []

while True:
    try:
        time.sleep(1)
        my_array.append("next") # here you can do what you want replace this part
    except KeyboardInterrupt, SystemExit:
        print my_array
        with open(save_file, "wb") as out_file:
            out_file.write(pickle.dumps(my_array))
        input()

Надеюсь, что это может вам помочь, и ясно, что это нелегко сделать;)

...