in your dissidia
code I know how it works we just need to find how to generate the 4 byte key for the file.
in the example
v57 = *(_BYTE *)(v13 % v50 + v51) ^ *((_BYTE *)v9 + v13 % v52 + 40);
v57 = v9[(v13 % v52) + 40] ^ v51[v13 % v50]
we need to figure out how to generate v9 if you can figure that out or tell me the function name and ill look at it.
in the older game v9 was generated with
A = num+0x3e7
B = A*8 # FIXME: missing sth here to catch the possible overflow
B -= A
C = int(B / 0xB) + int(num % 0x11) + 0x1AC
sh = 24
val = (C >> sh)&0xff
if val > 0: key.append(val)
return bytes( key )
anyway how the encryption works is.
take the secret xor seed you posted
and the 4 byte secret per file key and xor them.
then take that result and xor the entire encrypted file with it starting at offset 0x4 (after the file size)
and you skip xoring the byte if it is 0 or the same byte as the xor.
Thanks, by your hint I have successfully decrypted the TOC file
Other files do not have first 4 bytes as unzipped size, they are recorded in the TOC.
Also the zip structure:
some zip may have uncompressed ending data, see log.