ACT.DAT: Difference between revisions
Jump to navigation
Jump to search
m (→Structure) |
CelesteBlue (talk | contribs) |
||
Line 29: | Line 29: | ||
| style="background-color:#123EDA; color:#FFFFFF;" |'''Remark''' | | style="background-color:#123EDA; color:#FFFFFF;" |'''Remark''' | ||
|- | |- | ||
| Activation Type || 0x0 || | | 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 || 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 37: | Line 39: | ||
| 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|| | | Unknown1 || 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 | | 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 | | Unknown4 || 0x870 || 0x10 || N.A || Encrypted_data for v.1 / Time_Stamp for v.2 | ||
|- | |- | ||
| Secondary Table || 0x880 || 0x650 || N.A || | | Secondary Table || 0x880 || 0x650 || N.A || | ||
|- | |- | ||
| 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|| | | Unknown Sig || 0xFD0 || 0x40 || N.A || Maybe AES CMAC (0x20 key + 0x20 hash). | ||
|- | |- | ||
| 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) | ||
|} | |} | ||
The Primary Key table is unique per PSN account. It is encrypted using ECB with the ConsoleId of the console activated with this PSN account. | 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 == | == Downloading == |
Revision as of 03:58, 18 February 2021
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
?flash0:NPDRM/ACT.DAT?
PS3
hdd0: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 | 0x2 | 0001 | 1 = local |
Unknown | 0x0 | 0x2 | 0000, 0001 | 0 for v.1, 1 for v.2. Maybe Version Flag like on RIF. |
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 |
Unknown1 | 0x810 | 0x40 | N.A | |
OpenPsId | 0x850 | 0x10 | N.A | |
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 | Maybe AES CMAC (0x20 key + 0x20 hash). |
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
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
|