Changes

Jump to navigation Jump to search
3,808 bytes added ,  22:43, 15 June 2019
=nim=This is "nn::nim::detail::INetworkInstallManager". {| class="wikitable" border="1"|-! Cmd || Name|-| 0 || CreateSystemUpdateTask|-| 1 || [[#DestroySystemUpdateTask]]|-| 2 || [[#ListSystemUpdateTask]]|-| 3 || RequestSystemUpdateTaskRun|-| 4 || [[#GetSystemUpdateTaskInfo]]|-| 5 || [[#CommitSystemUpdateTask]]|-| 6 || CreateNetworkInstallTask|-| 7 || DestroyNetworkInstallTask|-| 8 || ListNetworkInstallTask|-| 9 || RequestNetworkInstallTaskRun|-| 10 || GetNetworkInstallTaskInfo|-| 11 || CommitNetworkInstallTask|-| 12 || RequestLatestSystemUpdateMeta|-| 14 || ListApplicationNetworkInstallTask|-| 15 || ListNetworkInstallTaskContentMeta|-| 16 || RequestLatestVersion|-| 17 || SetNetworkInstallTaskAttribute|-| 18 || AddNetworkInstallTaskContentMeta|-| 19 || [[#GetDownloadedSystemDataPath]]|-| 20 || CalculateNetworkInstallTaskRequiredSize|-| 21 || [[#IsExFatDriverIncluded]]|-| 22 || GetBackgroundDownloadStressTaskInfo|-| 23 || [2.0.0+] RequestDeviceAuthenticationToken|-| 24 || [2.0.0+] RequestGameCardRegistrationStatus|-| 25 || [2.0.0+] RequestRegisterGameCard|-| 26 || [2.0.0+] RequestRegisterNotificationToken|-| 27 || [2.0.0+] RequestDownloadTaskList|-| 28 || [2.0.0+] RequestApplicationControl|-| 29 || [2.0.0+] RequestLatestApplicationControl|-| 30 || [2.0.0+] RequestVersionList|-| 31 || [2.0.0+] CreateApplyDeltaTask|-| 32 || [2.0.0+] DestroyApplyDeltaTask|-| 33 || [2.0.0+] ListApplicationApplyDeltaTask|-| 34 || [2.0.0+] RequestApplyDeltaTaskRun|-| 35 || [2.0.0+] GetApplyDeltaTaskInfo|-| 36 || [2.0.0+] ListApplyDeltaTask|-| 37 || [2.0.0+] CommitApplyDeltaTask|-| 38 || [2.0.0+] CalculateApplyDeltaTaskRequiredSize|-| 39 || [2.0.0+] PrepareShutdown|-| 40 || [2.0.0+] ListApplyDeltaTask2|-| 41 || [2.0.0+] ClearNotEnoughSpaceStateOfApplyDeltaTask|-| 42 || [3.0.0+]|-| 43 || [3.0.0+]|-| 44 || [3.0.0+]|-| 45 || [3.0.0+]|-| 46 || [3.0.0+]|-| 47 || [4.0.0+]|-| 48 || [4.0.0+]|-| 49 || [4.0.0+]|-| 50 || [4.0.0+]|-| 51 || [4.0.0+]|-| 52 || [4.0.0+]|-| 53 || [4.0.0+]|-| 54 || [4.0.0+]|-| 55 || [4.0.0+]|-| 56 || [4.0.0+]|-| 57 || [4.0.0+]|-| 58 || [4.0.0+]|-| 59 || [4.0.0+]|-| 60 || [4.0.0+]|-| 61 || [4.0.0+]|-| 62 || [4.0.0+]|-| 63 || [4.0.0+]|-| 64 || [4.0.0+]|-| 65 || [4.0.0+]|-| 66 || [4.0.0+]|-| 67 || [4.0.0+]|-| 68 || [4.0.0+]|-| 69 || [4.0.0+]|-| 70 || [4.0.0+]|-| 71 || [4.0.0+]|-| 72 || [4.0.0+]|-| 73 || [4.0.0+]|-| 74 || [4.0.0+]|-| 75 || [4.0.0+]|-| 76 || [4.0.0+]|-| 77 || [4.0.0+]|-| 78 || [4.0.0+]|-| 79 || [4.0.0+]|-| 80 || [4.0.0+]|-| 81 || [4.0.0+]|-| 82 || [4.0.0+]|-| 83 || [4.0.0+]|-| 84 || [5.0.0+]|-| 85 || [5.0.0+]|-| 86 || [5.0.0+]|-| 87 || [6.0.0+]|-| 88 || [6.0.0+]|-| 89 || [6.0.0+]|-| 90 || [6.0.0+]|-| 91 || [6.0.0+]|-| 92 || [6.0.0+]|-| 93 || [6.0.0+]|-| 94 || [6.0.0+]|-| 95 || [6.0.0+]|-| 96 || [6.0.0+]|-| 97 || [6.0.0+]|-| 98 || [6.0.0+]|-| 99 || [7.0.0+]|} [3.0.0+] GetSystemUpdateTaskInfo now returns an additional 0x10-bytes of output. GetNetworkInstallTaskInfo now returns an additional 0x18-bytes of output. GetApplyDeltaTaskInfo now returns an additional 0x10-bytes of output. [5.0.0+] GetSystemUpdateTaskInfo now returns an additional 8-bytes of output. RequestGameCardRegistrationStatus/RequestRegisterGameCard removed 8-bytes of input, and now takes an additional type-0x5 input buffer. [8.0.0+] Cmd76 now takes an additional 0x8-bytes of input. == DestroySystemUpdateTask ==Takes an input [[#SystemUpdateTask]], no output. == ListSystemUpdateTask ==Takes a type-0x6 output buffer, for an array of [[#SystemUpdateTask]]. Returns an u32 for total output entries. == GetSystemUpdateTaskInfo ==Takes an input [[#SystemUpdateTask]], returns an output [[#SystemUpdateTaskInfo]]. == CommitSystemUpdateTask ==Takes an input [[#SystemUpdateTask]], no output. == GetDownloadedSystemDataPath ==Takes an input u64 titleID, a [[#SystemUpdateTask]], and an type-0x16 output buffer containing the [[Filesystem_services|ContentPath]]. Gets the FS ContentPath for the specified task and title. == IsExFatDriverIncluded ==Takes an input [[#SystemUpdateTask]], returns an output u8 bool flag. == SystemUpdateTask ==This is a 0x10-byte struct. == SystemUpdateTaskInfo ==This is a 0x28-byte struct. = nim:shp =This is "nn::nim::detail::IShopServiceManager". {| class="wikitable" border="1"|-! Cmd || Name|-| 0 || RequestDeviceAuthenticationToken|-| 1 || [3.0.0+] RequestCachedDeviceAuthenticationToken|-| 100 || RequestRegisterDeviceAccount|-| 101 || RequestUnregisterDeviceAccount|-| 102 || RequestDeviceAccountStatus|-| 103 || GetDeviceAccountInfo|-| 104 || RequestDeviceRegistrationInfo|-| 105 || RequestTransferDeviceAccount|-| 106 || [3.0.0+] RequestSyncRegistration|-| 107 || [3.0.0+] IsOwnDeviceId|-| 200 || RequestRegisterNotificationToken|-| 300 || RequestUnlinkDevice|-| 301 || RequestUnlinkDeviceIntegrated|-| 302 || RequestLinkDevice|-| 303 || HasDeviceLink|-| 304 || [4.0.0+] RequestUnlinkDeviceAll|-| 305 || [4.0.0+] RequestCreateVirtualAccount|-| 306 || [4.0.0+] RequestDeviceLinkStatus|-| 400 || GetAccountByVirtualAccount|-| 401 || [6.0.0+]|-| 500 || RequestSyncTicket|-| 501 || RequestDownloadTicket|-| 502 || [4.0.0+] RequestDownloadTicketForPrepurchasedContents. [6.0.0+]: Now takes an additional 4-bytes of input.|} = nim:eca =This is "nn::nim::detail::IShopServiceAccessServerInterface". This was added with [5.0.0+]. 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 || CreateServerInterface|-| 1 || [6.0.0+] RefreshDebugAvailability|-| 2 || [6.0.0+] ClearDebugResponse|-| 3 || [6.0.0+] RegisterDebugResponse|} == IShopServiceAccessServer ==This is "nn::nim::detail::IShopServiceAccessServer". This was added with [5.0.0+]. {| class="wikitable" border="1 "|-! Cmd || Name
|-
| 2 0 || CreateAccessorInterface
|}
==Cmd1=IShopServiceAccessor ===This is "nn::nim::detail::IShopServiceAccessor". Takes a 0x10This was added with [5.0.0+]. {| class="wikitable" border="1"|-byte input struct, from the output of cmd2.! Cmd || Name|-| 0 || CreateAsyncInterface|}
==Cmd2== IShopServiceAsync ====Takes a type-0x6 output buffer, for an array of 0x10-byte entries. Returns an u32 for total output entriesThis is "nn::nim::detail::IShopServiceAsync".
Doesn't return anything on a v2This was added with [5.1 system where sysupdate domains are blocked0.0+].
{| class=nim:shp"wikitable" border="1"|-! Cmd || Name|-| 0 || Cancel|-| 1 || GetSize|-| 2 || Read|-| 3 || GetErrorCode|-| 4 || Request|-| 5 || Prepare|}
=ntcnim:ecas =This is "nn::nim::detail::IShopServiceAccessSystemInterface".
Presumably Network Time Sync?This was added with [7.0.0+].
{| class=Network=* <nowiki>https://sun.hac.%%.d4c.nintendo.net/v1/system_update_meta?device_id=%016llx</nowiki>* <nowiki>https://aqua.hac.%%.d4c.nintendo.net/required_system_update_meta?device_id=%016llx</nowiki>* <nowiki>https://%s.hac.%%.d4c.nintendo.net/t/%c/%016llx/%u?device_id=%016llx</nowiki> Returns content like the below URL. This is the content for [[NCA]]-type0. See below for %c. %016llx is titleID, %u is title-version.* <nowiki>https://%s.hac.%%.d4c.nintendo.net/c/%c/%s</nowiki> Used for downloading content. First %s is atumn or atum. %c is one of: 'c', 'a', or 's'. %s is just the hex-string NcaId. The server also returns two HTTP headers: "X-Nintendo-Content-Hash: {entire lowercase hex-string of the content SHA256 hash}wikitable" and border="X-Nintendo-Content-ID: {lowercase hex-string for NcaId}1"* <nowiki>https://superfly.hac.%%.d4c.nintendo.net/v1/t/%016llx/dv</nowiki> %016llx is titleID, only for eShop titles it appears. Returns .json title|-info.* <nowiki>https://superfly.hac.%%.d4c.nintendo.net/v1/a/%016llx/dv</nowiki> %016llx is titleID, only for eShop titles it appears. Output is similar to above URL.! Cmd || Name* <nowiki>https://aauth|-%.ndas.srv.nintendo.net/v1/time</nowiki>* ...| 0 || RegisterSpecialClient* <nowiki>"https://dauth|-%.ndas.srv.nintendo.net/v1/device_auth_token"</nowiki> CURLOPT_POSTFIELDS is set to the output from: snprintf(..., "system_version=%08x&client_id=%s", <output parsed from a func>, "<hard-coded hex string>");| 1 || UnregisterSpecialClient|}
These are not accessible without the required TLS client cert+privk, minus the time URL which can be accessed without any client cert+privk at all= ntc =This is "nn::ntc::detail::service::IStaticService".
The returned content data from CDN, for both system{| class="wikitable" border="1"|-titles and eShop! Cmd || Name|-titles, is identical to the data readable by | 0 || OpenEnsureNetworkClockAvailabilityService|-| 100 || [3.0.0+] SuspendAutonomicTimeCorrection|-| 101 || [Content_Manager_services#ReadEntryRaw]3.0.0+].ResumeAutonomicTimeCorrection|}
While atumn seems to be for systemNetwork-titles, and atum for eShop titles, time-sync uses the latter titles are accessible fine with atumn(with "<...>/t/time" for NCA-type0 at least)HTTPS URL listed in the below Network section. This just returns an UTC Unix time string.
'a' is used when an input u8 is not 0x3, otherwise 's' is used. == IEnsureNetworkClockAvailabilityService ==This is [[Content_Manager_services#Title_Types|title-type]]? A seperate function using the ".../c/nn::ntc::detail::service::IEnsureNetworkClockAvailabilityService" URL is hard-coded to use 'c'. This appears to match 's' usage attempts: the only URL that returned actual data with 's' was with titleID 0100000000000816.
As of June 30, 2017, accessing old content via the atumn {| class="/c/wikitable" and border="/t/1" URLs works fine|-! Cmd || Name|-| 0 || StartTask|-| 1 || GetFinishNotificationEvent|-| 2 || GetResult|-| 3 || Cancel|-| 4 || IsProcessing|-| 5 || [3.0.0+] GetServerTime|}
Going by strings in NIM, it appears SOAP isn't used anymore= IAsyncValue =This is "nn::nim::detail::IAsyncValue". ecs appears to use REST API?
{| class="wikitable" border= User"1"|-Agent ==NIM generates two User! Cmd || Name|-Agent strings: snprintf(..., "User| 0 || |-Agent: NintendoSDK Firmware/%s| 1 || |-%u (platform:%s; did:%016llx; eid:%s)", <string at [[System_Version_Title| 2 |sysver]]+0x68>, {u32 from [[System_Version_Title|sysver]]+4}, "NX", DeviceId, {[[NSD_services|NSD]] cmd11 output});- snprintf(| 3 || [4.0.., "User-Agent: NintendoSDK Firmware/%s-%u (platform:%s; eid:%s)", <string at [[System_Version_Title|sysver]]0+0x68>, {u32 from [[System_Version_Title|sysver]]+4}, "NX", DeviceId, {[[NSD_services|NSD]] cmd11 output});
Where the 64bit DeviceId = IAsyncResult =This is parsed from the 0x10-bytes at outbuf+0xC6 from [[Settings_services|set"nn:cal]] GetDeviceCert(DeviceCert_certname+2, aka where the hex string for the DeviceId is):nim::detail::IAsyncResult".
{| class="wikitable" border= sun =="1"NIM sends a HTTP GET with the sun URL listed above to get the title|-listing of the latest system! Cmd || Name|-titles, as .json. The deviceid in the URL is the same one in the above User| 0 || |-| 1 || |-Agent section| 2 || [4. HTTP header "Accept:application/json" is sent in the request0.0+]|}
The response = IAsyncProgressResult =This is json with a "system_update_metasnn::nim::detail::IAsyncProgressResult" block, containing "title_id" and "title_version" entries. The actual server response only contains 1 title.
Example, from {| class="wikitable" border="1"|-! Cmd || Name|-| 0 || |-| 1 || |-| 2|| |-| 3 || [4.0.0 system:+]|}
<code>{"timestamp= IAsyncData =This is "nn::nim::REDACTED-TIMESTSAMP,"system_update_metas"detail:[{"title_id":IAsyncData"0100000000000816","title_version":201327002}]}</code>.
{| class="wikitable" border= aqua =="1"|-! Cmd || Name|-| 0 || |-| 1 || |-| 2 || |-| 3 || |-| 4 || |-| 5 || [4.0.0+]The following response is json from accessing the above aqua URL:|}
<code>{"contents_delivery_required_title_id"[[Category: "0100000000000816","contents_delivery_required_title_version": 0}</code>Services]]

Navigation menu