Tool Pixel Game Maker MV extractor

Emerald_Gladiator

Active Member
Jun 9, 2017
987
1,965
So instead I've modified my tool and here's texts.exe, which you copy in the same folder as the game (where player.exe is).

To extract texts, just run it, works with encrypted games too out-of-the-box. This will save "texts.csv", which you can open with Excel, LibreOffice, GoogleSheets, whatever and you can edit it as you please. Adding a new language is simple as adding a new column (you can copy'n'paste an entire column into a translator and then copy'n'paste the result back for example).

To update texts, run "texts.exe texts.csv". This will locate the "textList" array within the json, and it does not even parse what's before or after that (which is 99% of the file), just copies both verbatim, so it is blazing fast (less than a second on an over 50 Mb project.json). Even within the "textList" array, only "text" arrays are replaced, and only if there's a row in the csv with a matching id. Everything else, even the linebreaks are copied verbatim, so it is extremely safe to use, it won't mess up the json for sure (but it's always better to create a backup first).
Hey, thanks for the tool.
Doesn't work for me though. I've followed the instructions to place "test.exe" in the game directory (with the player.exe file). When running the exe file, it immediately opens a command window and crashes without dialogue. No texts.csv file is created either.

Any ideas?
 

justaplayer69

Newbie
Nov 29, 2023
86
126
Hey, thanks for the tool.
Doesn't work for me though. I've followed the instructions to place "test.exe" in the game directory (with the player.exe file). When running the exe file, it immediately opens a command window and crashes without dialogue. No texts.csv file is created either.

Any ideas?
It's "texts.exe". Could you please open a command line window (CMD.EXE), type "cd (your game's path)" press Enter and then type "texts" press Enter? Does it print anything? (This way the window won't disappear immediately so you can take a screenshot and attach it here). Also is the game in question on f95zone? Could you give me a link so that I could reproduce the issue?
(On a side note, my tool only works if keylength is 16 bytes, some more recent PGMMV versions use 32 bytes, I'm working on supporting those too.)

xj47: would it be possible to add saving project.json to your extractor? Injecting DLLs can be troublesome and less elegant, but you're perfectly right that it's an always working solution. If it could save project.json not just images then translators could use it.
 

xj47

Member
Nov 4, 2017
241
408
xj47: would it be possible to add saving project.json to your extractor? Injecting DLLs can be troublesome and less elegant, but you're perfectly right that it's an always working solution. If it could save project.json not just images then translators could use it.
It's been a while but I think the issue with project.json was the file size. Trying to decrypt it all at once caused an error and since the tool doesn't "know" how the decryption works, it can't be broken into smaller pieces.

If the file is small enough it should already be able to save it. The general process is: 1. Generate a list of encrypted files to be decrypted. 2. Have the injected DLL decrypt them.
Starting with version 2.3, you can modify the list of the desired files and specify a file like project.json directly. (It's a bit hidden, but the readme covers this in the troubleshooting section)

Is this really an obstacle for your tool though? It seems like you figured out how the encryption works and I doubt that the 32 byte variant is that different.
 

justaplayer69

Newbie
Nov 29, 2023
86
126
It's been a while but I think the issue with project.json was the file size.
I see.

If the file is small enough
Not a chance, project.json is typically a several tens of megabytes monstrocity with all the game data in one place and lots and lots of spaces and tabs.

Anyway, thank you for your reply! I'll keep on working with the 32 bytes key then. BTW, have you seen that? I'm sure the IV is the same, the encryption is the same (twofish + xor in 16 bytes blocks), but I only know the key bitshuffling algorithm for the 16 bytes key variant and not for the 32 bytes key variant. Any info would help.
 

xj47

Member
Nov 4, 2017
241
408
BTW, have you seen that? I'm sure the IV is the same, the encryption is the same (twofish + xor in 16 bytes blocks), but I only know the key bitshuffling algorithm for the 16 bytes key variant and not for the 32 bytes key variant. Any info would help.
I haven't looked at or really done any cracking work in the past year or so.
At a high level, if you can force the algorithm to be run on an input of your choosing and examine the results, I'd recommend testing inputs with a clear pattern like all 0x00, all 0xFF, or 0x01 to 0x20. Depending on the method there might be a clear pattern in the result.
 

Emerald_Gladiator

Active Member
Jun 9, 2017
987
1,965
It's "texts.exe". Could you please open a command line window (CMD.EXE), type "cd (your game's path)" press Enter and then type "texts" press Enter? Does it print anything? (This way the window won't disappear immediately so you can take a screenshot and attach it here). Also is the game in question on f95zone? Could you give me a link so that I could reproduce the issue?
(On a side note, my tool only works if keylength is 16 bytes, some more recent PGMMV versions use 32 bytes, I'm working on supporting those too.)
Sorry, that was a typo. Yes, it's texts.exe.

The error is "Unable to locate 'textList' in Json". Any idea what that means?

Game is Dark Hunter Kuro: https://f95zone.to/threads/dark-hunter-kuro.144755/
 

justaplayer69

Newbie
Nov 29, 2023
86
126
The error is "Unable to locate 'textList' in Json". Any idea what that means?
Just as it sounds: there's no 'textList' array in the json. So that game's project.json has no textList block which is supposed to hold the translatable texts.
That page has no download links whatsoever, how am I supposed to check this game's files? I need a mega, rapid, etc. link or maybe attach Resources\data\info.json and Resources\data\project.json here. I can't take a look if I can't get the files.
 

Emerald_Gladiator

Active Member
Jun 9, 2017
987
1,965
Just as it sounds: there's no 'textList' array in the json. So that game's project.json has no textList block which is supposed to hold the translatable texts.
That page has no download links whatsoever, how am I supposed to check this game's files? I need a mega, rapid, etc. link or maybe attach Resources\data\info.json and Resources\data\project.json here. I can't take a look if I can't get the files.
The translation request thread's final page has some download links. Nonetheless, here are the info.json and project.json files.

 

justaplayer69

Newbie
Nov 29, 2023
86
126
The translation request thread's final page has some download links. Nonetheless, here are the info.json and project.json files.

I've checked it. This is an decryption issue, the project.json isn't properly unencrypted, that's why it can't find "textLists" in it. I'll try some alternative methods to get a plain text project.json, but I can't make any promises.
 
  • Like
Reactions: Emerald_Gladiator

fzdc

Well-Known Member
Jul 25, 2017
1,685
1,702
Anyone have a tool for just decrypting the images using the Key from info.json?
like a GUI tool that's easy to use without knowing much about Py. No extracting files, just purely decrypting them as the game already has the PNGs in the Resources/img folder

I looked through this thread and tried:
https://f95zone.to/threads/pixel-game-maker-mv-extractor.105950/post-13822428
https://f95zone.to/threads/game-rip...py-godot-wolfrpg-rpgm-mz-mv-pgmmv-etc.212062/

but they don't seem to work.

I also found these:



but they're Py, cmd, can't wrap my head around it and they can't seem to find the correct key.

Currently trying to decrypt the images from that Kuro game
https://f95zone.to/threads/dark-hunter-kuro-v1-06-pierock-games.220712/
 
Last edited:
  • Like
Reactions: Gubelicious

Tcf2

Member
Jul 17, 2017
116
40
Problem is that the .exe IS called player.exe, the japanese title only appears when you actually play the game.
I even went and opened the info.json file which lists the japanese name for the title, and changed it to player, but it still came up as the japanese title when I ran the game.
Did we ever get a solution for this? Cos I think i got the exact same problem, except the file path has all english characters and numbers, . But none of the other tools here work either. Gameripper says it cannot identify the engine (its Pixel Game Maker MV), and the other one says what I assume to be "Unable to find player" for just a split second before the cmd window disappears and all it shows is the below before it closes. The game im trying to get is Princess Reconquista 0.3.2
1724598998409.png
 

justaplayer69

Newbie
Nov 29, 2023
86
126
Anyone have a tool for just decrypting the images using the Key from info.json?
That's supposed to be Gallery Viewer, but read below.
but they don't seem to work. ... but they're Py, cmd, can't wrap my head around it and they can't seem to find the correct key.
All of these use the same method to generate the encryption key from the key in info.json. Kuro seems to use a non PGMMV standard encryption, that's why neither of these works. I'm not sure if it's just the key bit-magic, or it's an entirely different method than the default.
But none of the other tools here work either. Gameripper says it cannot identify the engine (its Pixel Game Maker MV) ... The game im trying to get is Princess Reconquista 0.3.2
Princess Reconquista was using a 16 bytes info.json key which is mapped to the encryption key using some bit-magic, but with version 0.3.2 they have switched to a 32 bytes key (you can see that in Resources\data\info.json, the "key" is much longer than it was before). I haven't figured out yet how this new 32 bytes info.json key maps to the 16 bytes encryption key, that's why neither Gameripper nor the PGMMV Gallery Viewer works with newer Princess Reconquista versions. Otherwise it seems to use the same encryption method (twofish with the same iv bytes), it's just the key obfuscation that's changed.

It would be great if xj47's tool could print out the encryption key, because in Gameripper you can press F2 and you could specify that key manually and decryption would work with PR 0.3.2 too.
 

Tcf2

Member
Jul 17, 2017
116
40
That's supposed to be Gallery Viewer, but read below.
All of these use the same method to generate the encryption key from the key in info.json. Kuro seems to use a non PGMMV standard encryption, that's why neither of these works. I'm not sure if it's just the key bit-magic, or it's an entirely different method than the default.
Princess Reconquista was using a 16 bytes info.json key which is mapped to the encryption key using some bit-magic, but with version 0.3.2 they have switched to a 32 bytes key (you can see that in Resources\data\info.json, the "key" is much longer than it was before). I haven't figured out yet how this new 32 bytes info.json key maps to the 16 bytes encryption key, that's why neither Gameripper nor the PGMMV Gallery Viewer works with newer Princess Reconquista versions. Otherwise it seems to use the same encryption method (twofish with the same iv bytes), it's just the key obfuscation that's changed.

It would be great if xj47's tool could print out the encryption key, because in Gameripper you can press F2 and you could specify that key manually and decryption would work with PR 0.3.2 too.
How do I find the key?
 

justaplayer69

Newbie
Nov 29, 2023
86
126
How do I find the key?
No need, GAME RIPPER autodetects the key for you (use /v verbose flag to print it out). Otherwise there's a list of key extraction tools in its at the end of the Troubleshooting FAQ, just above the Screenshots. It would be great if xj47's tool could print out the key, I'd love to add this great tool to that list.

But again, the key is autodetected for you, now for Kuro and for other similarly encrypted PGMMV games too.