Changes

Jump to navigation Jump to search
1,454 bytes removed ,  03:25, 31 May 2019
→‎Title Info Entry: 0x350 appears here, not 0x530
Line 4: Line 4:  
* sdmc/Nintendo 3DS/<ID0>/<ID1>/dbs
 
* sdmc/Nintendo 3DS/<ID0>/<ID1>/dbs
   −
ID0 is the first 0x10-bytes from a SHA256 [[nand/private/movable.sed|hash]]. The installation of [[SD Filesystem|SD Card]] titles was introduced in the [[2.0.0-2]] update and the SD dbs files are encrypted. These files are [[extdata]] images. The NAND extdata images are cleartext, however some of the images contain data encrypted with a console-unique keyslot.
+
ID0 is the first 0x10-bytes from a SHA256 [[nand/private/movable.sed|hash]]. The installation of [[SD Filesystem|SD Card]] titles was introduced in the [[2.0.0-2]] update and the SD dbs files are encrypted by [[SD Filesystem|the general SD filesystem encryption rule]]. These files are [[DISA and DIFF|DIFF containers]]. These DIFF files do not use external IVFC level 4, so all database data is duplicated in the container. In this page only the inner content of the container is described.
   −
These files are only created on SD(via [[Application_Manager_Services|AM]]) if they don't exist when the [[eShop]] application is starting up, during network init etc(prior to showing the "system update required" dialog).
+
These files are only created on SD (via [[Application_Manager_Services|AM]]) if they don't exist when the [[eShop]] application is starting up, during network init etc (prior to showing the "system update required" dialog).
    
These files are stored under this directory:
 
These files are stored under this directory:
Line 14: Line 14:  
!  Stored in CTR-NAND
 
!  Stored in CTR-NAND
 
!  Filename
 
!  Filename
!  [[Savegames#AES_MAC_header|CTR-9DB0]] ID
+
!  [[DISA and DIFF#CTR-9DB0|CTR-9DB0]] ID
 
!  Description
 
!  Description
 
|-
 
|-
Line 21: Line 21:  
| ticket.db
 
| ticket.db
 
| 0x0
 
| 0x0
| This contains the installed tickets(NAND and SD).
+
| This contains the installed tickets (NAND and SD).
 
|-
 
|-
 
| No
 
| No
Line 33: Line 33:  
| title.db
 
| title.db
 
| 0x2
 
| 0x2
| Title database, this contains entries for all installed titles (TWL & CTR) on the 3DS(Each database is responsible for titles installed on its medium).
+
| Title database, this contains entries for all installed titles (TWL & CTR) on the 3DS (Each database is responsible for titles installed on its medium).
 
|-
 
|-
 
| Yes
 
| Yes
Line 39: Line 39:  
| import.db
 
| import.db
 
| 0x3
 
| 0x3
| This is an Import Database, it contains entries for titles(or versions of titles) not yet installed, ready for transferring to the title.db. (Automatic Update uses this, so completing the update takes seconds)
+
| This is an Import Database, it contains entries for titles (or versions of titles) not yet installed, ready for transferring to the title.db. (Automatic Update uses this, so completing the update takes seconds.)
 
|-
 
|-
 
| No
 
| No
Line 54: Line 54:  
|}
 
|}
   −
The SD dbs images use the same [[nand/private/movable.sed|keyslot]] as the other SD/NAND savedata images for the AES-MAC. The NAND dbs images for the AES-MAC use a console-unique keyslot where the keyX and keyY for it are initialized by bootrom.
+
The inner content of the container consists of a pre-header with size of 0x80 identifying the Database Type, followed by a BDRI container. The offsets in the BDRI header are usually relative to the offset to the start of the BDRI header (0x80 in the file)
 
  −
The *.db [[extdata|Extdata]] images do not use a DATA partition, so there are two versions of the database in the image, an active and old version (the active one is defined by the DIFF header). These database files consist of a pre-header with size of 0x80 identifying the Database Type, followed by a BDRI container. The offsets in the BDRI header are usually relative to the offset to the start of the BDRI header (0x80 in the file)
      
== Pre Header ==
 
== Pre Header ==
Line 73: Line 71:  
| 0x78
 
| 0x78
 
| Reserved
 
| Reserved
 +
|}
 +
 +
For ticket.db different pre header is used:
 +
 +
{| class="wikitable"
 +
|-
 +
! Start
 +
! Length
 +
! Description
 +
|-
 +
| 0x00
 +
| 4
 +
| Database Type "Magic" (see below)
 +
|-
 +
| 0x04
 +
| 0x04
 +
| Unknown (always 0x00000001 ?)
 +
|-
 +
| 0x08
 +
| 0x04
 +
| Unknown
 +
|-
 +
| 0x0C
 +
| 0x04
 +
| Unknown (0x30 smaller than previous one)
 
|}
 
|}
   Line 81: Line 104:  
! Database Type
 
! Database Type
 
! Magic
 
! Magic
 +
|-
 +
| CTR-NAND ticket.db
 +
| TICK
 
|-
 
|-
 
| CTR-NAND import.db
 
| CTR-NAND import.db
Line 103: Line 129:  
== BDRI ==
 
== BDRI ==
   −
Information stored about titles in these Title Database files are stored in two parts in a BDRI partition. Firstly in a Title Entry Table, and secondly in a Title Info Table. 
+
This is a variant of [[Inner FAT|FAT filesystem]]. It consists one "root" directory and multiple "files". Each "file" is one title info entry described below.
 
  −
{| class="wikitable"
  −
|-
  −
! Start
  −
! Length
  −
! Description
  −
|-
  −
| 0x0
  −
| 4
  −
| Database Magic ("BDRI")
  −
|-
  −
| 0x4
  −
| 4
  −
| Magic Number (0x30000)
  −
|-
  −
| 0x8
  −
| 8
  −
| Unknown
  −
|-
  −
| 0x10
  −
| 8
  −
| File Size(including pre header), divided by the value at relative offset 0x18 (usually = 0x80)
  −
|-
  −
| 0x18
  −
| 4
  −
| Usually 0x80
  −
|-
  −
| 0x1C
  −
| 4
  −
| Reserved
  −
|-
  −
| 0x20
  −
| 0x20
  −
| Unknown/Constant
  −
|-
  −
| 0x40
  −
| 0x18
  −
| Unknown
  −
|-
  −
| 0x58
  −
| 8
  −
| Relative Title Entry Table Offset
  −
|-
  −
| 0x60
  −
| 0x20
  −
| Unknown
  −
|}
  −
 
  −
== Title Entry Table ==
     −
This contains 'Entries' for all the titles stored in the database. However this just appears to be an indexing table, the majority of title information is kept in a Title Info Table, which these index entries point to. Title Entries start immediately after the Title Entry Table Header. And there is no padding between entries.
+
== Title Info Entry ==
   −
=== Header ===
+
An entry contains information taken from both the application NCCH file(s) and TMD.
 
  −
{| class="wikitable"
  −
|-
  −
! Start
  −
! Length
  −
! Description
  −
|-
  −
| 0x0
  −
| 4
  −
| Unknown/Magic? (usually = 0x2)
  −
|-
  −
| 0x4
  −
| 4
  −
| Unknown/Magic? (usually = 0x3)
  −
|-
  −
| 0x8
  −
| 0x24
  −
| Reserved
  −
|-
  −
| 0x2C
  −
| 4
  −
| Number of used Title Entries
  −
|-
  −
| 0x30
  −
| 0x50
  −
| Reserved
  −
|-
  −
| 0x80
  −
| 4
  −
| MAX Number of Title Entries
  −
|-
  −
| 0x84
  −
| 4
  −
| Unknown
  −
|-
  −
| 0x88
  −
| 0x20
  −
| Reserved
  −
|}
  −
 
  −
=== Title Entry Format ===
  −
 
  −
The entries are 0x2C bytes long.
  −
 
  −
{| class="wikitable"
  −
|-
  −
! Start
  −
! Length
  −
! Description
  −
|-
  −
| 0x0
  −
| 4
  −
| Unknown
  −
|-
  −
| 0x4
  −
| 4
  −
| Active Flag. If this isn't = 0x1, then this entry slot is unused
  −
|-
  −
| 0x8
  −
| 0x8
  −
| Title ID
  −
|-
  −
| 0x10
  −
| 4
  −
| Title Entry Index
  −
|-
  −
| 0x14
  −
| 4
  −
| Relative Title Info Offset, divided by the value at offset 0x18 in this Title Entry (usually 0x80)
  −
|-
  −
| 0x18
  −
| 0x4
  −
| Usually 0x80
  −
|-
  −
| 0x1c
  −
| 4
  −
| Reserved
  −
|-
  −
| 0x20
  −
| 4
  −
| Unknown, occasionally this value is the title's "Title ID lower"
  −
|-
  −
| 0x24
  −
| 0x4
  −
| Unknown
  −
|-
  −
| 0x28
  −
| 0x4
  −
| Unknown
  −
|}
  −
 
  −
* The actual Title Info offset is calculated by the following: Offset of BDRI Header + Relative Offset of Title Entry Table + Relative Title Info Offset
  −
 
  −
== Title Info Table ==
  −
 
  −
These consist of 0x80 byte long entries, pointed to by the title index entries. They contain information taken from both the application NCCH file(s) and TMD.
      
{| class="wikitable"
 
{| class="wikitable"
Line 315: Line 196:  
| 0x2c
 
| 0x2c
 
| Reserved
 
| Reserved
 +
|}
 +
 +
For ticket.db title info contains a small header and actual ticket data:
 +
{| class="wikitable"
 +
|-
 +
! Start
 +
! Length
 +
! Description
 +
|-
 +
| 0x0
 +
| 4
 +
| Unknown (always 0x00000001?)
 +
|-
 +
| 0x4
 +
| 4
 +
| Ticket data size X (=0x350)
 +
|-
 +
| 0x8
 +
| X
 +
| [[Ticket|Ticket]] data
 
|}
 
|}
   Line 395: Line 296:  
These NAND/SD /dbs images seem to be loaded by the ARM9 while NATIVE_FIRM is booting.
 
These NAND/SD /dbs images seem to be loaded by the ARM9 while NATIVE_FIRM is booting.
   −
== Tools ==
+
Removing ticket.db from a New-3DS with signature checks disabled will not result in an unbootable system, however all icons except Slot-1 will disappear from Home. Applets can however still be used. Recovery can be accomplished via [[Hardware|hardmod]] or [[arm9loaderhax]] plus a known good backup of the file (or the whole partition or disk); Gamecard exploits were not tested, and Browserhax did not work.
 
  −
[https://github.com/ps3hen/ctr_toolkit/tree/master/extdata_tool extdata_tool] - parsing cleartext .db extdata images
 
46

edits

Navigation menu