Editing Playstation Update Package (PUP)
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
== Description == | [[Category:Software]] | ||
==Description== | |||
'''PUP''' ( | '''PUP''' (Playstation Update Package) files are packages which contain the files used to update a PSP or PS3 system. There are 2 different types: patches (PS3PATCH.PUP) and full updates (PS3UPDAT.PUP). Based on the model, there are 4 different release types: Retail/CEX, Shop/SEX, Debug/DEX and Tool/DECR. Within the Retail/CEX there are 2 file versions: 1 is a PUP with a normal file length which also gets released online. The other PUP file version is the same, except it is zero-filled after the normal PUP content to a fixed filelength of 256MB, which gets released on Gamedisks (if gamecreators build their project to a premaster and give it to Sony for signing, they just use a placeholder of a 256MB PS3UPDATE.PUP which contains no firmwaredata at all - it is completely zerofilled. Sony decides the firmware that gets on the disk and for which firmware the 'Gold' code is signed and mastered). | ||
== | === Default unlock code for Shop/SEX === | ||
*1.5x: <strike>8604/</strike>5202 | |||
*1.6x: 7568 | |||
*1.7x: 0506 | |||
*1.8x: <strike>7259/</strike>7712 | |||
*1.9x: 2737 | |||
*2.0x: 0219 | |||
*2.1x: 2464 | |||
*2.2x: 4801 | |||
*2.3x: 6558 | |||
*2.4x: 9015 | |||
*2.5x: 6258 | |||
*2.6x: 8783 | |||
*2.7x: 7164 | |||
*2.8x: 7897 | |||
*3.0x: 2310 | |||
*3.1x: 5081 | |||
*3.2x: 7818 | |||
*3.3x: 3512 | |||
*3.4x: 2998 | |||
*3.5x: 2297 | |||
*3.6x: 1739 | |||
*3.7x: 5138 | |||
*4.1x: 2464 | |||
*4.2x: 4801 | |||
*4.3x: 6558 | |||
others seen in vsh.self (3.55): | |||
*1739 | |||
*5138 | |||
*0168 | |||
*8294 | |||
==Regioning== | |||
There is no regioning in the .PUP files, they are the same for all different regions (if you where looking for regioninfo, [http://www.ps3devwiki.com/index.php?title=SKU_Models#Regioning see here]).<br /> | |||
The PS3 however gets the ps3-updatelist.txt from different servers, depening on the region of that model (last 2 numbers in the CECHxxXX SKU name). | |||
There is no regioning in the .PUP files | |||
<ul> | <ul> | ||
Line 79: | Line 54: | ||
<li> [http://fru01.ps3.update.playstation.net/update/ps3/list/ru/ps3-updatelist.txt Russia, ru] (08 > 0x8C) | <li> [http://fru01.ps3.update.playstation.net/update/ps3/list/ru/ps3-updatelist.txt Russia, ru] (08 > 0x8C) | ||
<li> [http://fcn01.ps3.update.playstation.net/update/ps3/list/cn/ps3-updatelist.txt China, cn] (09 > 0x8D) | <li> [http://fcn01.ps3.update.playstation.net/update/ps3/list/cn/ps3-updatelist.txt China, cn] (09 > 0x8D) | ||
</ul> | </ul> | ||
for completeness: Hong Kong : 0x8E, Reference Tool/DECR : 0x81, Debug/DEX : 0x82 and System Debugger : 0xA0 | |||
Retail basic structure of the update URL: | Retail basic structure of the update URL: | ||
http://d<span style="color:darkgreen;font-style:italic;"><TLD></span>01.ps3.update.playstation.net/update/ps3/image/<span style="color:darkgreen;font-style:italic;"><TLD></span>/<span style="color:darkgreen;font-style:italic;">YYYY_MMDD_md5</span>/PS3UPDAT.PUP | http://d<span style="color:darkgreen;font-style:italic;"><TLD></span>01.ps3.update.playstation.net/update/ps3/image/<span style="color:darkgreen;font-style:italic;"><TLD></span>/<span style="color:darkgreen;font-style:italic;">YYYY_MMDD_md5</span>/PS3UPDAT.PUP | ||
(TLD=2 letter abbreviation from above region, YYYY_MMDD is release date, MD5 is | (TLD=2 letter abbreviation from above region, YYYY_MMDD is release date, MD5 is 22-digits long HASH) | ||
Line 94: | Line 66: | ||
Content: | Content: | ||
# JP(shop) | # JP(shop) | ||
Dest=83;CompatibleSystemSoftwareVersion=4. | Dest=83;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=83;ImageVersion= | Dest=83;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://djp01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# US(shop) | # US(shop) | ||
Dest=84;CompatibleSystemSoftwareVersion=4. | Dest=84;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=84;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://dus01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | |||
# EU(shop) | # EU(shop) | ||
Dest=85;CompatibleSystemSoftwareVersion=4. | Dest=85;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=85;ImageVersion= | Dest=85;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://deu01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# KR(shop) | # KR(shop) | ||
Dest=86;CompatibleSystemSoftwareVersion=4. | Dest=86;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=86;ImageVersion= | Dest=86;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://dkr01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# UK(shop) | # UK(shop) | ||
Dest=87;CompatibleSystemSoftwareVersion=4. | Dest=87;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=87;ImageVersion= | Dest=87;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://duk01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# MX(shop) | # MX(shop) | ||
Dest=88;CompatibleSystemSoftwareVersion=4. | Dest=88;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=88;ImageVersion= | Dest=88;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://dmx01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# AU/NZ(shop) | # AU/NZ(shop) | ||
Dest=89;CompatibleSystemSoftwareVersion=4. | Dest=89;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=89;ImageVersion= | Dest=89;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://dau01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# SouthAsia(shop) | # SouthAsia(shop) | ||
Dest=8A;CompatibleSystemSoftwareVersion=4. | Dest=8A;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=8A;ImageVersion= | Dest=8A;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://dsa01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# TW(shop) | # TW(shop) | ||
Dest=8B;CompatibleSystemSoftwareVersion=4. | Dest=8B;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=8B;ImageVersion= | Dest=8B;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://dtw01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# RU(shop) | # RU(shop) | ||
Dest=8C;CompatibleSystemSoftwareVersion=4. | Dest=8C;CompatibleSystemSoftwareVersion=4.2300-; | ||
Dest=8C;ImageVersion= | Dest=8C;ImageVersion=0000e3d2;SystemSoftwareVersion=4.2300;CDN=http://dru01.ps3.update.playstation.net/update/ps3/image/shop/2012_0809_c3abaa42231a809bb7c87750313d4cf7/PS3UPDAT.PUP;CDN_Timeout=30; | ||
# CN(shop) | # CN(shop) | ||
Dest=8D;ImageVersion=00000000;SystemSoftwareVersion=0.0000;CDN=http://dcn01.ps3.update.playstation.net/update/ps3/image/shop/nodata;CDN_Timeout=30; | Dest=8D;ImageVersion=00000000;SystemSoftwareVersion=0.0000;CDN=http://dcn01.ps3.update.playstation.net/update/ps3/image/shop/nodata;CDN_Timeout=30; | ||
Shop basic structure of the update URL: | Shop basic structure of the update URL: | ||
Line 136: | Line 104: | ||
(TLD=2 letter abbreviation from above region, YYYY_MMDD is release date, MD5 is 22-digits long HASH) | (TLD=2 letter abbreviation from above region, YYYY_MMDD is release date, MD5 is 22-digits long HASH) | ||
==Installation== | |||
== Installation == | |||
To install firmware via USB Mass Storage Devices (e.g. USB-stick, Memory Stick, SD-card, Compact Flash with at least 256MB free), place the PS3UPDAT.PUP file in the following folder structure: /PS3/UPDATE/PS3UPDAT.PUP | To install firmware via USB Mass Storage Devices (e.g. USB-stick, Memory Stick, SD-card, Compact Flash with at least 256MB free), place the PS3UPDAT.PUP file in the following folder structure: /PS3/UPDATE/PS3UPDAT.PUP | ||
Line 335: | Line 116: | ||
* The update location for Arcade is "/dev_hdd0/game/SCEEXE000/ARCDIR/PS3UPDAT.PUP" | * The update location for Arcade is "/dev_hdd0/game/SCEEXE000/ARCDIR/PS3UPDAT.PUP" | ||
* The update location in Factory Service Mode (used for downgrader and remarry) is /PS3UPDAT.PUP | * The update location in Factory Service Mode (used for downgrader and remarry) is /PS3UPDAT.PUP | ||
* The update location for [[QA_Flagging#Debug_Settings|QA Debug setting]] : System Update Debug=ON is /dev_hdd0/updater/01/ | * The update location for [[QA_Flagging#Debug_Settings|QA Debug setting]] : System Update Debug=ON is /dev_hdd0/updater/ (with subfolders /01/, /02/ ... e.g. /dev_hdd0/updater/01/PS3UPDAT.PUP) | ||
=== Problem solving / tips === | === Problem solving / tips === | ||
* Don’t use any USB Mass Storage Device with enhanced functions as: encryption, fingerprintreader, U3, pincode etc. | * Don’t use any USB Mass Storage Device with enhanced functions as: encryption, fingerprintreader, U3, pincode etc. | ||
* Don’t use USB Mass Storage Devices with a long initialisation time (e.g. some MP3 players) | * Don’t use USB Mass Storage Devices with a long initialisation time (e.g. some MP3 players) | ||
* Don’t use multipartitioned USB Mass Storage Devices, only use 1 single primary FAT32 partition. | * Don’t use multipartitioned USB Mass Storage Devices, only use 1 single primary FAT32 partition. | ||
* Make sure they are formatted according to specifications with FAT32 (e.g. | * Make sure they are formatted according to specifications with FAT32 (e.g. HP USB Format Tool – or TOKIWA / Ridgecrop FAT32 formatter) | ||
* If the stick is formatted FAT32 and still not working, consider other stick or use this tool: http://www.pendrivelinux.com/restoring-your-usb-key-partition/ | * If the stick is formatted FAT32 and still not working, consider other stick or use this tool: http://www.pendrivelinux.com/restoring-your-usb-key-partition/ | ||
* Most USB Mass Storage Devices that’ll work effortless with PenDrive Linux, will also work with the PS3 (for downgrading, upgrading, storage of your Game dumps and any normal filestorage under the XMB). Those USB Mass Storage Devices are most likely also the ones giving you the least problems under more exotic platforms like PSX/PSone, PS2/PStwo, Xbox/X360, Gamecube/Wii | * Most USB Mass Storage Devices that’ll work effortless with PenDrive Linux, will also work with the PS3 (for downgrading, upgrading, storage of your Game dumps and any normal filestorage under the XMB). Those USB Mass Storage Devices are most likely also the ones giving you the least problems under more exotic platforms like PSX/PSone, PS2/PStwo, Xbox/X360, Gamecube/Wii etc. | ||
* Make sure no disc is inside the drive otherwise it will try to install that one instead of the one on USB Mass Storage Device! | * Make sure no disc is inside the drive otherwise it will try to install that one instead of the one on USB Mass Storage Device! | ||
* Make sure the media is not readonly (e.g. SDcard or USB Stick with readonly tab) if using firmwares when doing one of the following: | * Make sure the media is not readonly (e.g. SDcard or USB Stick with readonly tab) if using firmwares when doing one of the following: | ||
Line 351: | Line 133: | ||
** or any process that needs to write a log file, in short, write access | ** or any process that needs to write a log file, in short, write access | ||
:Select via XMB, Settings -> System Update | :Select via XMB, Settings -> System Update | ||
Line 431: | Line 213: | ||
</pre> | </pre> | ||
== | ==Firmware .PUP structure== | ||
The HMAC key used to verify the packages has been released. Look around for "pup-hmac" | |||
= | <!--// PUP Extractor http://www.megaupload.com/?d=WILOJ5TC (outdated : incompatible output, tool not update since 27 may 2008 - autor:NDT @ ps3news) //--> | ||
===Header=== | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 494: | Line 225: | ||
! Offset !! Length !! Type !! Information | ! Offset !! Length !! Type !! Information | ||
|- | |- | ||
| 0x0 || | | 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 * ''' | | 0x30 + (0x20 * '''File Count''') || 0x20 * '''File Count''' || '''Hash Table''' || Hash Table | ||
|- | |- | ||
| 0x30 + ( | | 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: | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset | ! Offset | ||
! Length | |||
! Type | |||
! Information | |||
|- | |- | ||
| 0x0 | |||
| 0x8 | |||
| unsigned long | |||
| Entry ID | |||
|- | |- | ||
| | | 0x8 | ||
| 0x8 | |||
| unsigned long | |||
| Data Offset | |||
|- | |- | ||
| 0x8 || | | 0x10 | ||
| 0x8 | |||
| unsigned long | |||
| Data Length | |||
|- | |- | ||
| | | 0x18 | ||
| 0x8 | |||
| unsigned long | |||
| Unknown | |||
|} | |} | ||
=== | ===Filename IDs=== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! File Entry ID | |||
! Filename | |||
|- | |- | ||
| | | 0x100 | ||
| [[ps3version.txt]] | |||
|- | |- | ||
| | | 0x101 | ||
| [[resource.txt]] | |||
|- | |- | ||
| | | 0x102 | ||
| [[shop.txt]] (only on {{shop}}) | |||
|- | |- | ||
| | | 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]] | |||
|- | |- | ||
| | | 0x501 | ||
| [[spkg_hdr.tar]] (added since FW 3.56) | |||
|- | |- | ||
| | | 0x601 | ||
| [[ps3swu2.self]] (added since FW 3.56) | |||
|} | |} | ||
=== | ===Hash Table=== | ||
The hash table contains a hash entry for every file inside the PUP. | |||
The | |||
The hash entry format is: | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Offset | ! Offset | ||
! Length | |||
! Type | |||
! Information | |||
|- | |- | ||
| 0x0 | | 0x0 | ||
| 0x8 | |||
| unsigned long | |||
| File Entry ID | |||
|- | |- | ||
| 0x8 || | | 0x8 | ||
| 0x14 | |||
| bytes | |||
| HMAC-SHA1 hash | |||
|- | |- | ||
| | | 0x1C | ||
| 0x4 | |||
| unsigned int | |||
| Unknown | |||
|} | |} | ||
== | ==Files in tree example== | ||
Here are two examples of the files stored in a PUP. | |||
=== 3.55 === | === 3.55 === | ||
PSUPDATE.PUP | |||
├── dots.txt | ├── dots.txt | ||
├── license.txt | ├── license.txt | ||
Line 910: | Line 464: | ||
│ ├── info0 | │ ├── info0 | ||
│ └── info1 | │ └── info1 | ||
├── update_files.tar | |||
├── update_flags.txt | ├── update_flags.txt | ||
├── version.txt | ├── version.txt | ||
└── vsh.tar | └── vsh.tar | ||
For a comparison between Retail and Debug firmware : [[3.55 firmware]] | |||
For a comparison between Retail and Debug firmware : [[3.55 firmware]] | |||
=== 3.60 - 4.00 === | === 3.60 - 4.00 === | ||
PSUPDATE.PUP | |||
├── dots.txt | ├── dots.txt | ||
├── license.xml | ├── license.xml | ||
Line 1,066: | Line 618: | ||
└── vsh.tar | └── vsh.tar | ||
└── a | └── a | ||
==Content of different versions== | |||
The following information is a copy/paste from the output of [http://mir.cr/1OBIW13N KaKaRoTo's pup.c tool]. This is an old build, which does not support 3.56/3.60 and higher added entryid's x501 & 0x601 (which because of that are named ''Unknown entry id''). | |||
===File Structure=== | |||
HMAC Key | |||
<!-- <pre> | |||
static const uint8_t hmac_pup_key[] = { | |||
0xf4, 0x91, 0xad, 0x94, 0xc6, 0x81, 0x10, 0x96, | |||
0x91, 0x5f, 0xd5, 0xd2, 0x44, 0x81, 0xae, 0xdc, | |||
0xed, 0xed, 0xbe, 0x6b, 0xe5, 0x13, 0x72, 0x4d, | |||
0xd8, 0xf7, 0xb6, 0x91, 0xe8, 0x8a, 0x38, 0xf4, | |||
0xb5, 0x16, 0x2b, 0xfb, 0xec, 0xbe, 0x3a, 0x62, | |||
0x18, 0x5d, 0xd7, 0xc9, 0x4d, 0xa2, 0x22, 0x5a, | |||
0xda, 0x3f, 0xbf, 0xce, 0x55, 0x5b, 0x9e, 0xa9, | |||
0x64, 0x98, 0x29, 0xeb, 0x30, 0xce, 0x83, 0x66 | |||
}; | |||
</pre> --> | |||
<pre>REDACTED</pre> | |||
Header | |||
<pre> | |||
typedef struct { | |||
uint64_t magic; | |||
uint64_t package_version; | |||
uint64_t image_version; | |||
uint64_t file_count; | |||
uint64_t header_length; | |||
uint64_t data_length; | |||
} PUPHeader; | |||
</pre> | </pre> | ||
File Entry | |||
<pre> | |||
typedef struct { | |||
uint64_t entry_id; | |||
uint64_t data_offset; | |||
uint64_t data_length; | |||
uint8_t padding[8]; | |||
} PUPFileEntry; | |||
</pre> | |||
Hash Entry | |||
{ | <pre> | ||
typedef struct { | |||
uint64_t entry_id; | |||
uint8_t hash[20]; | |||
uint8_t padding[4]; | |||
} PUPHashEntry; | |||
</pre> | |||
Footer | |||
<pre> | |||
typedef struct | |||
{ | |||
uint8_t hash[20]; | |||
uint8_t padding[12]; | |||
} PUPFooter; | |||
</pre> | |||
Entry Id | |||
<pre> | |||
typedef struct { | |||
uint64_t id; | |||
const char *filename; | |||
} PUPEntryID; | |||
</pre> | |||
PUPEntryID entries | |||
<pre>static const PUPEntryID entries[] = { | |||
{0x100, "version.txt"}, | |||
{0x101, "license.xml"}, | |||
{0x102, "promo_flags.txt"}, | |||
{0x103, "update_flags.txt"}, | |||
{0x104, "patch_build.txt"}, | |||
{0x200, "ps3swu.self"}, | |||
{0x201, "vsh.tar"}, | |||
{0x202, "dots.txt"}, | |||
{0x203, "patch_data.pkg"}, | |||
{0x300, "update_files.tar"}, | |||
{0x501, "spkg_hdr.tar"}, | |||
{0x601, "ps3swu2.self"}, | |||
{0, NULL} | |||
};</pre> | |||
=== | ===Contents=== | ||
{| class="wikitable" | |||
{| class="wikitable | |||
|- | |- | ||
! | !Entry Id | ||
!Filename | |||
|- | |- | ||
| | |0x100 | ||
|version.txt | |||
|- | |- | ||
| | |0x101 | ||
|[[license.xml]] | |||
|- | |- | ||
| | |0x102 | ||
|promo_flags.txt | |||
|- | |- | ||
| | |0x103 | ||
|update_flags.txt | |||
|- | |- | ||
| | |0x104 | ||
|patch_build.txt | |||
|- | |- | ||
| | |0x200 | ||
|ps3swu.self | |||
|- | |- | ||
| | |0x201 | ||
|vsh.tar | |||
|- | |- | ||
| | |0x202 | ||
|dots.txt | |||
|- | |- | ||
| | |0x203 | ||
|patch_data.pkg | |||
|- | |- | ||
| | |0x300 | ||
|update_files.tar | |||
|- | |- | ||
| | |0x501 | ||
|spkg_hdr.tar | |||
|- | |- | ||
| | |0x601 | ||
|ps3swu2.self | |||
|- | |- | ||
|} | |} | ||