ACT.DAT: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
 
(8 intermediate revisions by 4 users not shown)
Line 9: Line 9:
=== PSP ===
=== PSP ===


?flash0:NPDRM/ACT.DAT?
<pre>
flash2:/act.dat
</pre>


=== PS3 ===
=== PS3 ===


  hdd0:home/000000XX/exdata/act.dat
  dev_hdd0:/home/000000XX/exdata/act.dat


=== PSVita ===
=== PSVita ===


  [[Files_on_the_PS_Vita#tm0|tm0]]:npdrm/act.dat
  [[Files_on_the_PS_Vita#tm0|tm0]]:/npdrm/act.dat
  [[Files_on_the_PS_Vita#tm0|tm0]]:psmdrm/act.dat (only if PSM Is activated)
  [[Files_on_the_PS_Vita#tm0|tm0]]:/psmdrm/act.dat (only if PSM Is activated)


== Structure ==
== Structure ==


{| class="wikitable sortable"
{| class="wikitable"
| style="background-color:#123EDA; color:#FFFFFF;" |'''Name'''
! Name !! Offset !! Size !! Example !! Notes
| style="background-color:#123EDA; color:#FFFFFF;" |'''Offset'''
| style="background-color:#123EDA; color:#FFFFFF;" |'''Size'''
| style="background-color:#123EDA; color:#FFFFFF;" |'''Example'''
| style="background-color:#123EDA; color:#FFFFFF;" |'''Remark'''
|-
|-
| Activation Type || 0x0 || 0x2 || 0001 || 1 = local
| Activation Type || 0x0 || 0x2 || 0001 || 1 = local
|-
|-
| Unknown || 0x0 || 0x2 || 0000, 0001 || 0 for v.1, 1 for v.2. Maybe Version Flag like on RIF.
| Version Flag || 0x0 || 0x2 || 0000, 0001 || 0 for v.1, 1 for v.2.
|-
|-
| Version || 0x4 || 0x4 || 00000001, 00000002 || 1 (PSP and PS3 parser) or 2 (PSVita parser)
| Version || 0x4 || 0x4 || 00000001, 00000002 || 1 (PSP and PS3 parser) or 2 (PSVita parser)
Line 39: Line 37:
| Primary Key Table || 0x10 || 0x800 || N.A || Encrypted RIF keys table
| Primary Key Table || 0x10 || 0x800 || N.A || Encrypted RIF keys table
|-
|-
| Unknown1 || 0x810 || 0x40 || N.A ||
| Unknown 1 || 0x810 || 0x40 || N.A ||
|-
|-
| OpenPsId || 0x850 || 0x10 || N.A ||  
| OpenPsId || 0x850 || 0x10 || N.A ||  
|-
|-
| Unknown3 || 0x860 || 0x10 || N.A || Encrypted_data for v.1 / Padding for v.2
| Unknown 2 || 0x860 || 0x10 || N.A || Encrypted data for v.1 / Unknown (8 bytes) + Padding (8 bytes) for v.2
|-
|-
| Unknown4 || 0x870 || 0x10 || N.A || Encrypted_data for v.1 / Time_Stamp for v.2
| Unknown 4 || 0x870 || 0x10 || N.A || Encrypted data for v.1 / Start Time (8 bytes) + Expiration Time (8 bytes) for v.2
|-
|-
| Secondary Table || 0x880 || 0x650 || N.A ||
| Secondary Table || 0x880 || 0x650 || N.A ||
Line 51: Line 49:
| RSA Signature|| 0xED0 || 0x100 || N.A || RSA Public Key for RIF type 0 and 1
| RSA Signature|| 0xED0 || 0x100 || N.A || RSA Public Key for RIF type 0 and 1
|-
|-
| Unknown Sig || 0xFD0 || 0x40 || N.A || Maybe AES CMAC (0x20 key + 0x20 hash).
| Unknown Signature || 0xFD0 || 0x40 || N.A || Maybe AES CMAC (0x20 key + 0x20 hash) or AES HMAC.
|-
|-
| ECDSA Signature || 0x1010 || 0x28 || N.A || pub=vsh_pub, ctype=0x02(vsh_curves)
| ECDSA Signature || 0x1010 || 0x28 || N.A || pub=vsh_pub, ctype=0x02(vsh_curves)
Line 62: Line 60:
NOT WORKING ANYMORE.
NOT WORKING ANYMORE.


A PHP script is released to obtain the act.dat. See [[http://playstationhax.xyz/forums/topic/550-news-vita-hack/?page=4#comment-23519 playstationhax.xyz]]
A PHP script is released to obtain the act.dat. See [[https://web.archive.org/web/*/http://playstationhax.xyz/forums/topic/550-news-vita-hack/?page=4#comment-23519 playstationhax.xyz]]


[[http://pastie.org/private/5koe6klxypv8dpbxkcmda pastie]]
[[http://pastie.org/private/5koe6klxypv8dpbxkcmda pastie]]

Latest revision as of 00:19, 30 June 2023

Description[edit | edit source]

An activation file for a Sony Playstation console, based on an account email and password, the devices IDPS, the platform and activation type.

It is used to decrypt NPDRM content license files (.rif) and EDAT files, which themselves lead to content decryption (PFS layer, SELF layer).

Location[edit | edit source]

PSP[edit | edit source]

flash2:/act.dat

PS3[edit | edit source]

dev_hdd0:/home/000000XX/exdata/act.dat

PSVita[edit | edit source]

tm0:/npdrm/act.dat
tm0:/psmdrm/act.dat (only if PSM Is activated)

Structure[edit | edit source]

Name Offset Size Example Notes
Activation Type 0x0 0x2 0001 1 = local
Version Flag 0x0 0x2 0000, 0001 0 for v.1, 1 for v.2.
Version 0x4 0x4 00000001, 00000002 1 (PSP and PS3 parser) or 2 (PSVita parser)
Account ID 0x8 0x8 AB CD EF 01 02 34 78 91 PSN Account ID (in little endian)
Primary Key Table 0x10 0x800 N.A Encrypted RIF keys table
Unknown 1 0x810 0x40 N.A
OpenPsId 0x850 0x10 N.A
Unknown 2 0x860 0x10 N.A Encrypted data for v.1 / Unknown (8 bytes) + Padding (8 bytes) for v.2
Unknown 4 0x870 0x10 N.A Encrypted data for v.1 / Start Time (8 bytes) + Expiration Time (8 bytes) for v.2
Secondary Table 0x880 0x650 N.A
RSA Signature 0xED0 0x100 N.A RSA Public Key for RIF type 0 and 1
Unknown Signature 0xFD0 0x40 N.A Maybe AES CMAC (0x20 key + 0x20 hash) or AES HMAC.
ECDSA Signature 0x1010 0x28 N.A pub=vsh_pub, ctype=0x02(vsh_curves)

The Primary Key table is unique per PSN account. It is encrypted using AES ECB with the ConsoleId (IDPS, PSID) of the console activated with this PSN account.

Downloading[edit | edit source]

NOT WORKING ANYMORE.

A PHP script is released to obtain the act.dat. See [playstationhax.xyz]

[pastie]

<?php
 $data = array(
         "loginid" => "", /* email */
         "password" => "", /*pass */
         "consoleid" => "", /* 000000000000000000000 */
         "platform" => "psp2", /* for vita, don't modify, possible parameters psp,ps3,psp2.ps4 is unknown */
         "acttype" => "4", /* for vita, don't modify */
 );
 $custom_headers = array(
         "X-I-5-DRM-Version: 1.0",
 );
 
 $ch = curl_init();
 
 curl_setopt($ch, CURLOPT_URL, "https://commerce.np.ac.playstation.net/cap.m");
 curl_setopt($ch, CURLOPT_USERAGENT, "8888888");
 curl_setopt($ch, CURLOPT_HTTPHEADER, $custom_headers);
 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
 
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
 
 //curl_setopt($ch, CURLOPT_HEADER, 1);
 //curl_setopt($ch, CURLOPT_CERTINFO, 1);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_VERBOSE, 1);
 
 $response = curl_exec($ch);
 
 curl_close($ch);
 
 $fp = fopen("act.dat", "wb");
 fwrite($fp, $response);
 fclose($fp); 
 ?>

Related[edit | edit source]