import os
import sys
import mmap

source_iso = 'file.iso'
recursive_filename = 'SELF.ISO'

size = os.stat(source_iso).st_size

with open(source_iso,'r+b') as f:
    # Find SELF
    s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
    x = s.find(recursive_filename)
    if x == -1:
        print "Didn't find", recursive_filename
        sys.exit(1)
    f.seek(x - 31)
    # Position
    f.write('\x00'*8)
    # Size
    a = chr((size >> 24) & 0xFF)
    b = chr((size >> 16) & 0xFF)
    c = chr((size >>  8) & 0xFF)
    d = chr((size >>  0) & 0xFF)
    f.write(d + c + b + a)
    f.write(a + b + c + d)
