Editing Playstation Update Package (PUP)

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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:
#REDIRECT [https://www.psdevwiki.com/ps3/Playstation_Update_Package_(PUP)]
[[Category:Software]]
= Extraction =
The PS VITA update files can be extracted using the "[http://www.vitadevwiki.com/index.php?title=Tools PS VITA Firmware xTractor]".
 
= Decryption =
To decrypt the files which are unpacked using the tool, the key is available under PS Vita Keys
 
= Structure =
The file structure of the Vita's PUP files is almost identical to the PS3's, although there is a slight difference in the header and the hash algorithm. For starters, whereas in PS3 the format was big-endian for the Vita it has been switched to little-endian (probably the same for all Vita formats). Also the '''Package Version''' field in Vita pups is set to 2 where in PS3 updates it was set to 1. There is also 0x50 bytes of extra data in the header and the hashes used are of a longer length than in PS3 updates (0x20 bytes in Vita vs 0x14 in PS3)
 
== Header ==
{| class="wikitable"
|-
! Offset !! Length !! Type !! Information
|-
| 0x0 || 0x8 || unsigned long || Magic (hex: 0x5343455546000001 ~ ASCII "SCEUF")
|-
| 0x8 || 0x8 || unsigned long || Package Version
|-
| 0x10 || 0x8 || unsigned long || Image Version
|-
| 0x18 || 0x8 || unsigned long || File Count
|-
| 0x20 || 0x8 || unsigned long || Header Length (2048, file data starts from here)
|-
| 0x28 || 0x8 || unsigned long || Package Length (size of PUP file - 8)
|-
| 0x30 || 0x50 || '''UNKNOWN''' || UNKNOWN, same for all >V1.0 files so far, maybe something for extra security? (or maybe to break a PS3 which tries to read the update)
<pre>
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000030  02 00 00 00 01 00 00 00 00 00 00 00 02 00 00 00  ................
00000040  00 00 00 00 0F 00 00 00 00 00 00 00 00 00 00 00  ................
00000050  00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000060  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000070  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
</pre>
|-
| 0x80 || 0x20 * '''File Count''' || '''File Table''' || File Table
|-
| 0x80 + (0x20 * '''File Count''') || 0x40 * '''File Count''' || '''Hash Table''' || Hash Table
|-
| 0x80 + (0x60 * '''File Count''') || 0x20 || bytes || Header Hash (unknown algo?)
|}
 
== File Table ==
The file table consists of a number of file entries determined by '''File Count''', with the format below (which is the same as the format in PS3 PUP1 files)
 
{| class="wikitable"
|-
! 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==
 
{| class="wikitable sortable"
|-
! File Entry ID !! Filename !! Notes
|-
| 0x101 || license.xml
|-
| 0x200 || psp2swu.self
|-
| 0x204 || exec_file.self
|-
| 0x301 || package_data01.pkg
|-
| 0x302 || package_data02.pkg
|-
| 0x303 || package_data03.pkg
|-
| 0x304 || package_data04.pkg
|-
| 0x305 || package_data05.pkg
|-
| 0x306 || package_data06.pkg
|-
| 0x307 || package_data07.pkg
|-
| 0x308 || package_data08.pkg
|-
| 0x309 || package_data09.pkg
|-
| 0x30a || package_data10.pkg
|-
| 0x30b || package_data11.pkg
|-
| 0x30c || package_data12.pkg
|-
| 0x30d || package_data13.pkg
|-
| 0x30e || package_data14.pkg
|-
| 0x30f || package_data15.pkg
|-
| 0x400 || package_scewm.wm
|-
| 0x401 || package_sceas.as
|-
|}
 
==Hash Table==
The hash table contains a hash entry for every file inside the PUP.
 
The hash entry format is:
{| class="wikitable"
|-
! Offset
! Length
! Type
! Information
|-
| 0x0
| 0x8
| unsigned long
| File Index
|-
| 0x8
| 0x20
| bytes
| File Hash (unknown algo?)
|-
| 0x28
| 0x18
| bytes
| Unknown
|}
 
 
= Files =
== preinst - 01.000.000 ==
{| class="wikitable sortable"
|-
! Type !! Header !! Information !! Size
|-
| ASCII:MM.mmmm (01.500) || [none] || version.txt || 1
|-
| PSP2SWU.SELF? || SCE .ELF || binary0.self || 4536
|-
| PSP2SWU.SPRX? || SCE .ELF || binary1.self || 42
|-
|  || XML || license.xml || 451
|-
|  || SCE || package_file_0.pkg || 7904
|-
|  || SCE || package_file_1.pkg || 8130
|-
|  || SCE || package_file_2.pkg || 8196
|-
|  || SCE || package_file_3.pkg || 8196
|-
|  || SCE || package_file_4.pkg || 8196
|-
|  || SCE || package_file_5.pkg || 7883
|-
|  || SCE || package_file_6.pkg || 8052
|-
|  || SCE || package_file_7.pkg || 6943
|-
|  || SCE || package_file_8.pkg || 7758
|-
|  || SCE || package_file_9.pkg || 7805
|-
|  || SCE || package_file_10.pkg || 7804
|-
|  || SCE || package_file_11.pkg || 8005
|-
|  || SCE || package_file_12.pkg || 8103
|-
|  || SCE || package_file_13.pkg || 8084
|-
|  || SCE || package_file_14.pkg || 8066
|-
|  || SCE || package_file_15.pkg || 1661
|-
|  || SCEWM || package_file_16.pkg || 14
|-
|  || SCEAS || package_file_17.pkg || 1
|-
|}
== systemdata - 01.000.010 ==
{| class="wikitable sortable"
|-
! Type !! Header !! Information !! Size
|-
| ASCII:MM.mmmm (01.500) || [none] || version.txt || 1
|-
| PSP2SWU.SELF? || SCE .ELF || binary0.self || 4536
|-
| PSP2SWU.SPRX? || SCE .ELF || binary1.self || 42
|-
|  || XML || license.xml || 451
|-
|  || SCE || package_file_0.pkg || 2625
|-
|  || SCE || package_file_1.pkg || 4048
|-
|  || SCE || package_file_2.pkg || 2746
|-
|  || SCE || package_file_3.pkg || 3874
|-
|  || SCE || package_file_4.pkg || 4742
|-
|  || SCE || package_file_5.pkg || 4660
|-
|  || SCE || package_file_6.pkg || 3946
|-
|  || SCE || package_file_7.pkg || 4145
|-
|  || SCE || package_file_8.pkg || 4630
|-
|  || SCE || package_file_9.pkg || 5476
|-
|  || SCE || package_file_10.pkg || 4860
|-
|  || SCE || package_file_11.pkg || 4722
|-
|  || SCEWM || package_file_12.pkg || 4
|-
|  || SCEAS || package_file_13.pkg || 1
|-
|}
== full - 01.500.000 ==
{| class="wikitable sortable"
|-
! Type !! Header !! Information !! Size
|-
| ASCII:MM.mmmm (01.500) || [none] || version.txt || 1
|-
| PSP2SWU.SELF? || SCE .ELF || binary0.self || 4536
|-
| PSP2SWU.SPRX? || SCE .ELF || binary1.self || 42
|-
|  || XML || license.xml || 451
|-
|  || SCE || package_file_0.pkg || 634
|-
|  || SCE || package_file_1.pkg || 6718
|-
|  || SCE || package_file_2.pkg || 8194
|-
|  || SCE || package_file_3.pkg || 8194
|-
|  || SCE || package_file_4.pkg || 8194
|-
|  || SCE || package_file_5.pkg || 8194
|-
|  || SCE || package_file_6.pkg || 8194
|-
|  || SCE || package_file_7.pkg || 8194
|-
|  || SCE || package_file_8.pkg || 8194
|-
|  || SCE || package_file_9.pkg || 8194
|-
|  || SCE || package_file_10.pkg || 8194
|-
|  || SCE || package_file_11.pkg || 6154
|-
|  || SCEWM || package_file_12.pkg || 4
|-
|  || SCEAS || package_file_13.pkg || 1
|-
|}
 
= Regioning =
If simular to PS3, then there is no regioning in the .PUP files, they are the same for all different regions.<br />
The PS Vita however gets the psp2-updatelist.xml from different servers, depening on the region of that model.
 
Retail:
* [http://fjp01.psp2.update.playstation.net/update/psp2/list/jp/psp2-updatelist.xml Japan (jp)]
* [http://fus01.psp2.update.playstation.net/update/psp2/list/us/psp2-updatelist.xml USA (us)]
* [http://feu01.psp2.update.playstation.net/update/psp2/list/eu/psp2-updatelist.xml Europe (eu)]
 
11 jan 2012 :: full 01.520.000 + systemdata 01.000.010 + preinst 01.000.000:
<pre>
<update_data_list>
  <region id="jp">
    <np level0_system_version="01.520.000" level1_system_version="01.520.000" level2_system_version="01.520.000"/>
    <version system_version="01.520.000" label="01.520">
      <update_data update_type="full">
        <image size="94646272">
          http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0111/rel_01a72de4dd90191f679f648da8d11a48/PSP2UPDAT.PUP?dest=jp
        </image>
      </update_data>
    </version>
    <recovery spkg_type="systemdata">
      <image spkg_version="01.000.010" size="56817152">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0111/sd_d48c3a2ca8963ffc7ac01c73e873809c/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
    <recovery spkg_type="preinst">
      <image spkg_version="01.000.000" size="128837120">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0111/pre_5899e51b24eb4ab2c985df08bf6c901b/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
  </region>
</update_data_list>
</pre>
 
22 dec 2011 :: full 01.510.000 + systemdata 01.000.010 + preinst 01.000.000:
<pre>
<update_data_list>
  <region id="jp">
    <np level0_system_version="01.510.000" level1_system_version="01.510.000" level2_system_version="01.510.000"/>
    <version system_version="01.510.000" label="01.510">
      <update_data update_type="full">
        <image size="94500352">
          http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/rel_48ac631ecae3837a7530506de0d73eaf/PSP2UPDAT.PUP?dest=jp
        </image>
      </update_data>
    </version>
    <recovery spkg_type="systemdata">
      <image spkg_version="01.000.010" size="56817152">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/sd_52ff6b714e5f701d15938a6fee68fb66/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
    <recovery spkg_type="preinst">
      <image spkg_version="01.000.000" size="128837120">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/pre_a18a91bb8c86f8c1a101d19fcb15fb6d/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
  </region>
</update_data_list>
</pre>
 
14 dec 2011 :: full 01.500.000 + systemdata 01.000.010 + preinst 01.000.000:
<pre>
<update_data_list>
  <region id="jp">
    <np level0_system_version="01.500.000" level1_system_version="01.500.000" level2_system_version="01.500.000"/>
    <version system_version="01.500.000" label="01.500">
      <update_data update_type="full">
        <image size="94496256">
          http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/rel_f090a69bcf392b5c311b9e786c5cc0b5/PSP2UPDAT.PUP?dest=jp
        </image>
      </update_data>
    </version>
    <recovery spkg_type="systemdata">
      <image spkg_version="01.000.010" size="56817152">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/sd_484243f3964158b38ad1adaac0332a3e/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
    <recovery spkg_type="preinst">
      <image spkg_version="01.000.000" size="128837120">
        http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/pre_24b5601c3b3aa63b51cf5eaeab718a4c/PSP2UPDAT.PUP?dest=jp
      </image>
    </recovery>
  </region>
</update_data_list>
</pre>
 
Shop:
* [http://fshop01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml shop]
* [http://fjp01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml Japan (jp)]
* [http://fus01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml USA (us)]
* [http://feu01.psp2.update.playstation.net/update/psp2/list/shop/psp2-updatelist.xml Europe (eu)]
<pre>
<update_data_list>
  <region id="shop">
    <np level0_system_version="00.000.000" level1_system_version="00.000.000" level2_system_version="00.000.000"/>
    <version system_version="00.000.000">
      <update_data update_type="full">
        <image>NA</image>
      </update_data>
    </version>
  </region>
</update_data_list>
</pre>
 
Retail basic structure of the update URL:
<pre>http://d<TLD>01.psp2.update.playstation.net/update/psp2/image/<YYYY_MMDD>/pre_<md5>/PSP2UPDAT.PUP?dest=<TLD>
(TLD=2 letter abbreviation from above region, YYYY_MMDD is release date, md5 is 22-digits long HASH)</pre>
 
= Revisions =
 
== 01.030.010 ==
SKU Release version in Japan
 
== 01.060.010 ==
SKU Release version in USA/Europe
 
== 01.050.00 ==
shipped on launch gaming cards
 
== 01.500.000 Complete ==
14 dec 2011 <br />
[fill here]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/pre_24b5601c3b3aa63b51cf5eaeab718a4c/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/?z8zjdz8x4yz9r6n 1.000.000 PSP2UPDAT.PUP (122.87 MB)]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/sd_484243f3964158b38ad1adaac0332a3e/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/?jjbkpqs89rdw44g 1.000.010 PSP2UPDAT.PUP (54.19 MB)]
 
=== full 01.500.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1214/rel_f090a69bcf392b5c311b9e786c5cc0b5/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/?5o9ytoy1dfcbabb PSP2UPDAT.PUP (90.12 MB)]
 
== 01.510.000 Complete ==
22 dec 2011 <br />
[fill here]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/pre_a18a91bb8c86f8c1a101d19fcb15fb6d/PSP2UPDAT.PUP <br />
[fill here]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/sd_52ff6b714e5f701d15938a6fee68fb66/PSP2UPDAT.PUP <br />
[fill here]
 
=== full 01.510.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2011_1222/rel_48ac631ecae3837a7530506de0d73eaf/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?acz9smdam8p7ltb PSP2UPDAT.PUP (90.12 MB)]
 
== 01.520.000 Complete ==
11 jan 2012 <br />
[fill here]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0111/pre_5899e51b24eb4ab2c985df08bf6c901b/PSP2UPDAT.PUP <br />
[[fill here]  PSP2UPDAT.PUP (122.87 MB)]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0111/sd_d48c3a2ca8963ffc7ac01c73e873809c/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/?qs5w697asg22jq2 PSP2UPDAT.PUP (54.19 MB)]
 
=== full 01.520.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0111/rel_01a72de4dd90191f679f648da8d11a48/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?7d0hv9ua2thtoit PSP2UPDAT.PUP (90.26 MB)]
 
== 01.600.000 Complete ==
8 feb 2012 <br />
[fill here]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0206/pre_fb565f82d66bbd1ac9dbc2ddb1c62cdf/PSP2UPDAT.PUP <br />
[[fill here]  PSP2UPDAT.PUP (122.87 MB)]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0206/sd_49299e94ebc7c040b6e0a2d2a7f6ddcc/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?s9ed3wm0zdxe8yt PSP2UPDAT.PUP (54.19 MB)]
 
=== full 01.600.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0206/rel_5e9c9bc4f434db1401d30ec41c174ab9/PSP2UPDAT.PUP<br />
[http://www.mediafire.com/download.php?lrv1p78j42zht86 PSP2UPDAT.PUP (90.26 MB)]
 
== 01.610.000 Complete ==
21 feb 2012 <br />
[fill here]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0216/pre_061248a332add8575d76b694ffb7342a/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?ero6qp9cwkv6iss PSP2UPDAT.PUP (122.87 MB)]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0216/sd_383cb3e417ee83bf9567ad5df910fa03/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?mg57y18iiy67c85 PSP2UPDAT.PUP (54.19 MB)]
 
=== full 01.610.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0216/rel_f0bc997c94a6190768515c7d1f6db7b3/PSP2UPDAT.PUP<br />
[http://www.mediafire.com/download.php?segy3b4aaa2qs2u PSP2UPDAT.PUP (90.26 MB)]
 
== 01.650.000 Complete ==
30 mar 2012 <br />
[fill here]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0330/pre_81bfac5a07522e20592ea476a790ac20/PSP2UPDAT.PUP <br />
[fill here]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0330/sd_8b57dc0a9219b9fa7eeb6b2cd6b4433a/PSP2UPDAT.PUP <br />
[fill here]
 
=== full 01.650.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0330/rel_03a1888a00a58acd2316cbec309716a9/PSP2UPDAT.PUP <br />
[fill here]
 
== 01.660.000 Complete ==
04 apr 2012 <br />
[fill here]
 
=== preinst 01.000.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0403/pre_69fd66f4b4785d2cc01927f2771a8f2b/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?at14b8p1ccm0p80 PSP2UPDAT.PUP (122.87 MB)]
 
=== systemdata 01.000.010 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0403/sd_5dfed130a0cf4eb3708020fcd331184d/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?39s9bbsqx9vbbm8 PSP2UPDAT.PUP (54.19 MB)]
 
=== full 01.660.000 ===
http://djp01.psp2.update.playstation.net/update/psp2/image/2012_0403/rel_fb68d6099eab0ba188fd92ebff5085a2/PSP2UPDAT.PUP <br />
[http://www.mediafire.com/download.php?w4e4bwdwbqkm39p PSP2UPDAT.PUP (90.26 MB)]
Please note that all contributions to Vita Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see Vita Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)