Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-zipfile模块没有';似乎无法使用密码_Python - Fatal编程技术网

Python-zipfile模块没有';似乎无法使用密码

Python-zipfile模块没有';似乎无法使用密码,python,Python,我一直在尝试实现一个非常简单的脚本,提取受密码保护的zip文件。 我创建了一个简单的zip文件(test.zip),密码为“1234”,包含2个文本文件(1.txt,2.txt),我编写了以下脚本: import zipfile PASSWORD = "1234" zip = zipfile.ZipFile("test.zip", "r") zip.setpassword(PASSWORD) zip.extractall() zip.close() 我得到以下运行时错误: Tracebac

我一直在尝试实现一个非常简单的脚本,提取受密码保护的zip文件。 我创建了一个简单的zip文件(test.zip),密码为“1234”,包含2个文本文件(1.txt,2.txt),我编写了以下脚本:

import zipfile

PASSWORD = "1234"

zip = zipfile.ZipFile("test.zip", "r")
zip.setpassword(PASSWORD)
zip.extractall()
zip.close()
我得到以下运行时错误:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    zip.extractall()
  File "/usr/lib/python2.7/zipfile.py", line 962, in extractall
    self.extract(zipinfo, path, pwd)
  File "/usr/lib/python2.7/zipfile.py", line 950, in extract
    return self._extract_member(member, path, pwd)
  File "/usr/lib/python2.7/zipfile.py", line 993, in _extract_member
    source = self.open(member, pwd=pwd)
  File "/usr/lib/python2.7/zipfile.py", line 934, in open
    raise RuntimeError("Bad password for file", name)
RuntimeError: ('Bad password for file', <zipfile.ZipInfo object at 0x1f3f2a8>)
回溯(最近一次呼叫最后一次):
文件“test.py”,第7行,在
zip.extractall()
extractall中的文件“/usr/lib/python2.7/zipfile.py”,第962行
self.extract(zipinfo,path,pwd)
文件“/usr/lib/python2.7/zipfile.py”,第950行,摘录
返回自我。提取成员(成员、路径、pwd)
文件“/usr/lib/python2.7/zipfile.py”,第993行,在提取成员中
源=自开(成员,pwd=pwd)
文件“/usr/lib/python2.7/zipfile.py”,第934行,打开
引发运行时错误(“文件的密码错误”,名称)
运行时错误:(“文件的密码错误,”)
我尝试了使用“zip.namelist()”和“extract()”方法进行迭代,并指定了精确的参数,如下所示:

zip.extract(<file_name>, path=<path>, pwd=<password>)
zip.extract(,path=,pwd=)
没有运气:( 我知道“extractall()”的安全性问题,在我的完整代码中,我将在提取过程之前进行验证,我只是想找出我做错了什么


提前感谢您的帮助!

如评论所示,您的加密模式可能有问题。 使用7-zip使用AES-256创建zip文件时,我得到的错误与您的相同。使用ZypCrypto加密,它可以正常工作

PyCrust 0.9.8 - The Flakiest Python Shell
Python 2.6.7 (r267:88850, Jun 27 2011, 13:20:48) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> import zipfile
>>> psw = "abcd"

#with zipcrypto encryption

>>> path= "C:/Users/joaquin/Desktop/zipcrypto.zip"
>>> zip = zipfile.ZipFile(path, "r")
>>> zip.setpassword(psw)
>>> zip.extractall("C:/Python26")
>>> zip.close()

#with AES-256 encryption

>>> path= "C:/Users/joaquin/Desktop/aes256.zip"
>>> zip = zipfile.ZipFile(path, "r")
>>> zip.setpassword(psw)
>>> zip.extractall("C:/Python26")
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Python26\lib\zipfile.py", line 938, in extractall
    self.extract(zipinfo, path, pwd)
  File "C:\Python26\lib\zipfile.py", line 926, in extract
    return self._extract_member(member, path, pwd)
  File "C:\Python26\lib\zipfile.py", line 969, in _extract_member
    source = self.open(member, pwd=pwd)
  File "C:\Python26\lib\zipfile.py", line 901, in open
    raise RuntimeError("Bad password for file", name)
RuntimeError: ('Bad password for file', <zipfile.ZipInfo object at 0x00000000042B3948>)
>>> 
PyCastle 0.9.8-最脆弱的Python外壳
win32上的Python 2.6.7(r267:88850,2011年6月27日,13:20:48)[MSC v.1500 64位(AMD64)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>进口拉链
>>>psw=“abcd”
#使用zipcrypto加密
>>>path=“C:/Users/joaquin/Desktop/zipcrypto.zip”
>>>zip=zipfile.zipfile(路径“r”)
>>>zip.setpassword(psw)
>>>zip.extractall(“C:/Python26”)
>>>zip.close()
#使用AES-256加密
>>>path=“C:/Users/joaquin/Desktop/aes256.zip”
>>>zip=zipfile.zipfile(路径“r”)
>>>zip.setpassword(psw)
>>>zip.extractall(“C:/Python26”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python26\lib\zipfile.py”,第938行,位于extractall中
self.extract(zipinfo,path,pwd)
文件“C:\Python26\lib\zipfile.py”,第926行,摘录
返回自我。提取成员(成员、路径、pwd)
文件“C:\Python26\lib\zipfile.py”,第969行,在提取成员中
源=自开(成员,pwd=pwd)
文件“C:\Python26\lib\zipfile.py”,第901行,打开
引发运行时错误(“文件的密码错误”,名称)
运行时错误:(“文件的密码错误,”)
>>> 

该问题(zipfile仅支持传统PKWARE加密方法)已被报告为

同意eryksun&joaquin的说法

7z l -slt test.zip | grep Method
将向您展示所使用的压缩方法

7z a -p1234 -mem=ZipCrypto test.zip 1.txt 2.txt
将创建与python zipfile兼容的zip

7z a -p1234 -mem=AES128 test.zip 1.txt 2.txt
将创建一个AES加密的zip


reference

我刚刚复制了你的代码并亲自尝试过。它对我来说效果很好。因为回溯显示你的密码不好,你可能需要检查你是否真的用1234压缩了文件。至少我可以确认Blaland的问题也发生在我的环境中……功能请求现在无法确定。Python不太可能会出现问题在将来支持这一点。