js-confuser
Version:
JavaScript Obfuscation Tool.
58 lines (47 loc) • 2.04 kB
text/typescript
import Template from "./template";
export const BufferToStringTemplate = new Template(`
{GetGlobalTemplate}
var __globalObject = {getGlobalFnName}() || {};
var __TextDecoder = __globalObject["TextDecoder"];
var __Uint8Array = __globalObject["Uint8Array"];
var __Buffer = __globalObject["Buffer"];
var __String = __globalObject["String"] || String;
var __Array = __globalObject["Array"] || Array;
var utf8ArrayToStr = (function () {
var charCache = new __Array(128); // Preallocate the cache for the common single byte chars
var charFromCodePt = __String["fromCodePoint"] || __String["fromCharCode"];
var result = [];
return function (array) {
var codePt;
var byte1;
var buffLen = array["length"];
result["length"] = 0;
for (var i = 0; i < buffLen;) {
byte1 = array[i++];
if (byte1 <= 0x7F) {
codePt = byte1;
} else if (byte1 <= 0xDF) {
codePt = ((byte1 & 0x1F) << 6) | (array[i++] & 0x3F);
} else if (byte1 <= 0xEF) {
codePt = ((byte1 & 0x0F) << 12) | ((array[i++] & 0x3F) << 6) | (array[i++] & 0x3F);
} else if (__String["fromCodePoint"]) {
codePt = ((byte1 & 0x07) << 18) | ((array[i++] & 0x3F) << 12) | ((array[i++] & 0x3F) << 6) | (array[i++] & 0x3F);
} else {
codePt = 63; // Cannot convert four byte code points, so use "?" instead
i += 3;
}
result["push"](charCache[codePt] || (charCache[codePt] = charFromCodePt(codePt)));
}
return result["join"]('');
};
})();
function {BufferToString}(buffer){
if(typeof __TextDecoder !== "undefined" && __TextDecoder) {
return new __TextDecoder()["decode"](new __Uint8Array(buffer));
} else if(typeof __Buffer !== "undefined" && __Buffer) {
return __Buffer["from"](buffer)["toString"]("utf-8");
} else {
return utf8ArrayToStr(buffer);
}
}
`);