Warframe stringtable from Language.bin

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
piotrus-pan
Posts: 1
Joined: Sat Sep 26, 2015 3:20 pm

Warframe stringtable from Language.bin

Post by piotrus-pan »

I extracted Language.bin from H.Misc.cache using Evolution Engine Cache Extractor. Game internally uses strings like '/Lotus/Language/Factions/ArbitersDesc' and displays proper names only when user needs them. '/Lotus/Language/Factions/' is group, 'ArbitersDesc' is identifier (see below).
Language.bin content (I'll use Long as 4 byte int; little endian; strings are not null-terminated):

Code: Select all

16 bytes - hash?
12 bytes - unknown
Long - number of languages
LANG START
   Long - length of lang string
   <variable length> - lang string
LANG END (those lang strings are totally unnecessary, because other language strings are in different files)
Long - number of groups
GROUP START
   Long - length of group name string
   <variable length> - group name string
   4 bytes - unknown
   Long - number of strings in group
   Long - length of encrypted data
   <variable length> - *encrypted data*
   IDENTIFIER START
      Long - length of identifier string
      <variable length> - identifier string
      11 bytes - unknown
   IDENTIFIER END
GROUP END


According to WFPackageParser code the only thing that changed in file structure is that strings are now encrypted. What is unknown was unknown and not needed. Strings were previously separated by 0x00 (not sure if last string ended with 0x00 too). With this information I tried to find a group with all strings known to me. See attachments.