Utility that decrypts PlayStation Vita pkg file and creates zip package. Supported pkg files - main application, DLC, patch and PSM files. Also supports PSX and PSP pkg files for use with Adrenaline.
portable, written in cross-platform C code, runs on Windows, GNU/Linux, macOS (system dependent functionality is isolated in sys.c file).
small, has no external library dependencies and uses very minimal dynamic memory allocations.
fast, uses AESNI hardware accelerated AES decryption if supported by CPU (requires AESNI and SSSE3 instructions).
simple, creates zip package with same folder structure that Vita expects (just drag & drop all file from zip archive to ux0:). Zip file is created directly from pkg without any intermediate temporary files.
Vita DLC, Vita PATCH and PSM pkg unpacking.
PSX and PSP pkg unpacking.
no PSP DLC pkg files are supported.
no actual title name is extracted for PSM pkg files.
If you have zRIF fake license, then execute:
pkg2zip package.pkg zRIF_STRING
This will create title [id] [region].zip file. Title, ID and region is automatically detected from pkg file. It will include work.bin file.
If you don't have zRIF fake license, but just want to unpack files, then omit last argument:
Resulting zip file will not include work.bin. This is useful for patch pkg files.
To get output file name of the zip, use -l (must come before pkg file and cannot be used with -x):
pkg2zip -l package.pkg
To avoid zipping process and create individual files, use -x argument (must come before pkg file):
pkg2zip -x package.pkg [zRIF_STRING]
PSX or PSP pkg files do not require zRIF argument. It will be ignored.
For PSP files pkg2zip by default will create .ISO file. To create compressed .CSO file pass -cN argument where N is compression factor. For example, for fastest compression use:
pkg2zip -c1 package.pkg
To create smaller cso file (more compression will require more time) use -c9, or anything inbetween:
pkg2zip -c9 package.pkg
You can combine -cN argument together with -x:
pkg2zip -x -c9 package.pkg
Generating zRIF string
If you have working NoNpDrm license file (work.bin or 6488b73b912a753a492e2714e9b38bc7.rif) you can create zRIF string with rif2zrif.py python script:
$ python rif2zrif.py path/to/work.bin
It will print zRIF string to stdout.
To generate work.bin from zRIF string use zrif2rif.py script:
$ python zrif2rif.py zRIF work.bin
Last argument is optional, it specifies where to save file and defaults to work.bin name.