<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.imagisphere.me/history/Filetype:Encrypted_PSP_Container?feed=atom</id>
	<title>Filetype:Encrypted PSP Container - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.imagisphere.me/history/Filetype:Encrypted_PSP_Container?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.imagisphere.me/history/Filetype:Encrypted_PSP_Container"/>
	<updated>2026-06-25T07:44:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=35958&amp;oldid=prev</id>
		<title>DokkeFyxen at 22:03, 21 January 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=35958&amp;oldid=prev"/>
		<updated>2025-01-21T22:03:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:03, 21 January 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l35&quot;&gt;Line 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 35:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The File Path is a CRC32 checksum generated using the ASCII bytes of the asset&amp;#039;s file path. See a list of paths in the official archive [https://github.com/ennuo/lbparc/blob/main/src/data/paths.json here]. For remote assets, a CRC32 value of zero will cause the game to error and abort the connection, so the CRC32 must be a non-zero value. Remote assets do not all need to have a unique CRC32 value. The data hash is an MD5 hash of the entire file before encryption plus the first 9 bytes of the footer.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The File Path is a CRC32 checksum generated using the ASCII bytes of the asset&amp;#039;s file path. See a list of paths in the official archive [https://github.com/ennuo/lbparc/blob/main/src/data/paths.json here]. For remote assets, a CRC32 value of zero will cause the game to error and abort the connection, so the CRC32 must be a non-zero value. Remote assets do not all need to have a unique CRC32 value. The data hash is an MD5 hash of the entire file before encryption plus the first 9 bytes of the footer.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:File Formats&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|I&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:File Formats]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:LittleBigPlanet (PlayStation Portable) File Formats&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|I&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:LittleBigPlanet (PlayStation Portable) File Formats&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Technical Pages&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>DokkeFyxen</name></author>
	</entry>
	<entry>
		<id>https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=27194&amp;oldid=prev</id>
		<title>DokkeFyxen: DokkeFyxen moved page Level Part:Encrypted PSP Container to Filetype:Encrypted PSP Container without leaving a redirect</title>
		<link rel="alternate" type="text/html" href="https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=27194&amp;oldid=prev"/>
		<updated>2024-06-19T17:33:16Z</updated>

		<summary type="html">&lt;p&gt;DokkeFyxen moved page &lt;a href=&quot;/edit/Level_Part:Encrypted_PSP_Container?redlink=1&quot; class=&quot;new&quot; title=&quot;Level Part:Encrypted PSP Container (page does not exist)&quot;&gt;Level Part:Encrypted PSP Container&lt;/a&gt; to &lt;a href=&quot;/Filetype:Encrypted_PSP_Container&quot; title=&quot;Filetype:Encrypted PSP Container&quot;&gt;Filetype:Encrypted PSP Container&lt;/a&gt; without leaving a redirect&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:33, 19 June 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>DokkeFyxen</name></author>
	</entry>
	<entry>
		<id>https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=27158&amp;oldid=prev</id>
		<title>DokkeFyxen: DokkeFyxen moved page Encrypted PSP Container to Filetype:Encrypted PSP Container without leaving a redirect</title>
		<link rel="alternate" type="text/html" href="https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=27158&amp;oldid=prev"/>
		<updated>2024-06-19T17:15:16Z</updated>

		<summary type="html">&lt;p&gt;DokkeFyxen moved page &lt;a href=&quot;/edit/Encrypted_PSP_Container?redlink=1&quot; class=&quot;new&quot; title=&quot;Encrypted PSP Container (page does not exist)&quot;&gt;Encrypted PSP Container&lt;/a&gt; to &lt;a href=&quot;/Filetype:Encrypted_PSP_Container&quot; title=&quot;Filetype:Encrypted PSP Container&quot;&gt;Filetype:Encrypted PSP Container&lt;/a&gt; without leaving a redirect&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:15, 19 June 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>DokkeFyxen</name></author>
	</entry>
	<entry>
		<id>https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=22007&amp;oldid=prev</id>
		<title>Beyley: Add initial information about the format</title>
		<link rel="alternate" type="text/html" href="https://wiki.imagisphere.me/index.php?title=Filetype:Encrypted_PSP_Container&amp;diff=22007&amp;oldid=prev"/>
		<updated>2024-01-11T07:18:03Z</updated>

		<summary type="html">&lt;p&gt;Add initial information about the format&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{WIP}}&lt;br /&gt;
==About==&lt;br /&gt;
Almost all PSP assets are contained within this encrypted container. The only major exception is TGA files (taken during grief reports) and root level resources, which are sent uncompressed and unencrypted to the game server.&lt;br /&gt;
&lt;br /&gt;
==Format==&lt;br /&gt;
The container has no magic, but can be detected by verifying the MD5 hash contained within the file&amp;#039;s footer. The whole file &amp;#039;&amp;#039;&amp;#039;including the footer&amp;#039;&amp;#039;&amp;#039; is encrypted using the AES-128-CTR cypher. The encryption key is stored at the address &amp;#039;0x003d9f30&amp;#039; in the decrypted 2.0.5 US EBOOT.BIN, and is stored within a 64-byte long chunk of data. To extract the 128-bit AES-128-CTR key from that 64-byte region, you need to run the following code&amp;lt;sup&amp;gt;[https://gist.github.com/Beyley/c3bc7d5319bd0e8f22b69010898b18dd]&amp;lt;/sup&amp;gt; inside Node.js (or do the same steps manually in a hex editor). &lt;br /&gt;
&lt;br /&gt;
    const fs = require(&amp;quot;fs&amp;quot;);&lt;br /&gt;
    //key.bin is a file containing the extracted 64-byte region starting from 0x003d9f30 in the decrypted LBP PSP US 2.0.5 EBOOT.BIN&lt;br /&gt;
    let block = fs.readFileSync(&amp;#039;key.bin&amp;#039;);&lt;br /&gt;
    let key = Buffer.alloc(16);&lt;br /&gt;
    for (let i = 0; i &amp;lt; 16; ++i)&lt;br /&gt;
        key[i] = block[(i * 4) + (i % 4)];&lt;br /&gt;
    //psp.key is the output key.&lt;br /&gt;
    fs.writeFileSync(&amp;#039;psp.key&amp;#039;, key);&lt;br /&gt;
&lt;br /&gt;
The initial counter of the AES-128-CTR cipher (which is 16-bytes long) is the first 8 bytes of the encryption key, followed by 8 null bytes&amp;lt;sup&amp;gt;[https://github.com/LittleBigRefresh/Refresh/blob/a6a6c54f2be1a43139896da30ff82f62eb7ae9c0/Refresh.GameServer/Resources/ResourceHelper.cs#L30]&amp;lt;/sup&amp;gt;. The contents of the file (minus the footer) may use LZO compression, with a flag in the footer specifying when it is used.&lt;br /&gt;
&lt;br /&gt;
===Footer===&lt;br /&gt;
The footer is a 25 byte long region stored at the tail end of the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Name !! Data Type&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || Uncompressed Data Length || u32&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || Compression flag || u8&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || File Path || u32 (CRC32 checksum)&lt;br /&gt;
|-&lt;br /&gt;
| 0x09 || Data Hash || u128 (MD5 hash)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The File Path is a CRC32 checksum generated using the ASCII bytes of the asset&amp;#039;s file path. See a list of paths in the official archive [https://github.com/ennuo/lbparc/blob/main/src/data/paths.json here]. For remote assets, a CRC32 value of zero will cause the game to error and abort the connection, so the CRC32 must be a non-zero value. Remote assets do not all need to have a unique CRC32 value. The data hash is an MD5 hash of the entire file before encryption plus the first 9 bytes of the footer.&lt;br /&gt;
&lt;br /&gt;
[[Category:File Formats|I]]&lt;br /&gt;
[[Category:LittleBigPlanet (PlayStation Portable) File Formats|I]]&lt;/div&gt;</summary>
		<author><name>Beyley</name></author>
	</entry>
</feed>