pxdecoder
Version:
Easily decode all Cgt strings for Perimeter X scripts.
49 lines (39 loc) • 1.77 kB
JavaScript
var colors = require('colors');
var args = process.argv.slice(2);
let path = args[1];
let output = args[3];
var fs = require('fs');
const {Base64} = require('js-base64');
let pxDecodeStrings = function (path, output) {
let cgtRegex = /(?=\Cgt)(.*?)(?=\")/g
function atob(str) {
return Buffer.from(str, 'base64').toString('binary');
}
function decodePxString(encoded) {
for(var i = atob(encoded), a = "ZSA8q7L", c = "", u = 0; u < i.length; ++u) {
var f = a.charCodeAt(u % 7);
c += String.fromCharCode(f ^ i.charCodeAt(u));
}
return c;
}
let encodedScript = fs.readFileSync(path, 'utf8')
let decodedScript = encodedScript.replace(cgtRegex, (cgtString) => {
return decodePxString(cgtString)
})
fs.writeFile(output, decodedScript, 'utf8', function (err) {
if (err) {
return console.log(err);
}
console.log(colors.green(`${path} was successfully decoded and saved at: ${output}`));
let logo = Base64.decode(`ICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICBfICAgICAgICAgICAKICAgICAgICAg
ICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAKIF8gX19fXyAgX19fX3wgfCBf
X18gIF9fXyBfX18gICBfX3wgfCBfX18gXyBfXyAKfCAnXyBcIFwvIC8gX2AgfC8gXyBcLyBfXy8g
XyBcIC8gX2AgfC8gXyBcICdfX3wKfCB8XykgPiAgPCAoX3wgfCAgX18vIChffCAoXykgfCAoX3wg
fCAgX18vIHwgICAKfCAuX18vXy9cX1xfXyxffFxfX198XF9fX1xfX18vIFxfXyxffFxfX198X3wg
ICAKfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKfF98ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=`)
console.log(logo)
});
}
pxDecodeStrings(path, output)