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 49: Line 49:
  
 
The image data is given as Truevision TGA and usually starts 0x2050 bytes into the decrypted buffer.
 
The image data is given as Truevision TGA and usually starts 0x2050 bytes into the decrypted buffer.
 +
 +
128x128 pixels.
 +
Decryptor here: https://github.com/NexoDevelopment/idbe_decrypt/

Revision as of 05:36, 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.

Here are the keys: (no copyright issue as OSv12 is a free title Kappa)

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.

128x128 pixels. Decryptor here: https://github.com/NexoDevelopment/idbe_decrypt/