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

Sebastian Wiesner lunaryorn at gmail.com
Sa Jan 26 17:19:27 CET 2013


Am 26. Januar 2013 17:31 schrieb Hartmut Goebel <h.goebel at goebel-consult.de>:
> 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 ist ein *definiertes* Datenformat.

> 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.

Der komprimierte Kernel-Code befindet sich nicht „irgendwo“, sondern
an einer bestimmten Stelle im enthaltenen ELF-Objektcode. Eine initrd
sollte im vmlinux-Abbild eigentlich nicht enthalten sein.

Das Format ist augenscheinlich einfach zu parsen.  So einfach
jedenfalls, dass es im Kernel-Quelltext unter /scripts/ ein
Shell-Script(!) namens extract-vmlinux [1] gibt, dass den Kernel-Code
aus dem Abbild extrahiert.

[1]: https://github.com/torvalds/linux/blob/master/scripts/extract-vmlinux


Mehr Informationen über die Mailingliste python-de