Wolfenstein II The New Colossus (.resources .texdb)

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by aluigi »

Regarding the compression, I have checked the provided sample.dat and the file that gave problems has just an useless header of 12 bytes to skip... it's very strange since there are no chunks or other reasons about this header
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

Ok, in chunk_1, after reading the debug info, we're at the IDCL, in gameresources, we're 1 uint64_t away from it... strange...
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

Ok the last count in the header, which in chunk_1 is files*2, is now files*2+1 which gives us the correct count of uint64_t's in the name array... Why would their only be one..

There must be a flag for no type or name, and in this case, there is one without it.
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

Ok, the integers before are used to assign the debug information to the assets, max integer value is always within entry count.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by aluigi »

Just to recap: the field that I called ID_2 must be converted in the offset "DUMMY7_OFF + (DUMMY2_NUM * 4) + ((ID_2 + 1) * 8)".
That seems to work
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

aluigi wrote:Just to recap: the field that I called ID_2 must be converted in the offset "DUMMY7_OFF + (DUMMY2_NUM * 4) + ((ID_2 + 1) * 8)".
That seems to work

Ahh, that's why it looked like ID*2
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

Ok so we've got names working on my end as well, two integers per entry, texdb is still an issue, they are oodle as I said earlier, also, there is an unused table with entries 0x20 in size and it has a corresponding count in the header. (Two offsets point here)
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by aluigi »

Why do you say that texdb contains oodle data?
There is no oodle there.
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

aluigi wrote:Why do you say that texdb contains oodle data?
There is no oodle there.


A lot of the entries start with the oodle quantum header, 0x8c 0x6 (Quantum/Kraken) encoding...
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by aluigi »

The sample provided by the other user has just files starting with 0xcc and without any compression.
Offsets 2342c2, 234240, 233e34 and the others visible in the sample
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

Ahh, I'm looking at chunk_1's texdb...
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by aluigi »

I have uploaded the new script 0.3 that hopefully now works correctly with the resources/pack archives:
http://aluigi.org/bms/wolfenstein2.bms
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

aluigi wrote:I have uploaded the new script 0.3 that hopefully now works correctly with the resources/pack archives:
http://aluigi.org/bms/wolfenstein2.bms

This is wrong, the types are looked up via the second index in the entry.

Type = index, Name = index+1 (All * 8)...

Verified this works with all resource files afaik
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

Also back to texdb, here is an entry which clearly has an oodle header
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

This also leads me to believe that the 0xCC are also oodle, but with different variables, because the header passes the oodle verification check
toxic72
Posts: 26
Joined: Sun Mar 20, 2016 10:25 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by toxic72 »

Yes I was correct, and so were you, but it is a oodle block, oodle itself has an option to determine if the data is big enough for compression, 0xCC sets the block to uncompressed, but it has an oodle header :)

Here is my oodle verification block code:

Code: Select all

            int b = 0xcc;//magic
           
           
            Console.WriteLine(((b & 0xF) != 0xC));// Should be false
            Console.WriteLine(((b >> 4) & 3) != 0);// Should be false
            Console.WriteLine((b >> 7) & 1);// Restart decoder
            Console.WriteLine((b >> 6) & 1);// Uncompressed chunk
           
            b = 0x6;// compression type
            Console.WriteLine(b & 0x3F);// Compressor algo type (0x6 = kraken)
            Console.WriteLine((b>>7));// Has checksums
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by aluigi »

I don't know why oodle doesn't do that job by itself, since it's its job :)
quickbms 0.8.1 has the -e option that allows to dump output buffer even if the compression algorithm returns an error and it's just full of zeroes

Ah, feel free to link your github/code/tool for people interested in extracting texdb.
folkemon1977
Posts: 4
Joined: Mon Oct 30, 2017 10:54 am

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by folkemon1977 »

Hi friends,
please, can you help me with decrypting language strings from latest Wolfenstein?
I translated both New Order and Old Blood to the Czech language, but with this new format i'm at my wits' end.
Many thanks for your answer.
Kind regards


Link for download strings:
download/file.php?id=3465
infogram
Posts: 20
Joined: Fri Nov 03, 2017 8:31 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by infogram »

folkemon1977 wrote:Hi friends,
please, can you help me with decrypting language strings from latest Wolfenstein?
I translated both New Order and Old Blood to the Czech language, but with this new format i'm at my wits' end.
Many thanks for your answer.
Kind regards


Link for download strings:
download/file.php?id=3465


Seems the encryption method is the same as DOOM 2016, except now they decompress with Oodle after decryption.

You can use my idCrypt tool (http://redd.it/6u744t, src included for anyone interested) to decrypt the file, but you need to delete the first 4 bytes first though (seems to be Oodle-related, maybe the uncompressed-size)

eg. delete first 4 bytes from english.lang, rename english.lang to english.bfile and run "idCrypt english.bfile strings/english.lang"

AFAIK it's decrypting fine since BCryptDecrypt isn't giving any error code, don't know anything about Oodle though so not sure where to go from there, for now I guess I'll see if I can maybe get idCrypt to work with the games oo2core_5_win64.dll
givingtree
Posts: 1
Joined: Mon Nov 06, 2017 3:35 pm

Re: Wolfenstein II The New Colossus (.resources .texdb)

Post by givingtree »

huh... this game structure is so difficult... terrible