Reading online zip files - zipfile and zlib, wbits
Brendan
brendandetracey at yahoo.com
Fri Dec 12 09:46:38 EST 2008
On Dec 12, 10:25 am, Brendan <brendandetra... at yahoo.com> wrote:
> I am fooling around with accessing contents of zip files online. I
> download the tail end of the zip and use zipfile to get the zip
> central directory structure. I download the section of the zip file I
> need, directly read the zip file headers and use that information with
> zlib to uncompress the data. The files I am examining will always be
> compressed using deflate, with a wbits value of -15(minus for
> headerless data because I am unsure whether the zip file header is
> what zlib expects).
>
> I can not find anywhere in the PK Zip Application notes (http://www.pkware.com/documents/casestudies/APPNOTE.TXT) how to
> determine the value I should uze for wbits with zlib.decompress. I
> have determined it is -15 from experimentation. Does anyone know the
> answer to this?
Okay, I found part of the answer here in the zip app notes
[quote]
general purpose bit flag: (2 bytes)
Bit 0: If set, indicates that the file is encrypted.
(For Method 6 - Imploding)
Bit 1: If the compression method used was type 6,
Imploding, then this bit, if set, indicates
an 8K sliding dictionary was used. If clear,
then a 4K sliding dictionary was used.
Bit 2: If the compression method used was type 6,
Imploding, then this bit, if set, indicates
3 Shannon-Fano trees were used to encode the
sliding dictionary output. If clear, then 2
Shannon-Fano trees were used.
(For Methods 8 and 9 - Deflating)
Bit 2 Bit 1
0 0 Normal (-en) compression option was used.
0 1 Maximum (-exx/-ex) compression option was
used.
1 0 Fast (-ef) compression option was used.
1 1 Super Fast (-es) compression option was used.
[/quote]
Now I just don't understand Why Normal deflate corresponds to 15
wbits, and why I have to use headerless for the data, i.e. wbits = -15.
More information about the Python-list
mailing list