ACT Services: Difference between revisions
TimmSkiller (talk | contribs) added information about password management |
TimmSkiller (talk | contribs) No edit summary |
||
(17 intermediate revisions by 2 users not shown) | |||
Line 200: | Line 200: | ||
It is also possible to change the account slot number of an account by using [[ACTA:SwapAccounts]]. | It is also possible to change the account slot number of an account by using [[ACTA:SwapAccounts]]. | ||
Account slot -2 (0xFE) always refers to the currently loaded account. | |||
== Console Accounts == | == Console Accounts == | ||
Line 211: | Line 213: | ||
Associating a console account with a Nintendo Network ID (server-side) is facilitated by the commands [[ACTA:BindToNewServerAccount]] (to create and link an NNID) or [[ACTA:BindToExistentServerAccount]] (to log into an existing linked NNID). | Associating a console account with a Nintendo Network ID (server-side) is facilitated by the commands [[ACTA:BindToNewServerAccount]] (to create and link an NNID) or [[ACTA:BindToExistentServerAccount]] (to log into an existing linked NNID). | ||
Nintendo Network IDs can be transferred to other consoles using [[ACTA:ReserveTransfer]] initially, and then [[ACTA:CompleteTransfer]]. | |||
NNIDs can be deleted using either [[ACTA:DeleteServerAccount]], [[ACTA:InactivateAccountDeviceAssociation]], [[ACTA:DeleteAccountDeviceAssociation]] or [[ACTA:ReserveServerAccountDeletion]]. | |||
= Password Management = | = Password Management = | ||
Line 259: | Line 263: | ||
See below how these types are determined by default. These types can also be overridden using [[ACTA:SetHostServerSettings]], [[ACTA:SetDefaultHostServerSettings]], [[ACTA:SetHostServerSettingsStr]], and [[ACTA:SetDefaultHostServerSettingsStr]]. | See below how these types are determined by default. These types can also be overridden using [[ACTA:SetHostServerSettings]], [[ACTA:SetDefaultHostServerSettings]], [[ACTA:SetHostServerSettingsStr]], and [[ACTA:SetDefaultHostServerSettingsStr]]. | ||
The base URL for the Nintendo Network Account Server (NNAS) is: <code>https://[<prefix>]account.nintendo.net</code>. | The base URL for the Nintendo Network Account Server (NNAS) is: <code>https://[<prefix>]account.nintendo.net</code>. | ||
Line 411: | Line 411: | ||
| 0x3 || 0x1 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Default account slot | | 0x3 || 0x1 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Default account slot | ||
|- | |- | ||
| 0x4 || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Difference between server time and UTC device time (in nanoseconds) | | 0x4 || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || NetworkTimeDifference: Difference between server time and UTC device time (in nanoseconds) | ||
|- | |- | ||
| 0x5 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || PersistentId | | 0x5 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || PersistentId | ||
Line 417: | Line 417: | ||
| 0x6 || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]]/[[ACTU:GetAccountDataBlock|GetAccountInfo]] || CommonTransferableIdBase on GetCommonInfo / TransferableIdBase on GetAccountInfo | | 0x6 || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]]/[[ACTU:GetAccountDataBlock|GetAccountInfo]] || CommonTransferableIdBase on GetCommonInfo / TransferableIdBase on GetAccountInfo | ||
|- | |- | ||
| 0x7 || 0x60 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || [[ | | 0x7 || 0x60 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || [[Mii#CFLStoreData|Mii CFLStoreData]] | ||
|- | |- | ||
| 0x8 || 0x11 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || AccountId (ASCII NULL-terminated Nintendo Network ID) | | 0x8 || 0x11 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || AccountId (ASCII NULL-terminated Nintendo Network ID) | ||
Line 423: | Line 423: | ||
| 0x9 || 0x101 || [[ACTU:AcquireAccountInfo|AcquireAccountInfo]] || Mail address | | 0x9 || 0x101 || [[ACTU:AcquireAccountInfo|AcquireAccountInfo]] || Mail address | ||
|- | |- | ||
| 0xA || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || Birthdate | | 0xA || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || [[ACT_Services#Birthdate|Birth Date]] | ||
|- | |- | ||
| 0xB || 0x3 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL-terminated Country Name | | 0xB || 0x3 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL-terminated Country Name | ||
Line 454: | Line 444: | ||
| 0x8 || 0x8 || u64 TransferableIDBase | | 0x8 || 0x8 || u64 TransferableIDBase | ||
|- | |- | ||
| 0x10 || 0x60 || [[Mii# | | 0x10 || 0x60 || [[Mii#CFLStoreData|Mii CFLStoreData]] | ||
|- | |- | ||
| 0x70 || (10 + 1) * 2 || 10-character UTF-16 Mii Display Name | | 0x70 || (10 + 1) * 2 || 10-character UTF-16 Mii Display Name | ||
Line 462: | Line 452: | ||
| 0x97 || 1 || padding | | 0x97 || 1 || padding | ||
|- | |- | ||
| 0x98 || 0x4 || Birthdate | | 0x98 || 0x4 || [[ACT_Services#Birthdate|Birth Date]] | ||
|- | |- | ||
| 0x9C || 0x4 || u32, PrincipalID | | 0x9C || 0x4 || u32, PrincipalID | ||
|} | |} | ||
|- | |- | ||
| 0x12 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || | | 0x12 || 0x4 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || Account server types | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset !! Size !! Description | ! Offset !! Size !! Description | ||
|- | |- | ||
| 0x0 || 0x1 || NNAS (Nintendo Network Authentication Server) Type | | 0x0 || 0x1 || [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS (Nintendo Network Authentication Server) Type]] | ||
|- | |- | ||
| 0x1 || 0x1 || [[ | | 0x1 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type Value]] | ||
|- | |- | ||
| 0x2 || 0x1 || [[ | | 0x2 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Number]] | ||
|- | |- | ||
| 0x3 || 0x1 || padding (0) | | 0x3 || 0x1 || padding (0) | ||
Line 503: | Line 483: | ||
| 0x19 || 0x8 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || UtcOffset | | 0x19 || 0x8 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || UtcOffset | ||
|- | |- | ||
| 0x1A || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || | | 0x1A || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || IsCommitted | ||
|- | |- | ||
| 0x1B || 0x16 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || 10-character UTF-16 Mii Name (10 characters + NULL termination) | | 0x1B || 0x16 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || 10-character UTF-16 Mii Name (10 characters + NULL termination) | ||
|- | |- | ||
| 0x1C || 0x11 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL- | | 0x1C || 0x11 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || ASCII NULL-terminated NfsPassword | ||
|- | |- | ||
| 0x1D || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || HasEciVirtualAccount (checks whether EciVirtualAccount has a value) | | 0x1D || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || HasEciVirtualAccount (checks whether EciVirtualAccount has a value) | ||
Line 527: | Line 507: | ||
|- | |- | ||
| 0x22 || 0x29 || ASCII NULL-terminated refresh token | | 0x22 || 0x29 || ASCII NULL-terminated refresh token | ||
|- | |||
| 0x4B || 0x1 || padding | |||
|} | |||
|- | |||
| 0x22 || 0x1 || [[ACTU:GetCommonInfo|GetCommonInfo]] || IsApplicationUpdateRequired | |||
|- | |||
| 0x23 || 0x4 || [[ACTU:GetCommonInfo|GetCommonInfo]] || Default account server types | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x0 || 0x1 || [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS (Nintendo Network Authentication Server) Type]] | |||
|- | |||
| 0x1 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type Value]] | |||
|- | |||
| 0x2 || 0x1 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Number]] | |||
|- | |||
| 0x3 || 0x1 || padding (0) | |||
|} | |} | ||
|- | |- | ||
Line 542: | Line 540: | ||
! Offset !! Size !! Description | ! Offset !! Size !! Description | ||
|- | |- | ||
| 0x0 || 0x21 || ASCII NULL-terminated NNAS subdomain | | 0x0 || 0x21 || ASCII NULL-terminated [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS]] subdomain | ||
|- | |- | ||
| 0x21 || 0x3 || [[ | | 0x21 || 0x3 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type]] | ||
|} | |} | ||
|- | |- | ||
Line 552: | Line 550: | ||
! Offset !! Size !! Description | ! Offset !! Size !! Description | ||
|- | |- | ||
| 0x0 || 0x21 || ASCII NULL-terminated NNAS subdomain | | 0x0 || 0x21 || ASCII NULL-terminated [[ACT_Services#NNAS_.28Nintendo_Network_Authentication_Server.29_Types|NNAS]] subdomain | ||
|- | |- | ||
| 0x21 || 0x3 || [[ | | 0x21 || 0x3 || [[ACT_Services#NFS_.28Nintendo_Friend_Server.29_Types|NFS (Nintendo Friend Server) Type]] | ||
|} | |} | ||
|- | |- | ||
| 0x2A || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || first 8 bytes of <code>SHA256 ( [[AM:GetDeviceId]]() as 4 little endian bytes + | | 0x2A || 0x8 || [[ACTU:GetCommonInfo|GetCommonInfo]] || DeviceHash: first 8 bytes of <code>SHA256 ( [[AM:GetDeviceId]]() as 4 little endian bytes + A2257354 )</code> | ||
|- | |- | ||
| 0x2B || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || FpLocalAccountId (local account ID of [[Friend_Services|friends sysmodule]]) | | 0x2B || 0x1 || [[ACTU:GetAccountDataBlock|GetAccountInfo]] || FpLocalAccountId (local account ID of [[Friend_Services|friends sysmodule]]) | ||
Line 571: | Line 569: | ||
= Types = | = Types = | ||
== | == Birthdate == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset !! Size !! Description | ! Offset !! Size !! Description | ||
|- | |- | ||
| 0x0 || | | 0x0 || 0x2 || u16, Year | ||
|- | |- | ||
| | | 0x2 || 0x1 || u8, Month | ||
|- | |- | ||
| | | 0x3 || 0x1 || u8, Day | ||
|} | |} | ||
== Mii Image Types == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value !! Description | |||
|- | |||
| 0 || Primary Mii Image | |||
|- | |||
| 1 || Unknown | |||
|- | |||
| 2 || Unknown | |||
|- | |||
| 3 || Unknown | |||
|- | |||
| 4 || Unknown | |||
|- | |||
| 5 || Unknown | |||
|- | |||
| 6 || Unknown | |||
|- | |||
| 7 || Unknown | |||
|- | |||
| 8 || Unknown | |||
|} | |||
== Timezone == | == Timezone == | ||
Line 598: | Line 620: | ||
|- | |- | ||
| 0x88 || 0x8 || s64, UtcOffset in seconds | | 0x88 || 0x8 || s64, UtcOffset in seconds | ||
|} | |||
== AcquireTimeZoneListData == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x0 || 0x4 || u32, Capacity (32) | |||
|- | |||
| 0x4 || 0x4 || u32, Count | |||
|- | |||
| 0x8 || 0x90 * Capacity || [[ACT_Services#Timezone|Timezones]] | |||
|} | |} | ||
Line 610: | Line 644: | ||
|- | |- | ||
| 0x6 || 0x2 || u16, EULA version | | 0x6 || 0x2 || u16, EULA version | ||
|} | |||
== InquireBindingToExistentServerAccountData == | |||
Represents the device information for the console linked to the NNID. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x0 || 0x1 || bool, HasMii | |||
|- | |||
| 0x1 || 0x3 || padding | |||
|- | |||
| 0x4 || 0x60 || [[Mii#CFLStoreData|Mii CFLStoreData]] | |||
|- | |||
| 0x64 || 0x4 || u32, PrincipalId | |||
|- | |||
| 0x68 || 0x1 || bool, CoppaRequiredFlag | |||
|- | |||
| 0x69 || 0x3 || padding | |||
|- | |||
| 0x6C || 0x5 + 1 || ASCII 5-character CoppaCode + NULL termination | |||
|- | |||
| 0x72 || 0x100 + 1 || ASCII 256-character ParentEmail + NULL termination | |||
|- | |||
| 0x173 || 0x1 || padding | |||
|- | |||
| 0x174 || 0x4 || [[ACT_Services#Birthdate|Birth Date]] | |||
|} | |||
==SendCoppaCodeMailData== | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x0 || 0x5 + 1 || 5-character ASCII CoppaCode + NULL termination | |||
|- | |||
| 0x6 || 0x100 + 1 || 256-character ASCII ParentEmail + NULL termination | |||
|} | |||
==AcquireEulaData/AcquireEulaListData== | |||
Data returned from [[ACTU:AcquireEula]] and [[ACTU:AcquireEulaList]] uses a special format. | |||
===EulaHeader=== | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x0 || 0x3 || 2-character Country code + NULL termination | |||
|- | |||
| 0x3 || 0x1 || padding | |||
|- | |||
| 0x4 || 0x3 || 2-character Language code + NULL termination | |||
|- | |||
| 0x7 || 0x1 || padding | |||
|- | |||
| 0x8 || 0x2 || u16, Version | |||
|- | |||
| 0xA || 0x2 || padding | |||
|- | |||
| 0xC || 0x4 || u32, end offset of this EULA within full data blob | |||
|- | |||
| 0x10 || 0x4 || EulaType offset | |||
|- | |||
| 0x14 || 0x4 || AgreeText offset | |||
|- | |||
| 0x18 || 0x4 || NonAgreeText offset | |||
|- | |||
| 0x1C || 0x4 || LanguageName offset | |||
|- | |||
| 0x20 || 0x4 || MainTitle offset | |||
|- | |||
| 0x24 || 0x4 || MainText offset | |||
|- | |||
| 0x28 || 0x4 || SubTitle offset | |||
|- | |||
| 0x2C || 0x4 || SubText offset | |||
|} | |||
<code>X offset</code> refers to an offset to a NULL-terminated ASCII string value for <code>X</code> within the full EULA data blob (see below). | |||
===EulaList=== | |||
This is the full data blob retrieved using [[ACTU:GetAsyncResult]]. | |||
Each EULA list entry is appended at the very end of the previous one. The end offset in the header can be used to get to subsequent EULA list entries. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x0 || 0x1 || u8, Number of EULA list entries (n) | |||
|- | |||
| 0x1 || n * (...) || concatenated EULA list entries | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset !! Size !! Description | |||
|- | |||
| 0x0 || 0x30 || [[ACT_Services#EulaHeader|EulaHeader]] | |||
|- | |||
| 0x30 || ... || EULA data | |||
|} | |||
|} | |} | ||