Difference between revisions of "Nn idbe.rpl"
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/