Changes

213 bytes removed ,  14:46, 16 July 2022
m
Renamed OSv12 to OSv10
Line 17: Line 17:     
== Encryption ==  
 
== 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.
 
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.
+
In OSv10 (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)
+
Here are the keys:
    
<syntaxhighlight lang="Python">
 
<syntaxhighlight lang="Python">
Line 134: Line 127:     
'''Note 2:'''
 
'''Note 2:'''
Each of the 16 0x200-length groups has 3 UTF-16 text blocks. There is always 3 blocks, even if the string does not take up the entire (or any of the) block. Some games have plain-text strings starting here, where others have empty null bytes or seemingly garbage text (sometimes a mix of all 3).
+
Each of the 16 0x200-length groups has 3 UTF-16-BE text blocks. There is always 3 blocks, even if the string does not take up the entire (or any of the) block. Each group is for a different language/region. The first group is for Japanese, the order of the other languages is unknown.
    
'''Examples:'''
 
'''Examples:'''
6

edits