2011-01-12 4 views
2

Я сделал атаку по словарю для зашифрованных ZIP-архивов, используя библиотеку . Когда я начал использовать словари BIG, иногда я получал ложноположительные результаты, т. Е. Пароль мог быть «шерстью» и «12630» считался правильным. В этом случае дешифрованный файл, очевидно, содержит тарабарщину.zipfile модуль, дающий ненадежные результаты

Это не ошибка в моем коде, но в способе, в котором находится . Проверка проверяет, установлен ли предоставленный пароль. Мне удалось уменьшить ложные срабатывания, проверив размер расшифрованного файла, и если он равен 0, считайте его ложным и продолжайте поиск. Но моя проблема остается, потому что, когда в файле содержится тарабарщина, это размер> 0. Так что мой вопрос: есть ли способ, который я могу определить в Python, если файл был дешифрован правильно или если он содержит тарабарщину?

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() 

This является сообщением об ошибке я занесена в багтрекере питона. Как вы можете видеть, они не считают «ошибкой» библиотеки, поэтому я прошу альтернативы проверки правильности дешифрования файла.

PS. Для тех, кого это касается, в приведенной выше ссылке, они сказали мне, что это проблема формата zip-файла и что ничего не может быть сделано. Поэтому, я думаю, вопрос ответил.

+2

Если вы утверждаете, что у python zipfile есть ошибка, я думаю, вы должны сообщить об этом в трекер ошибок python. – mouad

+1

У меня уже есть и что Натан наклеил их ответ. Вид напоминает «это не ошибка, это особенность». Вот почему я прошу выяснить, поврежден ли дешифрованный файл или нет. – Erethon

+0

Существуют случаи, когда неправильный пароль не создает исключение? – jfs

ответ

3

От this ZipFile сообщения об ошибке

«Схема пароля проверки использует проверку один байт, против почтового заголовка системности. Так что есть (почти) 1/256 вероятности ложных срабатываний, то есть неправильных паролей, которые ошибочно обнаруживаются как хорошие, тогда класс ZipFile переходит в unarchiving, и в этом случае вещи терпят неудачу (потому что «дешифрованный» поток действительно неактивен ».

Не исключено ли исключение? Отправьте свой код.

+1

Это мой код и мой отчет об ошибке, возможно, я должен был включить его в первую очередь. Я немного изменил код, обновил свой вопрос как можно скорее. – Erethon

+0

Это довольно странно. Это звучит как ошибка, в которой исключение не возникает в некоторых случаях. Либо это, либо они специально не хотят, чтобы zipfile использовался для атаки паролей с использованием грубой силы. – Nathan

+0

Да, это странно. В python 3.1 они немного изменили способ, которым zipfile проверяет правильность пароля, но проблема остается. По какой-то странной причине они хотят этого. : / – Erethon

Смежные вопросы