Сначала вам нужно определить, какой тип шифрования используется в zip-файле. В самом WinZip может быть инструмент отчетности, который сообщит вам об этом. У меня его нет, поэтому не знаю.
Если у вас есть доступ к любой из утилит командной строки zip, вы можете легко это выяснить.
Во-первых, если у вас есть реализация Infozip для unzip
, запустите ее с параметром -lv
. Если у вас есть очень новая версия unzip
и в столбце Метод отображается AES_WG
, ваш файл зашифрован AES.
$ unzip -lv my.zip
Archive: /home/paul/perl/ext/Gzip/IO-Zippo/scratch/sample-zip/7z/7z-win32-aes128.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
1933 AES_WG 884 54% 04-15-2010 22:26 00000000 0001-perl-74088.patch
-------- ------- --- -------
1933 884 54% 1 file
Если ваш unzip
старше, наличие строки Unk:099
в столбце Метод означает, что ваш файл зашифрован AES.
$ unzip -lv my.zip
Archive: IO-Zippo/scratch/sample-zip/7z/7z-win32-aes128.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
1933 Unk:099 884 54% 2010-04-15 22:26 00000000 0001-perl-74088.patch
-------- ------- --- -------
1933 884 54% 1 file
Другой альтернативой является использование zipdetails (полное раскрытие, I ' м автор zipdetails). Главное, на что нужно обратить внимание, - это линия Compression Method 0063 'AES Encryption'
$ zipdetails my.zip
0000 LOCAL HEADER #1 04034B50
0004 Extract Zip Spec 33 '5.1'
0005 Extract OS 00 'MS-DOS'
0006 General Purpose Flag 0001
[Bit 0] 1 'Encryption'
0008 Compression Method 0063 'AES Encryption'
...
Если окажется, что у вас есть шифрование AES и вам нужен способ чтения файла на языке Python, стандартный zipfile
подход не сработает. В настоящее время zipfile
поддерживает только слабое шифрование.
Чтобы узнать о других способах Python для чтения файлов Zip с шифрованием AES, см. Python unzip AES-128 encrypted file < / а>
person
pmqs
schedule
13.03.2020