[Python-de] gzip-lib und "trailing garbage"

Hartmut Goebel h.goebel at goebel-consult.de
Sa Jan 26 17:31:50 CET 2013


Am 26.01.2013 14:40, schrieb Sebastian Wiesner:
> GZIP hat charakteristische Blockgrenzen, anhand derer man derartig
> komprimierte Daten erkennen kann. Du kannst diese Kopfdaten in der
> Spezifikation des Formats nachschlagen, und somit das Verhalten von
> "gzip" re-implementieren. Ob das sinnvoll ist, sei dahingestellt. 

Ich hatte nicht vor, gzip nach zu bauen.

Danke für den Link auf den RFC. Der zeigt aber deutlich, dass man bei
gzip am Anfang nicht wissen kann, wie lange der Input oder auch der
unkomprimierte Stream sind.
>> Hier mein gescheiterter Versuch, das in Python zu implementieren.
>>
>> gz = gzip.GzipFile(fileobj=infh)
>> with open(outfilename, 'wb') as outfh:
>>     while 1:
>>         d = gz.read(BLOCKSIZE)
>>         if not d: break
>>         outfh.write(d)
>>         if gz._new_member:
>>             break
>> infh.close()
> Ohje, wie bist Du denn darauf gekommen?!

Was genau meinst Du? Den Test auf "_new_member"? Weil das genau dann
gesetzt wird, wenn nach einem deflate-stream und dem gzip-Trailer noch
Daten übrig waren.
> Ich nehme mal an, dass die Binärdaten, die Du zu lesen versuchst,
> irgendeinem mehr oder weniger klar definierten Format unterliegen. 

Leider ist diese Annahme falsche -- es handelt sich um das vmlinux-Image
für ARM. Das wird direkt in den Speicher geladen und ausgeführt. Und
irgendwo da drin steckt der gzipped Kernel. Davor ist Maschinen-Code und
ggf. eine initrd.


-- 
Schönen Gruß
Hartmut Goebel
Dipl.-Informatiker (univ), CISSP, CSSLP

Goebel Consult
http://www.goebel-consult.de

Monatliche Kolumne:
http://www.cissp-gefluester.de/2010-01-hinterturen-allen-ortes
Blog: http://www.goebel-consult.de/blog/20060215

Goebel Consult ist Mitglied bei http://www.7-it.de/

-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://mail.python.org/pipermail/python-de/attachments/20130126/f2d82d6c/attachment-0001.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : smime.p7s
Dateityp    : application/pkcs7-signature
Dateigröße  : 3758 bytes
Beschreibung: S/MIME Kryptografische Unterschrift
URL         : <http://mail.python.org/pipermail/python-de/attachments/20130126/f2d82d6c/attachment-0001.bin>


Mehr Informationen über die Mailingliste python-de