[New-bugs-announce] [issue36573] zipfile zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019.pdf'

Jozef Cernak report at bugs.python.org
Tue Apr 9 05:49:43 EDT 2019


New submission from Jozef Cernak <jozefcernak at gmail.com>:

Hi,
in the short program, that works well for password of 4 character, when I change password length I got this error (parameter MAXD)



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:
import  string, zipfile, zlib

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

    
    pos[0]=pos[0]+1
    
    for k2  in range(0,MAXD-1):
        if pos[k2]>=n:
            pos[k2]=0
            pos[k2+1]=pos[k2+1]+1
    
    koniec=0
    
    for k2 in range(0,MAXD):
        if pos[k2] >= n-1:
            koniec=koniec+1
            


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
Jozef

----------
components: Library (Lib)
messages: 339722
nosy: Jozef Cernak
priority: normal
severity: normal
status: open
title: zipfile zipfile.BadZipFile: Bad CRC-32 for file '11_02_2019.pdf'
type: crash
versions: Python 3.5

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36573>
_______________________________________


More information about the New-bugs-announce mailing list