Changes

5,088 bytes added ,  09:19, 1 February 2014
fix
N3DS的NAND闪存芯片容量为1GB。3DS使用了容量为1GB的一片NAND闪存芯片。从NCSD的头部来看,NAND实际使用的大小为0x3AF00000.
=== 格式 ===
任天堂3DS的闪存文件格式目前尚未公开,闪存芯片可以通过主板上的输出针脚进行内容提取,这已经成功了。然而提取出来的数据被加密了,不解密无法理解。 ===文件系统=== 每个NAND分区皆为FAT文件系统。通过主板上的输出针脚提取闪存芯片内容是可行的,并且已经取得成功。但由于数据是加密过的,不经解密无法理解。
===加密===
NAND文件系统使用[[AES|AES-CTR]]加密。NAND中TWL region使用TWL NAND的[[AES|keyslot]],而CTR region使用CTR NAND的[[AES|keyslots]]。CTR NAND分区的 keyslot 是由NCSD分区的磁盘文件系统类型所决定的。每个分区表的NCSD分区加密标志位(TWL keyslot 或 CTR keyslots)这样表示: 0x01=TWL, 0x02=CTR。TWL/CTR NAND region在NCSD头部指定。NAND的前 0x0B100000 byte使用TWL keyslot加密,在0x00012E00之前则只有MBR分区表使用TWL keyslot(那个region包括下表所示的TWL分区)。
NAND文件系统似乎采用AES进行加密。 ===分区===切记,一台3DS重加密的NAND镜像,不能直接给另一台3DS使用,“NAND”分区的某些文件也需要修改/更换。
===NAND结构===
{| class="wikitable" border="1"
|-
! 名称分区名! 偏移! 长度! NCSD分区文件系统类型! NCSD分区索引(index)
! 注释
|-
|
| 0x0
| 0x200
|
|
| NCSD头, 包括了后续CTR-NAND的偏移/大小信息. 这个块也包含了 TWL-NAND MBR分区表.
|-
|
| 0x00000000
| 0x0B100000
| 0x1
| 0x00
| TWL NAND region
|-
| twln
| 0x00012E00
| 0x08FB5200
|
|
| TWL-NAND FAT16. (DSi)
|-
| twlp
| 0x09011A00
| 0x020B6600
|
|
| TWL-NAND PHOTO FAT12. (DSi)
|-
|
| 0x0B100000
| 0x00030000
| 0x04
| 0x01
| 默认为全空填充此分区(只有 0x00/0xFF byte,并且从不写入). AGB_FIRM was never launched. 包含 AGB_FIRM GBA游戏.
|-
| firm0
| 固件分区0x0B130000| 0x00400000| 0x03| 0x02| [[FIRM|Firmware]] 分区.
|-
| firm1
| 固件分区 0x0B530000| 0x00400000| 0x03| 0x03| [[FIRM|Firmware]] 分区.(备份分区, 同上)|-| | 0x0B930000| 0x2F5D0000| 0x01| 0x04| CTR-NAND partition. (3DS)
|-
| nand
| CTR-NAND文件系统。(N3DS)0x0B95CA00|- 0x2F3E3600| twln| | TWLCTR-NAND文件系统,(NDSi)NAND FAT16文件系统.
|}
3DS中NAND TWL FAT分区的卷标为"TWL",CTR FAT分区为"CTR"。TWL分区的偏移和大小存储在MBR分区表中,而CTR分区表信息存在NAND NCSD头部。CTR-NAND分区的0扇面包含一个TWL-NAND分区的MBR分区表,而MBR的签名在+0x1fe位置。 NAND扇面未被写入前,只包含明文的0x00或0xFF byte. 除TWLP,以上NAND物理分区均不能使用ARM11直接读取。CTR/TWL NAND文件系统只能当exheader访问控制描述符启用时候访问。对于零售版机器中的[[NCCH#CXI|CXI]]进程,CTR/TWL的NAND描述符一般都是未启用的状态。ARM11只能将"nand:/rw/"挂载为"nandrw"的[[FS:OpenArchive|档案]],而"nand:/ro/"则挂载为如下的nandro档案。 =CTR=== 0x4000 ====某些3DS系统(比如3DS XL),有一个明文的FAT16引导记录在NAND偏移的0x4000位置。这个块在launch-NAND文件分区day 3DS的系统里是不存在的。在这个“分区”内只有明文的块。 =CTR分区=* [[nand/title]]的结构似乎和[[SD Filesystem|SD卡系统]]的完全相似,除了存档保存在[[System SaveData|nand/data/<ID0>/sysdata]]目录。 在[[nand/data]]之下的子目录名是[[nand/private/movable.sed|movable.sed]]的SHA256散列。这个NAND的nand/data/<ID0>目录和"sdmc/Nintendo 3DS/<ID0>/<ID1>",只是里面的数据是明文。movable.sed keyY只用于nand/data/<ID0>的AES MACs(AES加密+MAC绑定?)。nand/data/<ID0>/extdata保存的是公用的[[extdata]],结构和SD卡的extdata完全一致。 "nandrw"[[FS:OpenArchive|归档]]会挂载到"nand:/rw/",而"nandro"归档会挂载到"nand:/ro/"。   nandro ├── [[nandro/private|private]]* ├── [[nandro/shared|shared]]* └── [[nandro/sys|sys]]* ├── [[nandro/sys/HWCAL0.dat|HWCAL0.dat]]* └── [[nandro/sys/HWCAL1.dat|HWCAL1.dat]] nandrw ├── [[nandrw/shared|shared]] └── [[nandrw/sys|sys]] ├── [[nandrw/sys/lgy.log|lgy.log]] (发生错误时由[[FIRM|TWL_FIRM]]记录,是与native.log等效的) ├── [[nandrw/sys/LocalFriendCodeSeed_B|LocalFriendCodeSeed_B]] ├── [[nandrw/sys/native.log|native.log]] (This is written to by [[ErrDisp]]) ├── [[nandrw/sys/rand_seed|rand_seed]] ├── [[nandrw/sys/SecureInfo_A|SecureInfo_A]] └── [[nandrw/sys/updater.log|updater.log]]   nand ├── __journal.nn_ ├── [[nand/data|data]] │ └── <ID0> │ ├── [[Extdata|extdata]] │ └── [[System SaveData|sysdata]] ├── [[Title Database|dbs]] ├── [[nand/fixdata|fixdata]] │ └── [[nand/fixdata/sysdata|sysdata]] ├── private │ └── [[nand/private/movable.sed|movable.sed]] ├── [[nand/ro|ro]] ├── [[nand/rw|rw]] ├── [[nand/ticket|ticket]] (自ticket存放到[[Title Database|ticket.db]]后,这个目录就是空的了) ├── [[Title Data Structure|title]] └── [[nand/tmp|tmp]] (这个通常是空的, even when installation for a system update still needs [[AMNet:FinishInstallToMedia|finalized]])  =TWL分区=TWL分区的结构和DSi的几乎一样,除了Tickets存在CTR的FAT文件系统。TWLP分区则是和DSi完全一致。 [[twln/title]]的结构和CTR的NAND/SD一致,除了.cmd是明文(好像是虚假文件)。在系统Title的/title目录下的data目录并不存在,似乎只有DSiWare的才有。 在[[twln/title]]下名为titleID-High的目录是DSi的。  twln ├── [[twln/import/|import]] ├── [[twln/shared1/|shared1]] ├── [[twln/shared2/|shared2]] │ └── [[twln/shared2/0000|0000]] ├── [[twln/sys|sys]] │ ├── [[twln/sys/TWLFontTable.dat|TWLFontTable.dat]] │ └── [[twln/sys/log/|log]] │ ├── [[twln/sys/log/inspect.log|inspect.log]] │ └── [[twln/sys/log/product.log|product.log]] ├── [[twln/ticket/|ticket]] ├── [[twln/title/|title]] └── [[twln/tmp/|tmp]]
* [[nandrw/shared]]* [[nandrw/sys]]* [[nandrw/sys/updater.log]]* [[nandrw/sys/native.log]]* [[nandrw/sys/SecureInfo_A]]* [[nandrw/sys/rand_seed]] twlp* └── [[nandrwtwlp/sysphoto/LocalFriendCodeSeed_B|photo]]
155

edits