Line 1: |
Line 1: |
| {{DISPLAYTITLE:packlist.dat}} | | {{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. | + | '''{{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 is no equivalent file for ManiaPlanet. | | There is no equivalent file for ManiaPlanet. |
Line 20: |
Line 20: |
| The name and the key of each entry are decrypted as follows. | | The name and the key of each entry are decrypted as follows. |
| | | |
| + | // md5() is a function that returns the MD5 hash of the input string |
| nameKey = md5("6611992868945B0B59536FC3226F3FD0" + sprintf("%u", salt)); | | nameKey = md5("6611992868945B0B59536FC3226F3FD0" + sprintf("%u", salt)); |
| for (int i = 0; i < nameLength; i++) | | for (int i = 0; i < nameLength; i++) |
Line 30: |
Line 31: |
| 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. | + | {{c|name}} corresponds to the name of a .pak file, without the extension. {{c|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: | + | {{c|packlist.dat}} has a 16-byte signature/checksum at the end for integrity checking. It is verified as follows: |
| | | |
| md5In = md5("E3554B5828AF14F11AA42A5EAF0AEFC8" + sprintf("%u", salt)); | | md5In = md5("E3554B5828AF14F11AA42A5EAF0AEFC8" + sprintf("%u", salt)); |