这是深度混淆吗?无法理解它的含义
Is this deep obfuscation? Cannot understand the meaning of it
给定以下脚本:
É = -~-~[], ó = -~É, Ë = É << É, þ = Ë + ~[];
Ì = (ó - ó)[Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]][Û];
Ì(Ì((!'' + '')[ó - É] + (!'' + '')[ó] + (!'' + '')[ó - ó] + (!'' + '')[É] + ((!'' + ''))[ó - É] + ([].$ + '')[ó - É] + '\'' + '' + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó - ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (ó + ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + É) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (É + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (þ) + (É + ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó + ó) + (ó - É) + '\' + (ó + ó) + (É) + '\' + (ó + ó) + (ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\'')())()
这显然看起来很混乱(至少对我而言),最终应该 return 或多或少是这样的:
return '1027504564252455744 5013 35\ 15161SS474S74S7S4\S131S4S24 \ 142\ 162\ 141\ 166\ 157\ 73\ 175\ 145\ 1 S4\ 163\ 145\ 173\ 141\ 154\ 145\ 162\ 164\ 146\ 141\ 1S14\ 175'
从这里开始我们就可以反转码了,但是如何从混淆码转为转码码呢?
我还没有找到适用于此类去混淆的任何在线库。曾经有一个 firefox extension 遗憾地被弃用了。浏览器可以解析并执行这段代码,显然它是有效的。我在这里要做的是将脚本转换成人类可读的内容。
这相对简单,只是乏味。首先解压顶部变量声明:
É = -~-~[], ó = -~É, Ë = É << É, þ = Ë + ~[];
这些变量分别解析为数字 2
、3
和 7
。
É = 2;
ó = 3;
þ = 7;
下一部分:
Ì = (ó - ó)[Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]][Û];
等同于
Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]
Ì = (ó - ó)[Û][Û];
用它们的值替换变量,你得到:
Û = ('' + {})[2 + 3] + ('' + {})[3 - 2] + ([][3] + '')[3 - 2] + (!!'' + '')[3] + ({} + '')[3 + 3] + (!'' + '')[3 - 2] + (!'' + '')[2] + ('' + {})[2 + 3] + ({} + '')[3 + 3] + ('' + {})[3 - 2] + (!'' + '')[3 - 2]
Ì = (3 - 3)[Û][Û];
不断搜索加减运算符并将其替换为它们的计算结果,例如搜索 2 + 3
并替换为 5
:
Û = ('' + {})[5] + ('' + {})[1] + ([][3] + '')[1] + (!!'' + '')[3] + ({} + '')[6] + (!'' + '')[1] + (!'' + '')[2] + ('' + {})[5] + ({} + '')[6] + ('' + {})[1] + (!'' + '')[1]
这里有一些用于生成字符串的技术:
('' + {}) -> '[object Object]'
(!!'' + '') -> 'false'
(!'' + '') -> 'true'
([][3] + '') -> 'undefined'
全部放在一起:
Û = '[object Object]'[5] + '[object Object]'[1] + 'undefined'[1] + 'false'[3] + ({} + '')[6] + 'true'[1] + 'true'[2] + '[object Object]'[5] + ({} + '')[6] + '[object Object]'[1] + 'true'[1]
计算结果为
Û = 'constructor'
所以
Ì = (3 - 3)[Û][Û];
// evaluates to
Ì = (0).constructor.constructor;
// which is
Ì = Function
最后一部分的计算结果为
Ì(Ì(< a bunch of stuff >)())()
幸运的是,"bunch of stuff" 根本不包含任何赋值或任何语句 - 它只不过是一个非常长的连接字符串,使用基本的混淆技术创建,但没有使用任何花哨的东西,就像Û
以上。使用与 Û
相同的技术,您将获得您在问题中发布的字符串:
return'10275045642524557445013351614747474314524221675543531452461145'
这只是一大堆字符转义。例如,1
是 a
,</code> 是 <code>=
,0
是 p
,等等。用适当的字符替换每个,你获取字符串:
return'a=prompt('Entrez le mot de passe');if(a=='toto123lol'){alert('bravo');}else{alert('fail...');}'
传递给 Function
并执行。尝试 运行 下面的代码片段并粘贴到 toto123lol
:
É = -~-~[], ó = -~É, Ë = É << É, þ = Ë + ~[];
Ì = (ó - ó)[Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]][Û];
Ì(Ì((!'' + '')[ó - É] + (!'' + '')[ó] + (!'' + '')[ó - ó] + (!'' + '')[É] + ((!'' + ''))[ó - É] + ([].$ + '')[ó - É] + '\'' + '' + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó - ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (ó + ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + É) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (É + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (þ) + (É + ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó + ó) + (ó - É) + '\' + (ó + ó) + (É) + '\' + (ó + ó) + (ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\'')())()
每当你有一个像 "return '10275\....
这样的字符串时,最简单的转换方法就是将它粘贴到代码编辑器中并让它计算转义符:
const str = "return'10275045642524557445013351614747474314524221675543531452461145'";
console.log(str);
给定以下脚本:
É = -~-~[], ó = -~É, Ë = É << É, þ = Ë + ~[];
Ì = (ó - ó)[Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]][Û];
Ì(Ì((!'' + '')[ó - É] + (!'' + '')[ó] + (!'' + '')[ó - ó] + (!'' + '')[É] + ((!'' + ''))[ó - É] + ([].$ + '')[ó - É] + '\'' + '' + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó - ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (ó + ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + É) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (É + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (þ) + (É + ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó + ó) + (ó - É) + '\' + (ó + ó) + (É) + '\' + (ó + ó) + (ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\'')())()
这显然看起来很混乱(至少对我而言),最终应该 return 或多或少是这样的:
return '1027504564252455744 5013 35\ 15161SS474S74S7S4\S131S4S24 \ 142\ 162\ 141\ 166\ 157\ 73\ 175\ 145\ 1 S4\ 163\ 145\ 173\ 141\ 154\ 145\ 162\ 164\ 146\ 141\ 1S14\ 175'
从这里开始我们就可以反转码了,但是如何从混淆码转为转码码呢?
我还没有找到适用于此类去混淆的任何在线库。曾经有一个 firefox extension 遗憾地被弃用了。浏览器可以解析并执行这段代码,显然它是有效的。我在这里要做的是将脚本转换成人类可读的内容。
这相对简单,只是乏味。首先解压顶部变量声明:
É = -~-~[], ó = -~É, Ë = É << É, þ = Ë + ~[];
这些变量分别解析为数字 2
、3
和 7
。
É = 2;
ó = 3;
þ = 7;
下一部分:
Ì = (ó - ó)[Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]][Û];
等同于
Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]
Ì = (ó - ó)[Û][Û];
用它们的值替换变量,你得到:
Û = ('' + {})[2 + 3] + ('' + {})[3 - 2] + ([][3] + '')[3 - 2] + (!!'' + '')[3] + ({} + '')[3 + 3] + (!'' + '')[3 - 2] + (!'' + '')[2] + ('' + {})[2 + 3] + ({} + '')[3 + 3] + ('' + {})[3 - 2] + (!'' + '')[3 - 2]
Ì = (3 - 3)[Û][Û];
不断搜索加减运算符并将其替换为它们的计算结果,例如搜索 2 + 3
并替换为 5
:
Û = ('' + {})[5] + ('' + {})[1] + ([][3] + '')[1] + (!!'' + '')[3] + ({} + '')[6] + (!'' + '')[1] + (!'' + '')[2] + ('' + {})[5] + ({} + '')[6] + ('' + {})[1] + (!'' + '')[1]
这里有一些用于生成字符串的技术:
('' + {}) -> '[object Object]'
(!!'' + '') -> 'false'
(!'' + '') -> 'true'
([][3] + '') -> 'undefined'
全部放在一起:
Û = '[object Object]'[5] + '[object Object]'[1] + 'undefined'[1] + 'false'[3] + ({} + '')[6] + 'true'[1] + 'true'[2] + '[object Object]'[5] + ({} + '')[6] + '[object Object]'[1] + 'true'[1]
计算结果为
Û = 'constructor'
所以
Ì = (3 - 3)[Û][Û];
// evaluates to
Ì = (0).constructor.constructor;
// which is
Ì = Function
最后一部分的计算结果为
Ì(Ì(< a bunch of stuff >)())()
幸运的是,"bunch of stuff" 根本不包含任何赋值或任何语句 - 它只不过是一个非常长的连接字符串,使用基本的混淆技术创建,但没有使用任何花哨的东西,就像Û
以上。使用与 Û
相同的技术,您将获得您在问题中发布的字符串:
return'10275045642524557445013351614747474314524221675543531452461145'
这只是一大堆字符转义。例如,1
是 a
,</code> 是 <code>=
,0
是 p
,等等。用适当的字符替换每个,你获取字符串:
return'a=prompt('Entrez le mot de passe');if(a=='toto123lol'){alert('bravo');}else{alert('fail...');}'
传递给 Function
并执行。尝试 运行 下面的代码片段并粘贴到 toto123lol
:
É = -~-~[], ó = -~É, Ë = É << É, þ = Ë + ~[];
Ì = (ó - ó)[Û = ('' + {})[É + ó] + ('' + {})[ó - É] + ([].ó + '')[ó - É] + (!!'' + '')[ó] + ({} + '')[ó + ó] + (!'' + '')[ó - É] + (!'' + '')[É] + ('' + {})[É + ó] + ({} + '')[ó + ó] + ('' + {})[ó - É] + (!'' + '')[ó - É]][Û];
Ì(Ì((!'' + '')[ó - É] + (!'' + '')[ó] + (!'' + '')[ó - ó] + (!'' + '')[É] + ((!'' + ''))[ó - É] + ([].$ + '')[ó - É] + '\'' + '' + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó - ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (ó + ó) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + ó) + (É + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (É + É) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (ó - ó) + '\' + (ó - É) + (ó + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (É + ó) + (ó - ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (þ) + (É + ó) + '\' + (þ) + (É + ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó + ó) + (ó - É) + '\' + (ó + ó) + (É) + '\' + (ó + ó) + (ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (É) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (ó + ó) + (ó + ó) + '\' + (ó - É) + (É + ó) + (þ) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (ó + ó) + (ó) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (þ) + (ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (ó - É) + (É + É) + (É + ó) + '\' + (ó - É) + (ó + ó) + (É) + '\' + (ó - É) + (ó + ó) + (É + É) + '\' + (É + ó) + (ó - ó) + '\' + (É + É) + (þ) + '\' + (ó - É) + (É + É) + (ó + ó) + '\' + (ó - É) + (É + É) + (ó - É) + '\' + (ó - É) + (É + ó) + (ó - É) + '\' + (ó - É) + (É + ó) + (É + É) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + ó) + (ó + ó) + '\' + (É + É) + (þ) + '\' + (É + ó) + (ó - É) + '\' + (þ) + (ó) + '\' + (ó - É) + (þ) + (É + ó) + '\'')())()
每当你有一个像 "return '10275\....
这样的字符串时,最简单的转换方法就是将它粘贴到代码编辑器中并让它计算转义符:
const str = "return'10275045642524557445013351614747474314524221675543531452461145'";
console.log(str);