Scene.pkg — Unpacker
You’ll need to reverse the format yourself (common in modding communities):
.pkg formats have scripts on aluigi.altervista.org. Search for “gust.bms” or “koei.bms”.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/
