diff --git a/lib/Constants.js b/lib/Constants.js index 4f79e3bb..d0792686 100644 --- a/lib/Constants.js +++ b/lib/Constants.js @@ -112,7 +112,7 @@ module.exports = { NORMAL: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'.split(''), REVERSE: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_'.split('') }, - FUNCS_REGEX: /d\.push\(e\)|d\.reverse\(\)|d\[0\]\)\[0\]\)|f=d\[0];d\[0\]|d\.length;d\.splice\(e,1\)|function\(\){for\(var|function\(d,e,f\){var h=f|function\(d\){for\(var|reverse\(\)\.forEach|unshift\(d\.pop\(\)\)|function\(d,e\){for\(var f/, + FUNCS_REGEX: /d\.push\(e\)|d\.reverse\(\)|d\[0\]\)\[0\]\)|f=d\[0];d\[0\]|d\.length;d\.splice\(e,1\)|function\(\){for\(var|function\(d,e,f\){var k=f|function\(d\){for\(var|reverse\(\)\.forEach|unshift\(d\.pop\(\)\)|function\(d,e\){for\(var f/, FUNCS: { PUSH: 'd.push(e)', REVERSE_1: 'd.reverse()', @@ -124,7 +124,7 @@ module.exports = { ROTATE_2: 'unshift(d.pop())', BASE64_DIA: 'function(){for(var', TRANSLATE_1: 'function(d,e){for(var f', - TRANSLATE_2: 'function(d,e,f){var h=f' + TRANSLATE_2: 'function(d,e,f){var k=f' }, // Just a helper function, felt like Utils.js wasn't the right place for it: formatNTransformData: (data) => { diff --git a/lib/NToken.js b/lib/NToken.js index 49dad1c8..255e5e33 100644 --- a/lib/NToken.js +++ b/lib/NToken.js @@ -47,8 +47,8 @@ class NToken { // Parses and emulates calls to the functions of the transformations array const transformation_calls = [...Utils.getStringBetweenStrings(this.raw_code.replace(/\n/g, ''), 'try{', '}catch') - .matchAll(this.transformation_calls_regex)].map((params) => ({ index: params[1], params: params[2] })); - + .matchAll(this.transformation_calls_regex)].map((params) => ({ index: params[1], params: params[2] })); + transformation_calls.forEach((data) => { const param_index = data.params.split(',').map((param) => param.match(/c\[(.*?)\]/)[1]); const base64_dia = (param_index[2] && transformations[param_index[2]]()); @@ -73,20 +73,20 @@ class NToken { const data = `[${Utils.getStringBetweenStrings(this.raw_code.replace(/\n/g, ''), 'c=[', '];c')}]`; return JSON.parse(Constants.formatNTransformData(data)); } - + /** * Gets a base64 alphabet and uses it as a lookup table to modify n. */ #translate1(arr, token, is_reverse_base64) { const characters = is_reverse_base64 && Constants.BASE64_DIALECT.REVERSE || Constants.BASE64_DIALECT.NORMAL; - arr.forEach(function(char, index, loc) { + arr.forEach(function (char, index, loc) { this.push(loc[index] = characters[(characters.indexOf(char) - characters.indexOf(this[index]) + 64) % characters.length]); }, token.split('')); } #translate2(arr, token, characters) { let chars_length = characters.length; - arr.forEach(function(char, index, loc) { + arr.forEach(function (char, index, loc) { this.push(loc[index] = characters[(characters.indexOf(char) - characters.indexOf(this[index]) + index + chars_length--) % characters.length]); }, token.split('')); }