Changes

Jump to navigation Jump to search
4,404 bytes added ,  11:58, 18 November 2017
no edit summary
Line 1: Line 1: −
{{Stub}}
+
'''SpotPass''' is a Nintendo 3DS feature that allows the 3DS to automatically download content, notifications, and software when it's in standby mode.(SpotPass may download/upload some content while the 3DS is in "active" mode, but *only* if the currently active app uses SpotPass) SpotPass can upload content as well. Software downloaded with SpotPass is stored on SD card.
'''SpotPass''' is a Nintendo 3DS feature that allows the 3DS to automatically download content, notifications, and software when it's in standby mode. Software downloaded with SpotPass is stored on SD card.
     −
SpotPass Internet communications are mostly small UDP frames and HTTPS transfers, the only HTTP download is the connection test page.
+
SpotPass Internet communications are mostly HTTPS transfers.
   −
With the [[2.0.0-2]] update, SpotPass now regularly requests content over HTTPS from nppl.c.app.nintendowifi.net and sometimes nasc.nintendowifi.net. These are probably related to the automatic system updates/SpotPass automatic software download functionality. Going by the domain names, nppl* might be for SpotPass software downloads, while nasc* might be for auto updates?(Which domain is used for what exactly isn't confirmed yet)
+
In System Settings, you can disable SpotPass automatic title downloading, but it states that important software will still downloaded.(This only disables downloading of free titles via SpotPass)
In System Settings, you can disable SpotPass content downloading,(this is _only_ for free titles etc not auto system updates) but it states that important software will still downloaded. This is likely why SpotPass still connects to nppl* and nasc* even with that option disabled.
+
 
 +
'nasc.nintendowifi.net' confirmed usages:(not SpotPass related)
 +
 
 +
*Friends List applet requires this server to be 'Online' (most likely the reason for regular requests to this server)
 +
*Required for initialization of [[eShop]], (for first time eShop users). Not required for using eShop after first use.
 +
 
 +
In some cases the BOSS module will add the following URL parameter to HTTPS requests, when connected to a [[Nintendo Zone]] AP: "ap=<NZoneApNum>".
 +
 
 +
== policylist ==
 +
Every time the system connects to the wifi AP, the BOSS ("Background online storage service" = SpotPass) module itself will download the cleartext xml policylist: "https://nppl.c.app.nintendowifi.net/p01/policylist/3/<countrycode>". This policylist contains a list of SpotPass tasks for certain titles. This policylist can control whether the specified tasks are processed at all. The default user-agent used for SpotPass HTTPS requests(including this policylist) is: "PBOS-5.0/<printed hex u64 [[CfgS:GetLocalFriendCodeSeed|LocalFriendCodeSeed]]>-<hex u64 obtained via the friends service>/<text [[CVer|system]] [[NVer|version]]>/<unknown decimal value>/0". No user-agent is used for plaintext HTTP requests with SpotPass.
 +
 
 +
As of the policylist updated 2017-11-08, this stops the <tt>OlvNotf</tt> (Miiverse notification sync) task for <tt>000400300000bc00</tt>, <tt>000400300000bd00</tt>, <tt>000400300000be00</tt> for all regions and <tt>basho0</tt> for the [[Home Menu]]. Japan also has the <tt>9ER_NTD</tt> task blocked for いつの間にテレビ (<tt>0004000000034700</tt>).
 +
 
 +
== Titles Spotpass usage ==
 +
{| class="wikitable"
 +
|-
 +
! Title
 +
! Description
 +
|-
 +
| [[Home Menu]]
 +
| Home Menu uses SpotPass for system notifications, and for uploading data from home-menu shared extdata.
 +
|-
 +
| [[System Settings]]
 +
| System Settings uses SpotPass for uploading data, with this URL: https://npul.c.app.nintendowifi.net/p01/recv/<RegionID>/sendcfg This RegionID is separate from the RegionIDs home-menu uses.
 +
|-
 +
| ?
 +
| Unknown log data is uploaded with this URL: https://logus-p.est.c.app.nintendowifi.net/LogServer_us_live/Upload
 +
|}
 +
 
 +
== Automatic System Update Download ==
 +
See [[Automatic System Update Download]].
 +
 
 +
== Content Container ==
 +
 
 +
SpotPass content must use this container to encrypt the payload and sign it, for content downloads. The cleartext content is stored in [[extdata]]. The format of these headers is big-endian.
 +
 
 +
=== BOSS Header ===
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Length
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Magic Number "boss"
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Magic Number 0x10001
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Big-endian filesize
 +
|-
 +
| 0xC
 +
| 0x8
 +
| u64 release date (UNIX timestamp)
 +
|-
 +
| 0x14
 +
| 0x2
 +
| Must always be 0x1
 +
|-
 +
| 0x16
 +
| 0x2
 +
| Padding
 +
|-
 +
| 0x18
 +
| 0x2
 +
| Content header hash type, always 0x2 for SHA-256
 +
|-
 +
| 0x1A
 +
| 0x2
 +
| Content header RSA size, always 0x2 for RSA-2048 (X<<7)
 +
|-
 +
| 0x1C
 +
| 0xC
 +
| First 12 bytes of the CTR
 +
|}
 +
 
 +
Data following the BOSS header is encrypted with AES-CTR. The first 12 bytes of the CTR are from offset 0x1C of the header, while the last word of the CTR in big-endian is 0x1. The CTR from the header is random per file, and an unique random CTR is used each time the content is updated. The cleartext data begins with the content header.
 +
 
 +
=== Content Header ===
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Length
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x10
 +
| ?
 +
|-
 +
| 0x10
 +
| 0x2
 +
| Used for generating the extdata filepath.
 +
|-
 +
| 0x12
 +
| 0x20
 +
| SHA-256 hash
 +
|-
 +
| 0x32
 +
| 0x100
 +
| RSA-2048 signature over the above hash
 +
|}
 +
 
 +
The first 0x10-bytes are all-zero except the first byte which is usually 0x80. It's unknown what the first 0x10-bytes are used for.
 +
 
 +
The hash at offset 0x12 hashes the 0x12-byte data at offset 0x0 followed by a zero u16. The RSA signature is signed by Nintendo. Following this header is the actual content payload, which is written to a cleartext file under the [[extdata]] /boss directory. The data following the payload header is written to extdata, but it's unknown what data is written to the extdata file before the content payload.
 +
 
 +
=== Payload Content Header ===
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Length
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| ProgramID
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Usually zero?
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Content datatype, used for filtering with [[BOSSU:GetNsDataIdList]].
 +
Usually 0x10001? (observed 0x20001 in eShop strings)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| Size of the payload after this header
 +
|-
 +
| 0x14
 +
| 0x4
 +
| [[BOSS_Services|NsDataId]], used for generating the extdata filepath.
 +
|-
 +
| 0x18
 +
| 0x4
 +
| ?
 +
|-
 +
| 0x1C
 +
| 0x20
 +
| SHA-256 hash
 +
|-
 +
| 0x3C
 +
| 0x100
 +
| RSA-2048 signature over the previous SHA-256 hash
 +
|}
 +
 
 +
This signature is signed by Nintendo with the same key-pair as the content header.
 +
 
 +
The hash at offset 0x1C hashes the 0x1C-byte data at offset 0x0 followed by a zero u16, followed by all of the remaining cleartext data following this header(the actual content data).
    
[[Category:Nintendo Software]]
 
[[Category:Nintendo Software]]
149

edits

Navigation menu