New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
zipfile zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019.pdf' #80754
Comments
Hi, Traceback (most recent call last):
File "p33.py", line 54, in <module>
zf.extractall( pwd=password.encode('cp850','replace'))
File "/usr/lib/python3.5/zipfile.py", line 1347, in extractall
self.extract(zipinfo, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1335, in extract
return self._extract_member(member, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1399, in _extract_member
shutil.copyfileobj(source, target)
File "/usr/lib/python3.5/shutil.py", line 73, in copyfileobj
buf = fsrc.read(length)
File "/usr/lib/python3.5/zipfile.py", line 844, in read
data = self._read1(n)
File "/usr/lib/python3.5/zipfile.py", line 934, in _read1
self._update_crc(data)
File "/usr/lib/python3.5/zipfile.py", line 862, in _update_crc
raise BadZipFile("Bad CRC-32 for file %r" % self.name)
zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019.pdf' program: from zipfile import ZipFile
zf= ZipFile('11_02_2019.pdf.zip')
MAXD=6
upper_case=string.ascii_uppercase
uc=list(upper_case)
n=len(uc)
print (n)
pos=[]
for k in range(0,MAXD):
pos.append(0)
print (pos)
for let in range(0,n):
print (let, uc[let])
let=0
koniec=0;
k3=0
p=0
while koniec != MAXD :
k=0
password=''
for k2 in range(0,MAXD):
password=password+uc[pos[k2]]
print (password)
try:
with zipfile.ZipFile('11_02_2019.pdf.zip') as zf:
zf.extractall( pwd=password.encode('cp850','replace'))
print ("Password found:" + password)
exit(0)
except RuntimeError:
pass
except zlib.error:
pass
#print "ppppppppppppppppppppppppp",p, paswd
Similar behaviuor I observed in older version of python (2.7) and correspondig library. The zip archive is procted by simple password 'ABCD', the file is not big less tha 1MB. Best regards |
Do you get an error when try to extract the file using the valid password? |
Dear Serhiy, OACD for five characters: RRJBA
Traceback (most recent call last):
File "p33.py", line 54, in <module>
zf.extractall( pwd=password.encode('cp850','replace'))
File "/usr/lib/python3.5/zipfile.py", line 1347, in extractall
self.extract(zipinfo, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1335, in extract
return self._extract_member(member, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1399, in _extract_member
shutil.copyfileobj(source, target)
File "/usr/lib/python3.5/shutil.py", line 73, in copyfileobj
buf = fsrc.read(length)
File "/usr/lib/python3.5/zipfile.py", line 844, in read
data = self._read1(n)
File "/usr/lib/python3.5/zipfile.py", line 934, in _read1
self._update_crc(data)
File "/usr/lib/python3.5/zipfile.py", line 862, in _update_crc
raise BadZipFile("Bad CRC-32 for file %r" % self.name)
zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019.pdf'
specially for RRJBA
AAAAA
Traceback (most recent call last):
File "p33.py", line 54, in <module>
zf.extractall( pwd=password.encode('cp850','replace'))
File "/usr/lib/python3.5/zipfile.py", line 1347, in extractall
self.extract(zipinfo, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1335, in extract
return self._extract_member(member, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1399, in _extract_member
shutil.copyfileobj(source, target)
File "/usr/lib/python3.5/shutil.py", line 73, in copyfileobj
buf = fsrc.read(length)
File "/usr/lib/python3.5/zipfile.py", line 844, in read
data = self._read1(n)
File "/usr/lib/python3.5/zipfile.py", line 934, in _read1
self._update_crc(data)
File "/usr/lib/python3.5/zipfile.py", line 862, in _update_crc
raise BadZipFile("Bad CRC-32 for file %r" % self.name)
zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019.pdf' for six characters: KMQAAA
LMQAAA
MMQAAA
NMQAAA
OMQAAA
PMQAAA
QMQAAA
RMQAAA
SMQAAA
TMQAAA
UMQAAA
VMQAAA
WMQAAA
XMQAAA
YMQAAA
ZMQAAA
ANQAAA
Traceback (most recent call last):
File "p33.py", line 54, in <module>
zf.extractall( pwd=password.encode('cp850','replace'))
File "/usr/lib/python3.5/zipfile.py", line 1347, in extractall
self.extract(zipinfo, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1335, in extract
return self._extract_member(member, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1399, in _extract_member
shutil.copyfileobj(source, target)
File "/usr/lib/python3.5/shutil.py", line 73, in copyfileobj
buf = fsrc.read(length)
File "/usr/lib/python3.5/zipfile.py", line 844, in read
data = self._read1(n)
File "/usr/lib/python3.5/zipfile.py", line 934, in _read1
self._update_crc(data)
File "/usr/lib/python3.5/zipfile.py", line 862, in _update_crc
raise BadZipFile("Bad CRC-32 for file %r" % self.name)
zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019.pdf' It seems that after certain attempts command produces different behaviour Best regards Jozef On Tue, Apr 9, 2019 at 12:47 PM Serhiy Storchaka <report@bugs.python.org>
|
If you try to extract the file using an invalid password, it is an expected behavior. |
Ok, however behaviur is detected after several attempts i.e. behaviour is On Tue, Apr 9, 2019 at 1:05 PM Serhiy Storchaka <report@bugs.python.org>
|
Hi, KWFEA
Traceback (most recent call last):
File "p33.py", line 54, in <module>
zf.extractall( pwd=password.encode('cp850','replace'))
File "/usr/lib/python3.5/zipfile.py", line 1347, in extractall
self.extract(zipinfo, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1335, in extract
return self._extract_member(member, path, pwd)
File "/usr/lib/python3.5/zipfile.py", line 1399, in _extract_member
shutil.copyfileobj(source, target)
File "/usr/lib/python3.5/shutil.py", line 73, in copyfileobj
buf = fsrc.read(length)
File "/usr/lib/python3.5/zipfile.py", line 844, in read
data = self._read1(n)
File "/usr/lib/python3.5/zipfile.py", line 934, in _read1
self._update_crc(data)
File "/usr/lib/python3.5/zipfile.py", line 862, in _update_crc
raise BadZipFile("Bad CRC-32 for file %r" % self.name)
zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019B.pdf' Jozef On Tue, Apr 9, 2019 at 1:05 PM Serhiy Storchaka <report@bugs.python.org>
|
This is how the weak encryption in ZIP files work. In 255 cases from 256 the wrong password can be detected earlier (this make the encryption just weaker). But it 1 case of 256 this check is passed and you will get either an error of mismatched CRC, or the compressor specific error if use compression. There is even very small chance (1 of 2**32 or like) that you will silently get incorrectly decrypted data. It is better to not use the weak encryption in ZIP files. If you need to encrypt data safely, use third-party encryption libraries. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: