Changes

Jump to navigation Jump to search
134 bytes added ,  15:05, 5 June 2017
update formatting, add cat
Line 1: Line 1: −
packlist.dat is a file in the "Packs" folder in the TrackMania installation directory. It contains the encryption keys for the [[PAK|.pak files]] there.
+
{{DISPLAYTITLE:packlist.dat}}
 +
'''{{c|packlist.dat}}''' is a file in the "Packs" folder in the TrackMania installation directory. It contains the encryption keys for the [[PAK|.pak files]] there.
 +
 
 +
There is no equivalent file for ManiaPlanet.
 +
 
 +
== File structure ==
   −
==File structure==
   
* byte version (currently 1)
 
* byte version (currently 1)
 
* byte numPacks
 
* byte numPacks
Line 19: Line 23:  
  for (int i = 0; i < nameLength; i++)
 
  for (int i = 0; i < nameLength; i++)
 
     name[i] = encryptedName[i] ^ nameKey[i % 16];
 
     name[i] = encryptedName[i] ^ nameKey[i % 16];
 
+
 
  keyStringKey = md5(name + sprintf("%u", salt) + "B97C1205648A66E04F86A1B5D5AF9862")
 
  keyStringKey = md5(name + sprintf("%u", salt) + "B97C1205648A66E04F86A1B5D5AF9862")
 
  for (int i = 0; i < 0x20; i++)
 
  for (int i = 0; i < 0x20; i++)
 
     keyString[i] = encryptedKeyString[i] ^ keyStringKey[i % 16];
 
     keyString[i] = encryptedKeyString[i] ^ keyStringKey[i % 16];
 +
 +
key = md5(keyString + "NadeoPak")
   −
key = md5(keyString + "NadeoPak")
+
{{c|name}} corresponds to the name of a .pak file, minus the extension. {{c|key}} is the 16-byte key used during Blowfish decryption of the .pak file.
   −
"name" corresponds to the name of a .pak file, minus the extension. "key" is the 16-byte key used during Blowfish decryption of the .pak file.
+
== Signature verification ==
   −
==Signature verification==
+
{{c|packlist.dat}} has a 16-byte signature at the end for integrity checking. It is verified as follows:
packlist.dat has a 16-byte signature at the end for integrity checking. It is verified as follows:
      
  md5In = md5("E3554B5828AF14F11AA42A5EAF0AEFC8" + sprintf("%u", salt));
 
  md5In = md5("E3554B5828AF14F11AA42A5EAF0AEFC8" + sprintf("%u", salt));
Line 42: Line 47:     
The calculated signature must match the signature in the file, or TrackMania will not accept the file.
 
The calculated signature must match the signature in the file, or TrackMania will not accept the file.
 +
 +
[[Category:Internals]]

Navigation menu