Scene.pkg — Unpacker

You’ll need to reverse the format yourself (common in modding communities):

  • QuickBMS script – Many .pkg formats have scripts on aluigi.altervista.org. Search for “gust.bms” or “koei.bms”.
  • Extract manually:

  • def unpack_scene_pkg(pkg_path, output_dir):
        with open(pkg_path, 'rb') as f:
            magic = f.read(4)
            if magic != b'SCNE':
                raise ValueError("Not a Scene.pkg file")
    
        version = f.read(4)
        file_count = struct.unpack('<I', f.read(4))[0]
    for i in range(file_count):
            offset = struct.unpack('<Q', f.read(8))[0]
            size_comp = struct.unpack('<I', f.read(4))[0]
            size_orig = struct.unpack('<I', f.read(4))[0]
            flags = f.read(4)
    f.seek(offset)
            data = f.read(size_comp)
    if flags[0] & 0x01:  # encrypted
                data = xor_decrypt(data, key)
            if flags[0] & 0x02:  # compressed
                data = zlib.decompress(data)
    with open(f"output_dir/file_i:04d.bin", 'wb') as out:
                out.write(data)
    


    The primary purpose of the Scene.pkg Unpacker is to allow users to view and extract the contents of .pkg files without having to install them. This can be particularly useful for software developers, system administrators, and cybersecurity professionals who need to inspect the contents of a package to ensure it is safe and suitable for deployment across a network. Scene.pkg Unpacker

    The Scene.pkg Unpacker operates by taking a .pkg file as input and then extracting its contents to a directory on the user's system. This process involves decoding the package's structure, which can include various types of files and scripts that are executed during the installation process. You’ll need to reverse the format yourself (common

    [+] Detected Scene.pkg v4 (RUNE variant)
    [+] Encryption: AES-128-CBC, Key found at offset 0x204
    [+] Extracting 147 files...
    [+] Output folder: ./extracted/game_scene/