首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打开WinZip密码保护的档案?

如何打开WinZip密码保护的档案?
EN

Stack Overflow用户
提问于 2020-03-14 00:30:55
回答 2查看 329关注 0票数 1

我知道解密是一个广阔的领域,我是一个新手,但我有一个WinZip文件,我可以用已知的密码在WinZip中通过WinZip UI轻松打开。

但是,提供相同的密码,我无法在Python中打开它。我怀疑编码可能是用AES编写的,但我不想使用非本地库来打开文件。在Python中打开受密码保护的WinZip文件有什么标准吗?我尝试过在ZipFile中编码的不同编解码器。

代码语言:javascript
复制
from zipfile import ZipFile

with ZipFile(r'C:\Users\user\Desktop\Data.zip') as zf:
    pas = 'myPass'
    res = pas.encode('utf-32-le')
    zf.extractall(pwd=res)
zf
代码语言:javascript
复制
RuntimeError: Bad password for file ...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-14 03:33:07

您首先需要确定zip文件使用的加密类型。WinZip本身可能有一个报告工具可以告诉您。我没有,所以不知道。

如果您可以访问任何命令行zip实用程序,就可以很容易地找到答案。

首先,如果您有可用的unzip的Infozip实现,请使用-lv选项运行它。如果您有一个非常新的unzip版本,并且它在Method列中显示了AES_WG,那么您的文件是加密的。

代码语言:javascript
复制
$ 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版本较旧,则在Method列中出现字符串Unk:099意味着您的文件是加密的。

代码语言:javascript
复制
$ 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 (完全公开,我是zipdetails的作者)。要查找的关键内容是Compression Method 0063 'AES Encryption'

代码语言:javascript
复制
$ 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只支持弱加密。

有关读取AES加密Zip文件的其他python方法,请参阅Python unzip AES-128 encrypted file

票数 1
EN

Stack Overflow用户

发布于 2020-03-14 00:33:16

正常传递密码而不进行编码可能会起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60674080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档