mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
94 lines
3.5 KiB
TypeScript
94 lines
3.5 KiB
TypeScript
import * as format from 'string-template';
|
|
|
|
import { AtobTemplate } from '../../../../../src/templates/custom-nodes/AtobTemplate';
|
|
import { Rc4Template } from '../../../../../src/templates/custom-nodes/Rc4Template';
|
|
import { StringArrayBase64DecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/string-array-nodes/string-array-calls-wrapper/StringArrayBase64DecodeNodeTemplate';
|
|
import { StringArrayCallsWrapperTemplate } from '../../../../../src/templates/custom-nodes/string-array-nodes/string-array-calls-wrapper/StringArrayCallsWrapperTemplate';
|
|
import { StringArrayRc4DecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/string-array-nodes/string-array-calls-wrapper/StringArrayRC4DecodeNodeTemplate';
|
|
|
|
import { CryptUtils } from '../../../../../src/utils/CryptUtils';
|
|
|
|
const assert: Chai.AssertStatic = require('chai').assert;
|
|
|
|
/**
|
|
* @param templateData
|
|
* @param stringArrayName
|
|
* @param stringArrayCallsWrapperName
|
|
* @param index
|
|
* @returns {Function}
|
|
*/
|
|
function getFunctionFromTemplateBase64Encoding (
|
|
templateData: any,
|
|
stringArrayName: string,
|
|
stringArrayCallsWrapperName: string,
|
|
index: string
|
|
) {
|
|
let stringArrayCallsWrapperTemplate: string = format(StringArrayCallsWrapperTemplate(), templateData);
|
|
|
|
return Function(`
|
|
var ${stringArrayName} = ['${CryptUtils.btoa('test1')}'];
|
|
|
|
${stringArrayCallsWrapperTemplate}
|
|
|
|
return ${stringArrayCallsWrapperName}(${index});
|
|
`)();
|
|
}
|
|
|
|
/**
|
|
* @param templateData
|
|
* @param stringArrayName
|
|
* @param stringArrayCallsWrapperName
|
|
* @param index
|
|
* @param key
|
|
* @returns {Function}
|
|
*/
|
|
function getFunctionFromTemplateRc4Encoding (
|
|
templateData: any,
|
|
stringArrayName: string,
|
|
stringArrayCallsWrapperName: string,
|
|
index: string,
|
|
key: string
|
|
) {
|
|
let stringArrayCallsWrapperTemplate: string = format(StringArrayCallsWrapperTemplate(), templateData);
|
|
|
|
return Function(`
|
|
var ${stringArrayName} = ['${CryptUtils.btoa(CryptUtils.rc4('test1', key))}'];
|
|
|
|
${stringArrayCallsWrapperTemplate}
|
|
|
|
return ${stringArrayCallsWrapperName}('${index}', '${key}');
|
|
`)();
|
|
}
|
|
|
|
describe('StringArrayCallsWrapperNodeTemplate (): string', () => {
|
|
let stringArrayName: string = 'stringArrayName',
|
|
stringArrayCallsWrapperName: string = 'stringArrayCallsWrapperName',
|
|
atobDecodeNodeTemplate: string = format(StringArrayBase64DecodeNodeTemplate(), {
|
|
atobPolyfill: AtobTemplate(),
|
|
selfDefendingCode: '',
|
|
stringArrayCallsWrapperName
|
|
}),
|
|
rc4DecodeNodeTemplate: string = format(StringArrayRc4DecodeNodeTemplate(), {
|
|
atobPolyfill: AtobTemplate(),
|
|
rc4Polyfill: Rc4Template(),
|
|
selfDefendingCode: '',
|
|
stringArrayCallsWrapperName
|
|
});
|
|
|
|
it('should correctly returns decoded value with base64 encoding', () => {
|
|
assert.deepEqual(getFunctionFromTemplateBase64Encoding({
|
|
decodeNodeTemplate: atobDecodeNodeTemplate,
|
|
stringArrayCallsWrapperName,
|
|
stringArrayName
|
|
}, stringArrayName, stringArrayCallsWrapperName, '0x0'), 'test1');
|
|
});
|
|
|
|
it('should correctly returns decoded value with rc4 encoding', () => {
|
|
assert.deepEqual(getFunctionFromTemplateRc4Encoding({
|
|
decodeNodeTemplate: rc4DecodeNodeTemplate,
|
|
stringArrayCallsWrapperName,
|
|
stringArrayName
|
|
}, stringArrayName, stringArrayCallsWrapperName, '0x0', 'key'), 'test1');
|
|
});
|
|
});
|