Closed frostylight closed 5 years ago
it seems that the Decrypt-Code isn't in rpg_core.js either
It can vary from game to game... Please provide more information about the game such as name etc and send these both files, so we can ensure its not just a bug in my System.
Please Provide:
I read your scripts,and it's not a bug in your System. I just download a game that used different way to encrypt. I will try different methods later. Thanks for your reply,I am sorry to bother you
Now I know that the maker has hidden the key in a puzzle :)427 lines of codes
If you want, you can give me the game and I debug this game for you, should be 2min then you get the key^^
I wonder why they put in so much effort to protect the files, since it's JavaScript its ultra easy to get the key anyway ^^
I aslo wonder why this maker protect the files which he/she found on the Internet and consider
them as his/her own works.
To my surprise,it seems that each file has different key.
Look this
Decrypter.decryptImg = function(url, bitmap) {
url = this.extToEncryptExt(url);
//Now,url=img/xxx/xxxx.rpgmvp
var requestFile = new XMLHttpRequest();
requestFile.open("GET", url);
requestFile.responseType = "arraybuffer";
requestFile.send();
requestFile.onload = function () {
if(this.status < Decrypter._xhrOk) {
var arrayBuffer = Decrypter.decryptArrayBuffer(requestFile.response);
//For each file,the ArrayBuffer is different.
bitmap._image.src = Decrypter.createBlobUrl(arrayBuffer);
bitmap._image.onload = Bitmap.prototype._onLoad.bind(bitmap);
bitmap._image.onerror = Bitmap.prototype._onError.bind(bitmap);
}
};
};
Maybe I should learn JavaScript later
Thats the normal decryption method (from RPG-Maker)
If you like me to check let me know the Name of the Game~ If you want to have it private you can also write me a E-Mail to peter@petschko.org ^^
//For each file,the ArrayBuffer is different.
Yes the Array-Buffer is the file content, its natural that it is different for each file =)
Decrypter.decryptArrayBuffer = function(arrayBuffer) {
if (!arrayBuffer) return null;
var header = new Uint8Array(arrayBuffer, 0, this._headerlength);
var i;
var ref = this.SIGNATURE + this.VER + this.REMAIN;
var refBytes = new Uint8Array(16);
for (i = 0; i < this._headerlength; i++) {
refBytes[i] = parseInt("0x" + ref.substr(i * 2, 2), 16);
}
for (i = 0; i < this._headerlength; i++) {
if (header[i] !== refBytes[i]) {
throw new Error("Header is wrong");
}
}
arrayBuffer = this.cutArrayHeader(arrayBuffer, Decrypter._headerlength);
var view = new DataView(arrayBuffer);
if (arrayBuffer) {
this.f_DRILLup(view,arrayBuffer);
this.f_dRillUp(view,arrayBuffer);
this.f_dRilLup(view,arrayBuffer);
this.f_dRiLluP(view,arrayBuffer);
this.f_DriLLuP(view,arrayBuffer);
this.f_drIlLUp(view,arrayBuffer);
this.f_DRiLlUp(view,arrayBuffer);
this.f_DrILlup(view,arrayBuffer);
this.f_dRIllup(view,arrayBuffer);
this.f_DrilLup(view,arrayBuffer);
this.f_drilLup(view,arrayBuffer);
this.f_DrIllUp(view,arrayBuffer);
this.f_dRILLUp(view,arrayBuffer);
this.f_drillup(view,arrayBuffer);
this.f_dRiLLuP(view,arrayBuffer);
this.f_dRIlLup(view,arrayBuffer);
this.f_DrILluP(view,arrayBuffer);
this.f_DRiLLUp(view,arrayBuffer);
this.f_driLLUp(view,arrayBuffer);
this.f_DRilLup(view,arrayBuffer);
this.f_DrillUp(view,arrayBuffer);
this.f_drIlluP(view,arrayBuffer);
this.f_dRIlLUp(view,arrayBuffer);
this.f_DRiLLuP(view,arrayBuffer);
this.f_dRiLLUp(view,arrayBuffer);
this.f_drILLuP(view,arrayBuffer);
this.f_DRIlluP(view,arrayBuffer);
this.f_DRILlup(view,arrayBuffer);
this.f_dRiLLup(view,arrayBuffer);
this.f_driLlup(view,arrayBuffer);
this.f_drILLup(view,arrayBuffer);
this.f_DRiLluP(view,arrayBuffer);
this.f_driLLup(view,arrayBuffer);
this.f_drIllUp(view,arrayBuffer);
this.f_DRilluP(view,arrayBuffer);
this.f_DrILlUp(view,arrayBuffer);
this.f_DRIlLUp(view,arrayBuffer);
this.f_drillUp(view,arrayBuffer);
this.f_DrIllup(view,arrayBuffer);
this.f_DrILLUp(view,arrayBuffer);
this.f_DRIllup(view,arrayBuffer);
this.f_drIlLup(view,arrayBuffer);
this.f_dRILlup(view,arrayBuffer);
this.f_DrIlLuP(view,arrayBuffer);
this.f_drilLuP(view,arrayBuffer);
this.f_drIllup(view,arrayBuffer);
this.f_DrIlLUp(view,arrayBuffer);
this.f_DRiLlup(view,arrayBuffer);
this.f_DRilLUp(view,arrayBuffer);
this.f_dRIllUp(view,arrayBuffer);
this.f_dRiLlUp(view,arrayBuffer);
this.f_DrILLup(view,arrayBuffer);
this.f_DrilluP(view,arrayBuffer);
this.f_dRIlluP(view,arrayBuffer);
this.f_dRIlLuP(view,arrayBuffer);
this.f_drILluP(view,arrayBuffer);
this.f_DRiLLup(view,arrayBuffer);
this.f_DRILluP(view,arrayBuffer);
this.f_DrillUP(view,arrayBuffer);
this.f_DrILLuP(view,arrayBuffer);
this.f_DRILLUp(view,arrayBuffer);
this.f_Drillup(view,arrayBuffer);
this.f_drilluP(view,arrayBuffer);
this.f_dRillup(view,arrayBuffer);
this.f_DriLluP(view,arrayBuffer);
this.f_DriLLUp(view,arrayBuffer);
this.f_drIlLuP(view,arrayBuffer);
this.f_driLlUp(view,arrayBuffer);
this.f_DRillUP(view,arrayBuffer);
this.f_DrilLuP(view,arrayBuffer);
this.f_dRILlUp(view,arrayBuffer);
this.f_DRilLuP(view,arrayBuffer);
this.f_dRiLlup(view,arrayBuffer);
this.f_dRilLUp(view,arrayBuffer);
this.f_DrIlluP(view,arrayBuffer);
this.f_DRillup(view,arrayBuffer);
this.f_DRillUp(view,arrayBuffer);
this.f_DRIllUp(view,arrayBuffer);
this.f_dRILLuP(view,arrayBuffer);
this.f_drILLUp(view,arrayBuffer);
this.f_dRILluP(view,arrayBuffer);
this.f_driLLuP(view,arrayBuffer);
this.f_dRILLup(view,arrayBuffer);
this.f_DRIlLuP(view,arrayBuffer);
this.f_dRillUP(view,arrayBuffer);
this.f_DRILlUp(view,arrayBuffer);
this.f_DRILLuP(view,arrayBuffer);
this.f_DriLlup(view,arrayBuffer);
this.f_DriLLup(view,arrayBuffer);
this.f_DrilLUp(view,arrayBuffer);
this.f_dRilLuP(view,arrayBuffer);
this.f_dRilluP(view,arrayBuffer);
this.f_DrIlLup(view,arrayBuffer);
this.f_drillUP(view,arrayBuffer);
this.f_drILlUp(view,arrayBuffer);
this.f_drilLUp(view,arrayBuffer);
this.f_DRIlLup(view,arrayBuffer);
this.f_drILlup(view,arrayBuffer);
this.f_driLluP(view,arrayBuffer);
this.f_DriLlUp(view,arrayBuffer);
}
return arrayBuffer;
};
just like a puzzle
For some difficult encrypt files,we could copy the function from rpg_core.js(game) to Decrypter.js. But it takes too long to decrypt files in each folders
I cant help here since i dont have the game^^
I cant help here since i dont have the game^^
I solve the problem by myself , just copy the funtion from the game but can we decrypt all files in different folders ? so that it would be more convenient
You cant do this, a Website/HTML-Document doesn't have access to your File-System. You can only select multiple Files inside a Folder but can't process a File-Tree.
what a pity. all in all ,thanks a lot.
hey can you decrypt this game for me? https://www.dropbox.com/s/itpz8bkupvzhlfz/STV_MonsterCards-DEMO.rar?dl=0&file_subpath=%2FSTV_MonsterCards-DEMO%2FMonsterCards+DEMO
hey can you decrypt this game for me? https://www.dropbox.com/s/itpz8bkupvzhlfz/STV_MonsterCards-DEMO.rar?dl=0&file_subpath=%2FSTV_MonsterCards-DEMO%2FMonsterCards+DEMO
I can't visit the website because it's limited in my country,sorry maybe you should open a new issues or just send it to Petschko
Please try the "No-Key" solution in my Website, if you are only interested in the images:
https://petschko.org/tools/mv_decrypter/#restore-images
If you can't visit my Website due to GEO-Restriction, you can also Download this Project and use it offline on your PC, it also has the No-Key solution (Images only)
it told me that "Please try to select the rpg_core(.js) file and try again" but it also told me that "Error: File-Content was invalid (Was not a JSON-File)"