Ejemplo n.º 1
0
def decode(buff):
    buff.seek(0x20)
    deoff = buff.readu32()
    buff.seek(0x28)
    size = buff.readu32()
    newb = [buff[0:deoff]]
    for i in range(size):
        newb.append(chr(ord(buff[i + deoff]) ^ decode_table[i & 0xff]))
    compr = strfile.MyStr(''.join(newb[1:]))
    compr.seek(4)
    uncompr = LZdecompr(compr[8:], compr.readu32())
    return ''.join([newb[0], compr[0:8], uncompr])
Ejemplo n.º 2
0
                    maps_idx[j] = maps_idx[j] + dist
    newNsb.append(nsb[lastpos:])

    newMaps = []
    maps.seek(0)
    for midx in maps_idx:
        len1, = unpack('4xH', maps.read(6))
        newMaps.append(pack('IH', midx, len1))
        newMaps.append(maps.read(len1))
    return (''.join(newNsb), ''.join(newMaps))


file_name = 'extra_tips.nsb'
if 0:
    fs = open(file_name, 'rb')
    stm = strfile.MyStr(fs.read())
    fs.close()
    ext = ExtTips(stm)
    index_data = ''.join([pack('I', i) for i in ext[0]])
    str_data = '\r\n'.join(ext[1])

    fs = open(file_name.replace('.nsb', '.idx'), 'wb')
    fs.write(index_data)
    fs.close()
    fs = open(file_name.replace('.nsb', '.txt'), 'wb')
    fs.write(str_data)
    fs.close()
else:
    fs = open(file_name, 'rb')
    nsb = strfile.MyStr(fs.read())
    fs.close()
Ejemplo n.º 3
0
    start=0x61cb08-DATA_BASE
    for i in range(0x1b):
        cur=start+i*768
        while 1:
            stm.seek(cur)
            addr=stm.readu32()
            if addr==0:
                break
            stm.seek(addr-RDATA_BASE)
            newtxt.append(stm.readstr().replace(b'\n',b'\\n').replace(b'\r',b'\\r'))
            cur+=4
        newtxt.append(b'/'+b'*'*60+b'/')
    return b'\r\n'.join(newtxt)

fs=open('STEINSGATE.exe','rb')
stm=strfile.MyStr(fs.read())
fs.close()

names=extName(stm)
fs=open('name.txt','wb')
fs.write(names.decode('932').encode('utf-16'))
fs.close()

phone_info=extStr(stm,0x621d08,82)
fs=open('info.txt','wb')
fs.write(phone_info.decode('shift-jis').encode('utf-16'))
fs.close()

mail=extMail(stm)
fs=open('mail.txt','wb')
fs.write(mail.decode('shift-jis').encode('utf-16'))
Ejemplo n.º 4
0

def decode(buff):
    buff.seek(0x20)
    deoff = buff.readu32()
    buff.seek(0x28)
    size = buff.readu32()
    newb = [buff[0:deoff]]
    for i in range(size):
        newb.append(chr(ord(buff[i + deoff]) ^ decode_table[i & 0xff]))
    compr = strfile.MyStr(''.join(newb[1:]))
    compr.seek(4)
    uncompr = LZdecompr(compr[8:], compr.readu32())
    return ''.join([newb[0], compr[0:8], uncompr])


fs = file('seen.txt', 'rb')
idxes = strfile.MyStr(fs.read(10000 * 8))
if 'seen' not in os.listdir('.'):
    os.mkdir('seen')
for i in range(10000):
    off = idxes.readu32()
    size = idxes.readu32()
    if off != 0:
        newfile = file('seen\\seen%04d.txt' % i, 'wb')
        fs.seek(off)
        newfile.write(decode(strfile.MyStr(fs.read(size))))
        newfile.close()
        print '%04d Success' % i
print 'Success'
Ejemplo n.º 5
0
def decStr(s):
    name = []
    for ch in s:
        name.append(chr(ord(ch) ^ 0x56))
    return ''.join(name)


filename = 'rio.arc'

fs = open(filename, 'rb')
fs.seek(0x10)
count = toint(fs.read(4))
fs.seek(0x1a)
cadr_off = toint(fs.read(4))
fs.seek(0)
stm = strfile.MyStr(fs.read(cadr_off + count * 12))
fs.close()

ctif_off = toint(stm[0x2A:0x2A + 4])

names = []
stm.seek(0x28 + 2)
for i in range(count):
    cur = stm.tell()
    stm.seek(stm.readu32() + 4)
    idx, len1, crc, = unpack('HHH', stm.read(6))
    names.append(('0x%02X\t' % idx) + decStr(stm.read(len1)))
    stm.seek(cur + 8)
txt = '\r\n'.join(names)

fs = open(filename.replace('.arc', '_idx.txt'), 'wb')