ACT.DAT: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
== Description ==
== Description ==
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 also used to de-/crypt [[EDAT files]] for a game.


=== Location ===
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 ==
 
=== PSP ===
 
=== PS3 ===
 
"home/000000XX/exdata/act.dat"
"home/000000XX/exdata/act.dat"
=== PSVita ===
[[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)
== Structure ==
{| class="wikitable sortable"
| style="background-color:#123EDA; color:#FFFFFF;" |'''Name'''
| 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 || 0x4 || 0001 || 0 (acttype=0 or acttype=1), 1 (acttype=4)
|-
| Unknown || 0x0 || 0x4 || 0001 || Always 1
|-
| Version || 0x4 || 0x4 || 00000002 || 1 or 2 (current)
|-
| Account ID || 0x8 || 0x8 || AB CD EF 01 02 34 78 91 || personal PSN account ID
|-
| Primary Key Table || 0x10 || 0x800 || N.A || Encrypted RIF keys
|-
| Unknown1 || 0x810 || 0x40 || N.A||
|-
| OpenPsId|| 0x850 || 0x10 || N.A|| Result from _sceKernelGetOpenPsId() in the SceSblAimgr Module
|-
| Unknown3 || 0x860 || 0x10 || N.A|| Encrypted_data for v.1 / Padding for v.2
|-
| Unknown4 || 0x870 || 0x10 || N.A|| Encrypted_data for v.1 / Time_Stamp 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 Sig || 0xFD0 || 0x40 || N.A|| params are unknown
|-
| ECDSA Signature || 0x1010 || 0x28 || N.A|| pub=vsh_pub, ctype=0x02(vsh_curves)
|}
== Downloading ==
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]]
[[http://pastie.org/private/5koe6klxypv8dpbxkcmda pastie]]
<source lang="PHP">
<?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);
?>
</source>


=== Known Issues/bugs ===
=== Known Issues/bugs ===
* [[QA_Flagging#Act.dat_.28PSN_activation.29_gets_deleted|Act.dat (PSN activation) gets deleted]]
* [[QA_Flagging#Act.dat_.28PSN_activation.29_gets_deleted|Act.dat (PSN activation) gets deleted]]




{{File Formats}}<noinclude>[[Category:Main]]</noinclude>
{{File Formats}}<noinclude>[[Category:Main]]</noinclude>

Revision as of 00:03, 25 December 2019

Description

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

PSP

PS3

"home/000000XX/exdata/act.dat"

PSVita

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

Structure

Name Offset Size Example Remark
Activation Type 0x0 0x4 0001 0 (acttype=0 or acttype=1), 1 (acttype=4)
Unknown 0x0 0x4 0001 Always 1
Version 0x4 0x4 00000002 1 or 2 (current)
Account ID 0x8 0x8 AB CD EF 01 02 34 78 91 personal PSN account ID
Primary Key Table 0x10 0x800 N.A Encrypted RIF keys
Unknown1 0x810 0x40 N.A
OpenPsId 0x850 0x10 N.A Result from _sceKernelGetOpenPsId() in the SceSblAimgr Module
Unknown3 0x860 0x10 N.A Encrypted_data for v.1 / Padding for v.2
Unknown4 0x870 0x10 N.A Encrypted_data for v.1 / Time_Stamp 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 Sig 0xFD0 0x40 N.A params are unknown
ECDSA Signature 0x1010 0x28 N.A pub=vsh_pub, ctype=0x02(vsh_curves)

Downloading

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); 
 ?>

Known Issues/bugs