将下面的js代码解密async function callCHATGPT var url = httpsfree-apicveoytopv2completions; var version_=jsjiamicomv7;var _0x123e5b=_0x9f4c;function_0x49e973_0x114c33_0x2ae680_0x2cbfe5_0x257391_0x18d12d_0x2
该代码经过了混淆和加密,需要还原。
通过观察代码,可以发现以下几点:
- 加密函数的名称为
_0x9f4c,被多次调用。 - 加密函数内部存在字符串的拼接和位运算。
- 加密函数的返回值会被缓存,避免重复加密。
根据以上特征,可以推测加密函数使用了某种加密算法,对字符串进行了混淆处理。
下面是对该代码的还原:
async function callCHATGPT() { var url = "https://free-api.cveoy.top/v2/completions"; var version_ = 'jsjiami.com.v7';
// 解密函数
function decrypt(str, key) {
var k = key();
return function (arr, len) {
arr = arr - 0xad;
var r = k[arr];
if (decrypt.XHnbsj === undefined) {
var base64DecodeChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';
var hexDigits = '0123456789ABCDEF';
var hexDecodeChars = new Array();
for (var i = 0; i < 16; i++) {
hexDecodeChars[hexDigits.charAt(i)] = i;
}
var utf8Decode = function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
} else if ((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
} else {
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
var utf8Encode = function (string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
var stringToHex = function (s) {
var r = "";
var i;
var h;
for (i = 0; i < s.length; i++) {
h = s.charCodeAt(i).toString(16);
r += h;
}
return r;
}
var hexToString = function (s) {
var r = "";
for (var i = 0; i < s.length; i += 2) {
var c = parseInt(s.substr(i, 2), 16);
r += String.fromCharCode(c);
}
return r;
}
var base64Encode = function (input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc
原文地址: https://www.cveoy.top/t/topic/8MM 著作权归作者所有。请勿转载和采集!