Difference between revisions of "闪存文件系统"
m (update to follow english one) |
m (update to follow english one) |
||
Line 58: | Line 58: | ||
以上除过TWLP,没有一个NAND物理分区可以使用ARM11直接读取。CTR/TWL的NAND文件系统只能当exheader访问控制描述符启用时候访问。对于零售版机器中的[[NCCH#CXI|CXI]]进程,CTR/TWL的NAND描述符一般都是未启用的状态。ARM11只能将"nand:/rw/"挂载为"nandrw"的[[FS:OpenArchive|归档]],而"nand:/ro/"则挂载为如下的nandro归档。 | 以上除过TWLP,没有一个NAND物理分区可以使用ARM11直接读取。CTR/TWL的NAND文件系统只能当exheader访问控制描述符启用时候访问。对于零售版机器中的[[NCCH#CXI|CXI]]进程,CTR/TWL的NAND描述符一般都是未启用的状态。ARM11只能将"nand:/rw/"挂载为"nandrw"的[[FS:OpenArchive|归档]],而"nand:/ro/"则挂载为如下的nandro归档。 | ||
− | = | + | =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/LocalFriendCodeSeed_B|LocalFriendCodeSeed_B]] | ||
+ | ├── [[nandrw/sys/native.log|native.log]] | ||
+ | ├── [[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]] (NAND存档存在本目录下的"<SaveID-Low>/<SaveID-High>",<SaveID-High>的"High"是文件名) | ||
+ | ├── [[Title Database|dbs]] | ||
+ | ├── private | ||
+ | │ └── [[nand/private/movable.sed|movable.sed]] | ||
+ | ├── [[nand/ro|ro]] | ||
+ | ├── [[nand/rw|rw]] | ||
+ | ├── [[nand/ticket|ticket]] | ||
+ | ├── [[Title Data Structure|title]] | ||
+ | └── [[nand/tmp|tmp]] | ||
+ | |||
+ | =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/log/|log]] | ||
+ | │ ├── [[twln/log/inspect.log|inspect.log]] | ||
+ | │ └── [[twln/log/product.log|product.log]] | ||
+ | ├── [[twln/shared1/|shared1]] | ||
+ | ├── [[twln/shared2/|shared2]] | ||
+ | │ └── [[twln/shared2/0000|0000]] | ||
+ | ├── [[twln/sys|sys]] | ||
+ | │ └── [[twln/sys/TWLFontTable.dat|TWLFontTable.dat]] | ||
+ | ├── [[twln/ticket/|ticket]] | ||
+ | ├── [[twln/title/|title]] | ||
+ | └── [[twln/tmp/|tmp]] | ||
+ | |||
+ | twlp | ||
+ | └── [[twlp/photo/|photo]] |
Revision as of 13:14, 1 April 2013
N3DS的NAND闪存芯片容量为1GB。
格式
任天堂3DS的闪存文件格式目前尚未公开,闪存芯片可以通过主板上的输出针脚进行内容提取,这已经成功了。然而提取出来的数据被加密了,不解密无法理解。
文件系统
每个NAND分区皆为FAT文件系统。
加密
NAND文件系统使用AES-CTR加密。NAND中TWL区域使用TWL的NAND密码键,而CTR区域使用CTR的NAND密码键。用于CTR-NAND扇区的密码键是由NCSD扇区的文件系统类型决定的。TWL/CTR的NAND区域在NCSD头中指定。NAND的最开始0x0B100000字节使用TWL密码键,在0x00012E00之前则只有MBR分区表使用TWL密码键(那个区域包括如下所示的TWL扇区)。
分区
名称 | 偏移 | 长度 | 注释 |
---|---|---|---|
twln | 0x00012E00 | 0x08FB5200 | TWL-NAND的FAT16文件系统(DSi) |
twlp | 0x09011A00 | 0x020B6600 | TWL-NAND照片的FAT12文件系统(DSi) |
0x0B100000 | 0x00030000 | 一般在这段全部是零 | |
firm0 | 0x0B130000 | 0x00400000 | 固件分区 |
firm1 | 0x0B530000 | 0x00400000 | 固件分区(是备份,和上面一样) |
0x0B930000 | 0x2F5D0000 | CTR-NAND分区(3DS) | |
nand | 0x0B95CA00 | 0x2F3E3600 | CTR-NAND的FAT16文件系统 |
3DS中NAND的TWL的FAT分区FAT卷标名"TWL",而CTR的FAT分区则是"CTR"。TWL分区的偏移和长度存在MBR分区表,而CTR分区表信息存在NAND的NCSD头。CTR-NAND分区的扇面0有一个MBR分区表,而MBR的签名在+0x1fe位置。在这个分区表中只有一个分区就是CTR-NAND的FAT16分区。
以上除过TWLP,没有一个NAND物理分区可以使用ARM11直接读取。CTR/TWL的NAND文件系统只能当exheader访问控制描述符启用时候访问。对于零售版机器中的CXI进程,CTR/TWL的NAND描述符一般都是未启用的状态。ARM11只能将"nand:/rw/"挂载为"nandrw"的归档,而"nand:/ro/"则挂载为如下的nandro归档。
CTR分区
nand/title的结构似乎和SD卡系统的完全相似,除了存档保存在nand/data/<ID0>/sysdata目录。
在nand/data之下的子目录名是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"归档会挂载到"nand:/rw/",而"nandro"归档会挂载到"nand:/ro/"。
nandro ├── private ├── shared └── sys ├── HWCAL0.dat └── HWCAL1.dat nandrw ├── shared └── sys ├── LocalFriendCodeSeed_B ├── native.log ├── rand_seed ├── SecureInfo_A └── updater.log
nand ├── __journal.nn_ ├── data │ └── <ID0> │ ├── extdata │ └── sysdata (NAND存档存在本目录下的"<SaveID-Low>/<SaveID-High>",<SaveID-High>的"High"是文件名) ├── dbs ├── private │ └── movable.sed ├── ro ├── rw ├── ticket ├── title └── tmp
TWL分区
TWL分区的结构和DSi的几乎一样,除了Tickets存在CTR的FAT文件系统。TWLP分区则是和DSi完全一致。
twln/title的结构和CTR的NAND/SD一致,除了.cmd是明文(好像是虚假文件)。在系统Title的/title目录下的data目录并不存在,似乎只有DSiWare的才有。
在twln/title下名为titleID-High的目录是DSi的。
twln ├── import ├── log │ ├── inspect.log │ └── product.log ├── shared1 ├── shared2 │ └── 0000 ├── sys │ └── TWLFontTable.dat ├── ticket ├── title └── tmp
twlp └── photo