Я применил словарную атаку на зашифрованные zip-файлы, используя библиотеку zipfile
. Когда я начинал использовать БОЛЬШИЕ словари, иногда получал ложноположительные результаты, то есть пароль мог быть «шерстяным», а «12630» считался правильным. В этом случае расшифрованный файл, очевидно, содержал бред.
Это не ошибка в моем коде, но в том, как библиотека zipfile
проверяет правильность введенного пароля. Мне удалось уменьшить количество ложных срабатываний, проверив размер расшифрованного файла и, если он равен 0, считать его ложным и продолжать поиск. Но моя проблема остается, потому что, когда файл содержит тарабарщину, его размер> 0. Итак, мой вопрос, есть ли способ определить, правильно ли расшифрован файл или содержит ли он тарабарщину?
PS. Да, я знаю, что расшифровка zip-файлов с помощью zipfile
идет медленно, но, как я уже говорил ранее, я делаю это, чтобы получить контроль над Python.
Вот мой код:
import zipfile
import os
zfile=raw_input("Please input zip's file name\n")
diction=raw_input("Please input dictionary\n")
found = False
zipf = zipfile.ZipFile( zfile, 'r' )
f = open(diction, 'r')
for line in f:
pswd = line
pswd = pswd[:-1]
zipf.setpassword(pswd)
try:
zipf.extractall()
if (os.path.getsize(zfile[:-4]) != 0):
found = True
break
except RuntimeError:
continue
except Exception:
continue
zipf.close()
Это - отчет об ошибке, который я отправил в трекер ошибок Python. Как вы можете видеть, они не считают это «ошибкой» библиотеки, поэтому я прошу альтернативные варианты проверки правильности расшифровки файла.
PS. Для всех, кто заботится, по приведенной выше ссылке, они сказали мне, что это проблема формата файла zip и что ничего не поделаешь. Так что я думаю, вопрос вроде как ответ.