PKGval

PKGval
hekel@pandorah ~/PKGval
py pkgval.py
Usage: pkgval.py FILENAME
hekel@pandorah ~/PKGval
py pkgval.py PSP.pkg
Package Type : PSP (Retail)
Content ID : UP9000-UCUS98744_00-LBPPDLCSONYPA002
Package Digest : BE5D06832D28D148E03C1386F43E5E50BE1538B8
Calculated SHA1 : BE5D06832D28D148E03C1386F43E5E50BE1538B8
Checksums match!
hekel@pandorah ~/PKGval
py pkgval.py PSV.pkg
Package Type : PS Vita (Retail)
Content ID : UP4040-PCSE00317_00-TERRARIA00000001
Package Digest : D84B1ACD1C6CB1A20D42197BFB9CC9BFC36D92BD
Calculated SHA1 : D84B1ACD1C6CB1A20D42197BFB9CC9BFC36D92BD
Checksums match!
hekel@pandorah ~/PKGval
py pkgval.py PSM.pkg
Package Type : PS Mobile (Retail)
Content ID : JM2594-NPPA00262_00-0000000000000000
Package Digest : AF27A8930CF3471A52AD1F8B800F42BE6C275EEF
Calculated SHA1 : AF27A8930CF3471A52AD1F8B800F42BE6C275EEF
Checksums match!
hekel@pandorah ~/PKGval
py pkgval.py PS4.pkg
Package Type : PS4
Content ID : P4350-CUSA00127_00-NETFLIXPOLLUX001
Calculated SHA1 : AD78CCD4278CA70EDE6000863B3BBCD3F5C06384
hekel@pandorah ~/PKGval
py pkgval.py PS3.pkg
Package Type : PS3 (Retail)
Content ID : EP1004-BLES01807_00-GTAVTITLEUPDATER
Package Digest : 5788E1AA2F8BDC5CB7A572E165A074B9E62BD904
Calculated SHA1 : 5788E1AA2F8BDC5CB7A572E165A074B9E62BD904
Checksums match!
hekel@pandorah ~/PKGval
py pkgval.py webMAN_MOD_1.47.26_Installer.pkg
Package Type : PS3 (Debug)
Content ID : EP0001-UPDWEBMOD_00-0000000000000000
Package Digest : 98EF07F07DCD3F379D7DE52EC895BDDE5E8C6003
Calculated SHA1 : 98EF07F07DCD3F379D7DE52EC895BDDE5E8C6003
Checksums match!
hekel@pandorah ~/PKGval
py pkgval.py Corrupted_Example.pkg
Package Type : PS3 (Retail)
Content ID : UT0007-NPUP00030_00-NETFLIXRIGEL01NA
Package Digest : C0525AB6FFED377595E324BE57449D385AE2FA7E
Calculated SHA1 : 60DBBBA9E4D792D0CFD4BA78C7E0882F37A021A0
Checksums do not match!
hekel@pandorah ~/PKGval
py pkgval.py apollo-ps3-v1.6.5.pkg
Package Type : PS3 (Debug)
Content ID : UP0001-NP0APOLLO_00-0000000000000000
Notice: Package does not seem to contain an embedded Package Digest for comparison:
Package Tail : 0000000000000000000000000000000000000000000000000000000000000000
Calculated SHA1 : 474AB9313C3AF96C38C3B654791DEBCECCEAD210

A simple python script for validating PS3 type NPDRM package files.

Standard PS3/PSP/Vita NPDRM PKG files are appended with 32 bytes that the system software uses to verify data integrity. The first 20 bytes of this data is known as the "PackageDigest".

Tools like PSN Update Finder get their sha1sum directly from the PlayStation Network which provides the PackageDigest for comparison. Since this hash is calculated without these bytes, the sha1sum of the entire file obtained through traditional methods will be different.

PKGval attempts to use this information to validate the package. If unavailable it will still calculate the PackageDigest for you.

Typically a PS3 should fail with a "80029564" error if a retail package is corrupt or the embedded PackageDigest is wrong for some reason. Ergo you may not even find this tool useful, unless you need to validate a package before copying it to your console or using it with your favorite emulator.


Download: pkgval.py

Python 3.6 or greater is required to run PKGval.

Standalone Binaries:

If you have issues with the script or you don't have Python installed on your system, you can try these instead. They don't depend on anything special, but they're significantly larger.
If you use Linux, your distro's release date should probably be 2020 or later to avoid glibc issues. (e.g., Debian 11, Ubuntu 20.04 LTS, Fedora 32, openSUSE 15.4)

Windows: pkgval-bin-win-x86_64.zip
Linux: pkgval-bin-linux-x86_64.tar.gz