Атака по словарю Python RAR - оптимизация

У меня есть несколько старых файлов RAR, и я знаю общий формат паролей, которые я использовал, поэтому я создал файл словаря, объединяющий эти слова различными способами. Файл словаря составляет 500 МБ, и я написал программу на Python для использования словаря.

Проблема заключается в том, что программа работала всю ночь и занимает всего 1% пути. Теперь я разделил файл словаря и запускаю несколько экземпляров программы, но каждый экземпляр работает довольно медленно.

Буду рад любым советам о том, как улучшить скорость. Я очень плохо знаком с Python, что будет очевидно из моего кода (но я действительно наслаждаюсь Python)

import itertools
import sys, traceback
import os

with open('dictionary.txt') as infile:
    words = [line.strip() for line in infile]
    for word1 in itertools.product(words, repeat=1):
        fword = word1[0]
        print "Attempting: " + fword

        # open unrar and test password
        output = os.popen("unrar.exe x protected.rar -p" + fword)
        outstring = output.read()
        slng = len(outstring)

        # unrar.exe returns "All OK" for correct password
        validate = outstring.find("All OK", 0, slng) 
        if validate != -1:
            print "Found password: " + fword
            with open('correct_password.txt', 'w') as outfile:
                outfile.write(fword)
            sys.exit(0)
        else:
            # continue searching
            print "invalid password"

raw_input("Password was not in this dictionary!")

Образец dictionary.txt

FableLand
FableWay
FableTree
FableSpirit
FableApple

0 ответов

Другие вопросы по тегам