Метод сжатия Python Zipfile не поддерживается

РЕДАКТИРОВАТЬ:

Времена, когда это работало, были, когда я использовал сжатие ZIPCrypto. Именно с AES-256 это не удается. Как обойти это, пожалуйста?

Это сводит меня с ума сейчас.

Ранее я успешно использовал следующий код Python для открытия защищенного паролем файла .zip, созданного с помощью 7-Zip:

import zipfile

zip_file = zipfile.ZipFile('crack_me.zip')
output_verbose = 1  # increase that for long password list
with open('passwords.txt', 'rb') as password_list:
    for index, line in enumerate(password_list):
        try:
            pwd = line.strip(b'\r\n')
            zip_file.extractall(pwd=pwd)
        except RuntimeError as e:
            print(e)
            if index % output_verbose == 0:
                print('{}. The {} word not matched.'.format(index + 1, pwd))
        else:
            print('{}. Wow ! found the password: {}'.format(index + 1, pwd))
            break

zip_file.close()

Однако по непонятной причине это сработало только пару раз из множества попыток. В большинстве случаев это дает, что метод сжатия не поддерживается для исключения.

Я пытался удалить, переименовать, заново создать файл .zip, но безуспешно. Для меня нет смысла, что он иногда работает.

Я попытался упростить проблему, как показано ниже:

import zipfile

zip_file = zipfile.ZipFile('crack_me.zip')
try:
    zip_file.extractall(pwd=b"password")
    print('Opened')
except RuntimeError as e:
    print(e)

Но я получаю то же исключение. Я пробовал варианты pwd, такие как байты (пароль, utf-8) и другие.

Предоставленный пароль открывает файл .zip при открытии с помощью 7-Zip.

Что здесь происходит, пожалуйста?


person Robin Andrews    schedule 05.07.2020    source источник
comment
Связанный stackoverflow.com/questions/32797851/   -  person snakecharmerb    schedule 05.07.2020
comment
Не могли бы вы предоставить точные аргументы командной строки, которые вы, возможно, передали 7z, с которыми вы создали zip-файл? Если вы явно не указали стандартный метод zip (т.е. передали флаг -tzip), модуль Python zipfile не сможет его открыть.   -  person metatoaster    schedule 05.07.2020
comment
Также актуально stackoverflow.com/questions/31743127/   -  person snakecharmerb    schedule 05.07.2020
comment
Отредактировано: с AES-256 он не работает. Как обойти это, пожалуйста?   -  person Robin Andrews    schedule 05.07.2020
comment
Может, попробовать pyzipper?   -  person Stefan Pochmann    schedule 05.07.2020


Ответы (1)


Чтобы библиотека zip-файлов работала с защищенным паролем zip-файлом, вам необходимо установить флажок «Устаревшее шифрование Zip» при настройке пароля.

Изображение: https://i.stack.imgur.com/UvtMC.png

person Dominte Florin-Iulian    schedule 09.12.2020
comment
Это помогло мне решить мою проблему .... Большое спасибо - person Smack Alpha; 17.01.2021