Jump to content

Recommended Posts

  • Members
Posted

Hello, I'm trying to get the text from the game Goddess of Victory: Nikke; they seem to be encrypted in a format "lsc" and the correct viewable text format should be "lss," which can be opened in SQLite. If you can help me, that would be amazing. Thank you

lss.zip

  • Members
Posted

these .lsc files are a custom container, magic NKDB (Nikke Database). All big-endian. Layout:

0x00  "NKDB"
0x04  version (uint32) = 1
0x08  16-byte key/IV (unique per file)
0x18  flag uint32 = 0x1000 (4096) - same in every file
0x1C  record count (uint32)
0x20  offset table: count × uint32 (absolute offsets) + 4 pad bytes
...   data section: records back-to-back

Record size = offset[i+1] - offset, last one runs to EOF. The offset table checks out perfectly (monotonic, no gaps, matches file size), so reading the container is trivial.

The record payloads are encrypted. Data section entropy is a flat 8.0 bits/byte and the byte distribution is dead uniform (all 256 values ~0.39% each), which screams AES, not compression (no magic bytes, no skew). Record sizes aren't multiples of 16, so it's a stream mode (CTR/CFB/OFB/GCM), not ECB/CBC.

The 16 bytes in the header are almost certainly a per-file IV/nonce or key-id, the actual AES key isn't in the file, it lives in the game client (il2cpp binary). Tried XOR and AES with the header bytes as the key, nothing decrypts, so don't bother going down that road. You'll need to pull the key from GameAssembly/libil2cpp to read the actual locale text (probably JSON/table rows once decrypted).

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...