Packages (.PKG): Difference between revisions

From Vita Developer wiki
Jump to navigation Jump to search
(→‎Game Packages: added some pkg structure info)
Line 14: Line 14:


See also: [[System_File_Object_(SFO)_(PSF)]], [[Keys]]
See also: [[System_File_Object_(SFO)_(PSF)]], [[Keys]]
<pre>
typedef struct{
u32  magic;
u32  pkg_type;
u32  pkg_info_offset;
u32  pkg_info_size;
u32  header_size;
u32  item_count;
u64  total_size;
u64  data_offset;
u64  data_size;
char contentid[0x30];
u8  digest[0x10];
u8  k_licensee[0x10];
u8  sha1_hash[0x40]; //header hash
} PKG_Header;
typedef struct{
u32  magic;          // 0x7f657874 ".ext"
u32  unknown_01;      // static = 1
u32  header_size;    // header size
u32  data_size;      // data size
u32  data_offset;    // data start offset
u32  data_type;      // Beta = 0x390, Retail 0x490
u64  pkg_data_offset; // there is some data at the end: size is always 0x1a0 on retail and beta pkg.
u32  padding1;        // 0x00000000
u32  data_type2;      // Beta = 0x1, Retail 0xc0000002
u32  unknown_02;      // on Retail = 0x930, Beta 0x0
u32  padding2;        // 0x00000000
u64  padding3;        // 0x0000000000000000
u64  padding3;        // 0x0000000000000000
} Unknown_Header;
</pre>


== Firmware Packages ==
== Firmware Packages ==

Revision as of 15:50, 10 January 2013

There are two kinds of PS VITA package files (.pkg):

1. PS VITA Game Packages (.pkg)

2. PS VITA System Packages (.pkg)

Game Packages

Debug and Retail v1.0 (not the actual ones) PS VITA Game Package files (.pkg) can be decrypted & extracted using the "PS VITA .pkg xTractor"

A picture showing the unpacked game .pkg structure: PKGdirstruct.png

See also: System_File_Object_(SFO)_(PSF), Keys

typedef struct{
	u32  magic;
	u32  pkg_type;
	u32  pkg_info_offset;
	u32  pkg_info_size;
	u32  header_size;
	u32  item_count;
	u64  total_size;
	u64  data_offset;
	u64  data_size;
	char contentid[0x30];
	u8   digest[0x10];
	u8   k_licensee[0x10];
	u8   sha1_hash[0x40]; //header hash
} PKG_Header;

typedef struct{
	u32  magic;           // 0x7f657874 ".ext"
	u32  unknown_01;      // static = 1
	u32  header_size;     // header size
	u32  data_size;       // data size
	u32  data_offset;     // data start offset 
	u32  data_type;       // Beta = 0x390, Retail 0x490 
	u64  pkg_data_offset; // there is some data at the end: size is always 0x1a0 on retail and beta pkg.
	u32  padding1;        // 0x00000000
	u32  data_type2;      // Beta = 0x1, Retail 0xc0000002
	u32  unknown_02;      // on Retail = 0x930, Beta 0x0
	u32  padding2;        // 0x00000000
	u64  padding3;        // 0x0000000000000000 
	u64  padding3;        // 0x0000000000000000
} Unknown_Header;

Firmware Packages

PS VITA Firmware Package files (.pkg) are inside PS VITA Update Files (.pup).

Those packages can not be decrypted, yet.

PSN

Game Update

It is a bit upgraded but basicly the same as on PS3. Once a game tab is opened, the VITA downloads a PKG for this game tab. This includes update information, such as if an update if available. If thats the case, the game tab will show you a yellow arrow on the top of the screen which gives you information about the update available. This information is stored in XML's which are gathered via URL's like this example one:

 http://gs.ww.np.dl.playstation.net/ppkg/np/PCSG00001/PCSG00001_T1/0101/c653f481544f8b19/changeinfo.xml

this is the content:

<?xml version="1.0" encoding="UTF-8"?>
<changeinfo titleid="PCSG00001">
  <changes app_ver="01.01">
    <![CDATA[
オンライン仕様に関わる動作の安定性を向上しました
    ]]>
  </changes>
</changeinfo>

This is the original update PKG.

 http://gs.ww.np.dl.playstation.net/ppkg/np/PCSG00001/PCSG00001_T1/c653f481544f8b19/JP0700-PCSG00001_00-RIDGERACERPSVITA-A0101-V0100-fd9baf01343b2db6df0d434b17ef822a9699c6da-PE.pkg 

original link(SKFU BLOG)

the update is stored with the XML.

 http://gs.ww.np.dl.playstation.net/ppkg/np/[TITLE_ID]/[TITLE_ID]_T1/[Version]/[An HASH]/changeinfo.xml

System Package

Bytes are in Little Endian!!

typedef struct {
    unint32_t type;          /*type of pkg. must be 0x3 (Offset 0x04)*/
    unint64_t unknown;       /*unknown but static       (Offset 0x08)*/
    unint64_t hdr_size;      /*header size              (Offset 0x10)*/
    unint64_t content_size;  /*package content size     (Offset 0x18)*/
    unint64_t size;          /*package size             (Offset 0x20)*/
}s_pkg