Tunabrain4cc PES 2016 Decrypter
This is a working decrypter and encrypter for files generated by Pro Evolution Soccer 2016.
This works with all types of save files we are aware of. If you find a failure case, please let us know.
Compiled binaries are available here on Github.
All save files generated by PES16 are encrypted using an interesting combination of Mersenne Twister and some kind of chained encryption key.
Each file consists of six different blocks that are encrypted differently. In the order they appear in the file, they are
The encryption header. This contains part of the information required to decrypt the file. This is seeded differently every time PES16 saves a file.
The file header. This specifies the type of file (EDIT, TEXPORT, SYSTEM etc.), the length of the remaining blocks in the file and some sort of hash/checksum (the game does not seem to care about this).
A thumbnail/logo. You would think this would be displayed when selecting the save state to load, but the game seems to ignore this.
The file description. This contains one or two strings about what is in the file, such as the name of the team. This is mainly for aesthetics, i.e. displaying the correct name when listing save states.
The actual save game data. This contains the team data/system settings/other things. This is probably the main thing you want to edit.
A serial number/version string. I don’t know what this is for, but you probably shouldn’t change this.
This project comes with two command line tools and a DLL that do decryption and encryption, respectively.
To decrypt a file, run
decrypter input_file output_directory
This will decrypt the file at input_file, split it up into different data blocks and save the resulting files into output_directory.
You can edit the decrypted files directly. After you’re done, run the encrypter with
encrypter input_directory output_file
This will encrypt the different files from the specified output directory and merge them into a single output file that can be read by PES16.
A DLL is provided for when you want to use the decrypter/encrypter in an external program. Please see src/encrypter.c and src/decrypter.c for examples on how to use the library functions.
This project is written in C; most sane compilers should be able to compile it.
In the root folder, run
if you have the gcc toolchain available.
You can also easily setup any other build system or invoke the compiler manually on the command line – there are only a handful of source files.
This project is released into the public domain. You are allowed to modify, redistribute and sell the code without need for attribution. Please consider contributing back to the community and releasing your code if you build on top of this project.
Please note that this license does not apply to src/mt19937ar.c, which was made available by Takuji Nishimura and Makoto Matsumoto. Please respect their license when redistributing the code or binaries.