Playstation Update Package (PUP): Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
No edit summary
(Minor Cleanup)
Line 1: Line 1:
[[Category:PS3]]
''' Source: http://ps3wiki.lan.st/index.php?title=PUP_File_Format '''
----
'''PUP''' (Playstation Update Package) files are packages which contain the files used to update a PSP or PS3 system.
'''PUP''' (Playstation Update Package) files are packages which contain the files used to update a PSP or PS3 system.


Line 8: Line 5:
= Header  =
= Header  =


{| border="1"
{| class="wikitable"
|-
|-
! Offset  
! Offset  
Line 70: Line 67:
The file table consists of a number of file entries determined by '''File Count''', with the format below:
The file table consists of a number of file entries determined by '''File Count''', with the format below:


{| border="1"
{| class="wikitable"
|-
|-
! Offset  
! Offset  
Line 100: Line 97:
=== Filename IDs ===
=== Filename IDs ===


{| border="1"
{| class="wikitable"
|-
|-
! File Entry ID
! File Entry ID
Line 140: Line 137:


The hash entry format is:
The hash entry format is:
{| border="1"
{| class="wikitable"
|-
|-
! Offset  
! Offset  
Line 162: Line 159:
| Unknown
| Unknown
|}
|}
= Files =
Here is an example of the files stored in a PUP, This is from firmware version 3.55
PSUPDATE.PUP
├── dots.txt
├── license.txt
├── ps3swu.self
├── update_files.tar
│  ├── BDIT_FIRMWARE_PACKAGE.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── BDPT_FIRMWARE_PACKAGE_301R.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── BDPT_FIRMWARE_PACKAGE_302R.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── BDPT_FIRMWARE_PACKAGE_303R.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── BDPT_FIRMWARE_PACKAGE_304R.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── BDPT_FIRMWARE_PACKAGE_306R.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── BDPT_FIRMWARE_PACKAGE_308R.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── BLUETOOTH_FIRMWARE.pkg
│  │  ├── content
│  │  │  ├── RC29_firmware_footer.dfu
│  │  │  ├── usb8780-5.0.1-A1-A2.dfu
│  │  │  └── usb8781-20.0.12.0.dfu
│  │  ├── info0
│  │  └── info1
│  ├── CORE_OS_PACKAGE.pkg
│  │  ├── aim_spu_module.self
│  │  ├── appldr
│  │  ├── creserved_0
│  │  ├── default.spp
│  │  ├── emer_init.self
│  │  ├── eurus_fw.bin
│  │  ├── hdd_copy.self
│  │  ├── isoldr
│  │  ├── lv0
│  │  ├── lv1ldr
│  │  ├── lv1.self
│  │  ├── lv2_kernel.self
│  │  ├── lv2ldr
│  │  ├── manu_info_spu_module.self
│  │  ├── mc_iso_spu_module.self
│  │  ├── me_iso_spu_module.self
│  │  ├── sb_iso_spu_module.self
│  │  ├── sc_iso.self
│  │  ├── sdk_version
│  │  ├── spp_verifier.self
│  │  ├── spu_pkg_rvk_verifier.self
│  │  ├── spu_token_processor.self
│  │  ├── spu_utoken_processor.self
│  │  └── sv_iso_spu_module.self
│  ├── dev_flash_''XXX''.tar.aa.''DATE/TIME''
│  ├── dev_flash3_''XXX''.tar.aa.''DATE/TIME''
│  ├── MULTI_CARD_FIRMWARE.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── RL_FOR_PACKAGE.img
│  ├── RL_FOR_PROGRAM.img
│  ├── SYS_CON_FIRMWARE_01000006.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── SYS_CON_FIRMWARE_01010303.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── SYS_CON_FIRMWARE_01020302
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── SYS_CON_FIRMWARE_01030302.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── SYS_CON_FIRMWARE_01040402.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── SYS_CON_FIRMWARE_01050002.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── SYS_CON_FIRMWARE_01050101.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  ├── SYS_CON_FIRMWARE_S1_00010002083E0832.pkg
│  │  ├── content
│  │  ├── info0
│  │  └── info1
│  └── UPL.xml.pkg
│      ├── content
│      ├── info0
│      └── info1
├── update_files.tar
├── update_flags.txt
├── version.txt
└── vsh.tar

Revision as of 07:04, 8 April 2011

PUP (Playstation Update Package) files are packages which contain the files used to update a PSP or PS3 system.

The HMAC key used to verify the packages has been released. Look around for "pup-hmac"

Header

Offset Length Type Information
0x0 0x8 unsigned long Magic
0x8 0x8 unsigned long Package Version
0x10 0x8 unsigned long Image Version
0x18 0x8 unsigned long File Count
0x20 0x8 unsigned long Header Length
0x28 0x8 unsigned long File Length
0x30 0x20 * File Count File Table File Table
0x30 + (0x20 * File Count) 0x20 * File Count Hash Table Hash Table
0x30 + (0x40 * File Count) 0x14 bytes Header Hash
0x44 + (0x40 * File Count) 0xC bytes Unknown

File Table

The file table consists of a number of file entries determined by File Count, with the format below:

Offset Length Type Information
0x0 0x8 unsigned long Entry ID
0x8 0x8 unsigned long Data Offset
0x10 0x8 unsigned long Data Length
0x18 0x8 unsigned long Unknown

Filename IDs

File Entry ID Filename
0x100 ps3version.txt
0x101 resource.txt
0x102 shop.txt
0x103 pup_data.txt
0x104 patch_build.txt
0x200 ps3swu.self
0x201 vsh.tar
0x202 dots.txt
0x203 patch_data.pkg
0x300 update_files.tar

Hash Table

The hash table contains a hash entry for every file inside the PUP.

The hash entry format is:

Offset Length Type Information
0x0 0x8 unsigned long File Entry ID
0x8 0x14 bytes HMAC-SHA1 hash
0x1C 0x4 unsigned int Unknown

Files

Here is an example of the files stored in a PUP, This is from firmware version 3.55

PSUPDATE.PUP
├── dots.txt
├── license.txt
├── ps3swu.self 
├── update_files.tar
│   ├── BDIT_FIRMWARE_PACKAGE.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── BDPT_FIRMWARE_PACKAGE_301R.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── BDPT_FIRMWARE_PACKAGE_302R.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── BDPT_FIRMWARE_PACKAGE_303R.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── BDPT_FIRMWARE_PACKAGE_304R.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── BDPT_FIRMWARE_PACKAGE_306R.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── BDPT_FIRMWARE_PACKAGE_308R.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── BLUETOOTH_FIRMWARE.pkg
│   │   ├── content
│   │   │   ├── RC29_firmware_footer.dfu
│   │   │   ├── usb8780-5.0.1-A1-A2.dfu
│   │   │   └── usb8781-20.0.12.0.dfu
│   │   ├── info0
│   │   └── info1
│   ├── CORE_OS_PACKAGE.pkg
│   │   ├── aim_spu_module.self
│   │   ├── appldr
│   │   ├── creserved_0
│   │   ├── default.spp
│   │   ├── emer_init.self
│   │   ├── eurus_fw.bin
│   │   ├── hdd_copy.self
│   │   ├── isoldr
│   │   ├── lv0
│   │   ├── lv1ldr
│   │   ├── lv1.self
│   │   ├── lv2_kernel.self
│   │   ├── lv2ldr
│   │   ├── manu_info_spu_module.self
│   │   ├── mc_iso_spu_module.self
│   │   ├── me_iso_spu_module.self
│   │   ├── sb_iso_spu_module.self
│   │   ├── sc_iso.self
│   │   ├── sdk_version
│   │   ├── spp_verifier.self
│   │   ├── spu_pkg_rvk_verifier.self
│   │   ├── spu_token_processor.self
│   │   ├── spu_utoken_processor.self
│   │   └── sv_iso_spu_module.self
│   ├── dev_flash_XXX.tar.aa.DATE/TIME
│   ├── dev_flash3_XXX.tar.aa.DATE/TIME
│   ├── MULTI_CARD_FIRMWARE.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── RL_FOR_PACKAGE.img
│   ├── RL_FOR_PROGRAM.img
│   ├── SYS_CON_FIRMWARE_01000006.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── SYS_CON_FIRMWARE_01010303.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── SYS_CON_FIRMWARE_01020302
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── SYS_CON_FIRMWARE_01030302.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── SYS_CON_FIRMWARE_01040402.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── SYS_CON_FIRMWARE_01050002.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── SYS_CON_FIRMWARE_01050101.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   ├── SYS_CON_FIRMWARE_S1_00010002083E0832.pkg
│   │   ├── content
│   │   ├── info0
│   │   └── info1
│   └── UPL.xml.pkg
│       ├── content
│       ├── info0
│       └── info1
├── update_files.tar
├── update_flags.txt
├── version.txt
└── vsh.tar