Compare commits

...

9 Commits
v1.0 ... master

Author SHA1 Message Date
SilicaAndPina 43e155c307 README.md edited online with Bitbucket 2019-07-12 11:31:36 +00:00
SilicaAndPina 851ecedfd9 README.md edited online with Bitbucket 2019-07-12 11:31:13 +00:00
SilicaAndPina 3d61c54390 README.md edited online with Bitbucket 2018-08-04 06:32:06 +00:00
Silica 5d1750bfeb
Update mvDecryptor.py 2018-01-25 21:02:15 +13:00
Silica e7d2cac919
Update README.md 2018-01-12 19:32:51 +13:00
Silica ba2e8f8f9e
Update README.md 2018-01-12 19:26:26 +13:00
Silica 18578cfb27
Update README.md 2018-01-12 19:24:19 +13:00
Silica 0595b66488
Update README.md 2018-01-12 19:23:26 +13:00
Silica 8b1cf8a0de
Update README.md 2018-01-12 02:29:56 +13:00
2 changed files with 24 additions and 3 deletions

View File

@ -1,2 +1,23 @@
# RPGMV-DECRYPTOR
Python script that decrypts entire RPG Maker MV Projects. and creates an editable file.
# RPGMV-DECRYPTOR
Decrypts RPG Maker MV Game Files (.rpgmvo, .rpgmvp and .rpgmvm files)
and creates an .rpgproject editable file.
Reverse Engineering / Static Analysis & Modding purposes~ plz dont steal assets. .
Written in Python 2.7.
# How RPGMV Crypto Works
RPG Maker MV's encryption is really weak, for startas it doesnt even encrypt the entire file, it just encrypts the header using XOR. and then writes its own RPG Maker MV header to the file with the old (now encrypted) header under it.
the encryption key is just an md5 hash of whatever was entered into the encryption key box under deployment in the rpg maker engine itself. and can be easily read from www\data\System.json, so all you need to do is
XOR the encrypted header using the md5 hash inside System.json as the key and remove the RPG Maker MV header.
System.json contains 2 boolean values of
hasEncryptedImages and hasEncryptedMusic
which are used to indicate whther or not the game has encrypted music and or images
this is pretty important because otherwise the game cant tell if it needs to decrypt the assets before loading them in game.
this program will set both these values to "false" after the game has been decrypted. to avoid issues.
The .rpgproject file is just a plaintext file that contains the string "RPGMV %s" where %s is whatever version of RPG Maker MV the Project was last loaded in so i just use version 1.0.0 because its the first version and will basicly mean that the project can be loaded in any version of RPG Maker MV the actural project itself *is* the decrypted www/ directory.
Downloads:
Windows (x86): https://bitbucket.org/SilicaAndPina/rpgmv-decryptor/downloads/RPGMV-DECRYPTOR-WIN32.zip
Linux: https://bitbucket.org/SilicaAndPina/rpgmv-decryptor/downloads/RPGMV-DECRYPTOR-LINUX.tar.gz

View File

@ -22,7 +22,7 @@ def decryptFilename(encryptedFilename): # Function for "Decrypting" a filename
if encryptedFilename.endswith(".rpgmvo"): # If file extension is .rpgmvo
return encryptedFilename[:-7]+".ogg" # Make .ogg file.
if encryptedFilename.endswith(".rpgmvm"): # If file extension is .rpgmvm
return encryptedFilename[:-7] + ".mp3" # Make .mp3 file.
return encryptedFilename[:-7] + ".m4a" # Make .m4a file.
if encryptedFilename.endswith(".rpgmvp"): # If file extension is .rpgmvp
return encryptedFilename[:-7] + ".png" # Make .png file.