In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "Nn idbe.rpl"

From WiiUBrew
Jump to navigation Jump to search
Line 18: Line 18:
 
== Encryption ==  
 
== Encryption ==  
  
The icon database is encrypted with AES128 CBC. There's a two byte header:
+
The icon database is encrypted with AES-128-CBC. There's a two byte header:
  
0: (unknown, usually zero?)
+
byte 0: always zero.
1: key index
+
byte 1: aes key index
  
 
followed by encrypted data.
 
followed by encrypted data.
  
nn_idbe contains hardcoded keys in one 0x50 sized block, consisting of the 16-byte hardcoded IV, and 4 hardcoded 16-byte AES128 keys.
+
nn_idbe contains hardcoded keys in one 0x50 sized block (0x10 * 5), consisting of the 16-byte hardcoded IV, and 4 hardcoded 16-byte AES-128 keys.
  
In version 11464 of OSv11 (000500101000400A), the keys are located at $DATA+0x4c of nn_idbe.rpl.
+
In OSv12 (000500101000400A), the keys are located at $.rodata+0x4c of nn_idbe.rpl.
 +
 
 +
IV = "A46987AE47D82BB4FA8ABC0450285FA4"
 +
 
 +
K0 = "4AB9A40E146975A84BB1B4F3ECEFC47B"
 +
K1 = "90A0BB1E0E864AE87D13A6A03D28C9B8"
 +
K2 = "FFBB57C14E98EC6975B384FCF40786B5"
 +
K3 = "80923799B41F36A6A75FB8B48C95F66F"
 +
 
 +
AES_KEYS = [K0, K1, K2, K3]
  
 
== Decrypted icon format ==
 
== Decrypted icon format ==

Revision as of 05:30, 19 August 2018

nn_idbe.rpl is a library that downloads and decrypts icon databases.

Addresses

The library can downloads icons for Wii U or 3DS titles.

For Wii U icons,

https://idbe-wup.cdn.nintendo.net/icondata/%02X/%016llX-%d.idbe

Replace %02X with the first two digits of the second half of the title ID (passing in 10 works fine) and %016llX with the 16-digit title ID. the last %d is the version number.

If you just want the latest icon, you can also use

https://idbe-wup.cdn.nintendo.net/icondata/%02X/%016llX.idbe

e.g. the icon for Splatoon is https://idbe-wup.cdn.nintendo.net/icondata/10/0005000010176A00.idbe

For 3DS icons:

https://idbe-ctr.cdn.nintendo.net/icondata/%02X/%016llX-%d.idbe

or

https://idbe-ctr.cdn.nintendo.net/icondata/%02X/%016llX.idbe

for latest.

These sites use a self-signed SSL certificate, but do allow access without special client certificates (i.e. accessible from a regular browser)

Encryption

The icon database is encrypted with AES-128-CBC. There's a two byte header:

byte 0: always zero. byte 1: aes key index

followed by encrypted data.

nn_idbe contains hardcoded keys in one 0x50 sized block (0x10 * 5), consisting of the 16-byte hardcoded IV, and 4 hardcoded 16-byte AES-128 keys.

In OSv12 (000500101000400A), the keys are located at $.rodata+0x4c of nn_idbe.rpl.

IV = "A46987AE47D82BB4FA8ABC0450285FA4"

K0 = "4AB9A40E146975A84BB1B4F3ECEFC47B" K1 = "90A0BB1E0E864AE87D13A6A03D28C9B8" K2 = "FFBB57C14E98EC6975B384FCF40786B5" K3 = "80923799B41F36A6A75FB8B48C95F66F"

AES_KEYS = [K0, K1, K2, K3]

Decrypted icon format

There's a SHA256 of the data at the beginning of the file. After the sha, there's some stuff that contains UTF-16 text of the game name and publisher, then image data begins.

The image data is given as Truevision TGA and usually starts 0x2050 bytes into the decrypted buffer.