| 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)); |