PSN
Environments
The only valid values for "/CONFIG/NP" "env" is np
, sp-int
, and prod-qa
. SceShell checks the value on startup and if it is not valid, it will rewrite the key to be "invalid". The last two environments are only valid if the console is a test kit or a development kit.
Ticket
Upon logging into PSN, a session ticket is created. This ticket is what is used for all PSN services on the console (store, DLC, multiplayer, etc). The requesting of this ticket is subject to many checks that allow Sony to block lower firmware consoles from connecting to PSN. Most of what is documented for PS3 is still relevant to the Vita. PSN ticket acquiring is done by SceShell and all other apps that use PSN use the ticket that SceShell acquired. That means in order to spoof PSN, all you need to do is patch shell.self and to get platform unique parameters from a later firmware version, you only need to decrypt shell.self (a kernel exploit, therefore, is sufficient but not necessary). Additionally, all PSN communication is done through TLS, and therefore is not susceptible to MITM attacks (you cannot just sniff the parameters without hacking the device). The CAs are also signed so you cannot modify the root CAs from a higher firmware Vita. Below is a list of steps the Vita takes to request a NP Ticket.
- First, an update check is made over HTTP. This can be easily bypassed through a proxy. If the update check fails, then the update prompt will show.
- A
X-I-5-Passphrase
is generated with your account id and console id (?). It is then encrypted and signed by F00D (lv0) and converted to base64. - A platform unique (but not console unique)
X-Platform-Passphrase
is decrypted by F00D (lv0). X-Platform-Version
is set toPSP2 X.YY
where X.YY is the console firmware version.User-Agent
is set toLediatio Lunto Ritna
. This does not seem to be for any security purpose and likely just vestigial code from legacy systems.- A SSL request is made to
https://TITLEID.auth.np.ac.playstation.net/nav/auth
with the headers generated above. - Either
X-I-5-Status: OK
is returned along with a ticket orX-I-5-Status: NG; reason=CODE
is returned. CODE is then added to0x80550400
to form the error code to display to the user. If the error code is that a firmware update is required, the update prompt will show.
Before 3.63, X-Platform-Passphrase
never changed across firmware versions. That means PSN only checked X-Platform-Version
. Whenever Sony releases a new firmware, they do not revoke access to the last firmware right away. As long as you bypass the update check (through a proxy), you can still access PSN. This is why you are always able to use PSN for 1-2 weeks after a new firmware is released. With the original HENkaku hack, we spoof X-Platform-Version
to 3.61 and therefore PSN cannot tell a difference between a legitimate 3.61 console or a hacked 3.60 console since all other parameters are the same. However, in 3.63, Sony finally changed X-Platform-Passphrase
but because of the 1-2 week grace period, people were still able to access PSN for a short amount of time after 3.63 was released. After the grace period, though, the old X-Platform-Passphrase
is rejected, returning an X-I-5-Status
error code indicating that the console needs to be updated. Additionally, because X-I-5-Passphrase
is tied to the console id, it is not possible to use a X-Platform-Passphrase
from another console such as PS3, PSP, or Android. I am also unsure if the firmware version is in X-I-5-Passphrase
(which is generated by F00D), if that is the case, it is unlikely that PSN spoofing would ever work again (short of a lv0 hack, but in that case, there would be no need for PSN spoofing).