Dear sir,
I ran your python script as
#python vmlinuz-2.6.26-2-686

i got the following error
Traceback (most recent call last):
  File "/mnt/disk[sda4]/root/Desktop/tmp/vmlinuz/extvmlinuz.py", line 39, in
<module>
    vmlinux = open(sys.argv[2], 'wb')
IndexError: list index out of range

why is it so..

On Mon, Oct 5, 2009 at 8:56 AM, Ben Hutchings <b...@decadent.org.uk> wrote:

> While we still aren't providing an uncompressed vmlinux image, it is now
> possible to extract one from vmlinuz.  The following Python script does
> the job; give it the filename of the compressed image followed by the
> filename for the uncompressed image.
>
> Ben.
>
> #!/usr/bin/python
>
> import struct, zlib
>
> def vmlinuz_to_image(f):
>    # We can't use gzip.GzipFile because that complains if there is
>    # trailing data, which is the case for ELFBoot kernel images.
>    # Use zlib directly.
>    zo = zlib.decompressobj(-15)
>
>    # Look for gzip-deflate header and find end of it
>    f.seek(0, 0)
>    head = f.read(65536)
>    off = head.index('\x1f\x8b\x08')
>    flags = ord(head[off + 3])
>    off += 10                   # fixed header
>    if flags & 0x04:            # FEXTRA
>        off += 2 + struct.unpack('<H', head[off:off+2])[0]
>    if flags & 0x08:            # FNAME
>        off = head.index('\0', off) + 1
>    if flags & 0x10:            # FCOMMENT
>        off = head.index('\0', off) + 1
>    if flags & 0x02:            # FHCRC
>        off += 2
>    assert not (flags & 0xe0)   # reserved
>
>    # Decompress following deflate blocks
>    f.seek(off)
>    image = zo.decompress(f.read()) + zo.flush()
>
>    # Verify decompressed data against gzip trailer
>    assert (struct.unpack('<LL', zo.unused_data[:8]) ==
>            (zlib.crc32(image) & 0xffffffffL, len(image)))
>
>    return image
>
> if __name__ == '__main__':
>    import sys
>    vmlinuz = open(sys.argv[1], 'rb')
>    vmlinux = open(sys.argv[2], 'wb')
>    vmlinux.write(vmlinuz_to_image(vmlinuz))
> ### END ###
>
> --
> Ben Hutchings
> I say we take off; nuke the site from orbit.  It's the only way to be sure.
>



-- 
bossganesh
BOSSTeam
CDAC

Reply via email to