This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Jozef Cernak
Recipients Jozef Cernak
Date 2019-04-09.09:49:42
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1554803383.11.0.72187159386.issue36573@roundup.psfhosted.org>
In-reply-to
Content
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
History
Date User Action Args
2019-04-09 09:49:43Jozef Cernaksetrecipients: + Jozef Cernak
2019-04-09 09:49:43Jozef Cernaksetmessageid: <1554803383.11.0.72187159386.issue36573@roundup.psfhosted.org>
2019-04-09 09:49:43Jozef Cernaklinkissue36573 messages
2019-04-09 09:49:42Jozef Cernakcreate