单卡联机

From 3dbrew
Jump to: navigation, search

译自Download_Play

3DS dlplay有两个dlplay模式:3DS​​和DS。DS dlplay是只是普通的dsmode dlplay,使用了和从前同的接口和协议。 与DS游戏卡相同,进入dsmode dlplay应用时按住start +select,3DS会禁用拉伸屏幕。

Download Play 协议[edit]

3DS的Download Play 协议与 DS Wireless Multiboot (WMB) 协议完全不同。DS WMB协议用于无线以纯文本形式发送程序代码,而3DS的 download play协议使用WPA2加密的128位AES CTR广播应用程序。

广播的信标(beacons)有 以0.102400 / s的速度广播的静态的任天堂标签数据 和 WPA2广播的数据帧,他们的大小不尽相同。 客户端向主机请求身份验证,主机发送连接响应,响应包含了一个随机的ASCII十六进制SSID (如“E​​B6FAB77”)。 之后使用WPA2加密的数据帧进行系统的通讯和传输的二进制文件。

这是从猴子球3D(vendor 001f32)导出的一个任天堂标签。数据中包含的vendor tag数据是加密的:

000: 18 05 9f ae 17 c8 a5 1d 0b 81 28 be 74 0f d4 af
010: 97 30 04 60 fd 2d f3 d9 8d bc 22 80 51 60 3c 75
020: d9 89 6d 16 c4 f3 aa 89 26 d4 14 25 67 75 8e 4b
030: 3c 97 85 c9 83 15 d4 96 06 b1 29 b6 f5 51 57 71 
040: cc b6 1f 4a c8 bd 4f c0 57 43 cb ab fa 37 74 b0
050: 64 6b 87 69 a1 de a4 05 7c 7c 49 5d f5 21 25 83
060: 4c f2 d0 70 38 14 7b 0f f4 97 f7 ff f3 ff 36 cd
070: c2 e2 c0 78 98 d1 d5 4d 3d d4 9b 57 84 6c e2 4f
080: 25 f2 56 c4 19 88 64 13 78 68 e2

WPA2密钥[edit]

用于引导单卡联机的可执行通信有一个单独的WPA2密钥,它是由 NWM 模块生成的一个随机的十六进制字符串。

广播应用数据[edit]

Download Play协议以CIA 格式广播3DS应用数据, 包含certificate chain, ticket, TMD各一,以及CXI format格式封装的应用本体。广播的归档数据临时存储在内部的NAND Flash直至其他游戏通过Download Play协议占用此空间。

CXI 应用数据使用了128-bit AES CBC加密. ticket中有加密的titlekey , 和titleID补零构成的IV。为了得到解密的titlekey,ticket中存储的titlekey必须使用128位AES-CBC的3DS公钥解密,以及前面提到的IV。

所以,事实上通过无线传输的3DS的应用程序,经过了3次加密:

  • 第一次使用128位AES CTR加密的CXI格式的ExeFS
  • 第二次使用128位AES CBC加密的归档数据
  • 第三次使用128位AES的WPA2加密CTR。

远程分布式系统更新[edit]

作为分布式系统的一部分,一台3DS扮演了本地Download Play服务器的角色,可以给作为客户端的机器发送固件更新。首先发送系统升级包,然后给客户端发送指令安装升级包并重启。 在比如远程连接时 (缓存临时信息),如果在发现运行分布式子应用(比如多人游戏)必须进行系统更新,就像升级CTR卡的分区一样, 这不是一个“自动功能”,并没有在所有的Download Play titles中实现。