配合chrome浏览器console解密一段JSFuck代码["\x66\x69\x6c\x74\x65\x72"]
时间:2019-11-16 11:05 作者:admin 分类: 技术文章
在测试某个项目的时候,发现一段JavaScript代码,省略不重要的部分如下:
// 原内容如下,只知道有个正则
['mmh']["\x66\x69\x6c\x74\x65\x72"]["\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72"](((['mmh'] + [])[
"\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72"]['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65'][
'\x61\x70\x70\x6c\x79'](null,
"33s102Y117y110O99L116H105n111u110Z40g41U123u102m117c110M99m116T105y111d110"
'\x73\x70\x6c\x69\x74')))('mmh');
// 在JavaScript中对于\x66这种开头的,\x代表这是一个16进制,直接在console里面打印出来就ok
// console.log('\x66\x69\x6c\x74\x65\x72') => filter
// 然后依次打印所有的类似字节即可得到如下转码后的JavaScript代码
// 如果你到这里不知道如何下手的话,怎么办?搜索啊!Google搜索以下 XXXX是什么 就有结果了
// 或者把全部\x66这种解密后得到的相关字符串去搜索就有结果了
// 下面看一下jsfuck对照表,然后解密
// false => ![]
// true => !![]
// undefined => [][[]]
// NaN => +[![]]
// 0 => +[]
// 1 => +!+[]
// 2 => !+[]+!+[]
// 10 => [+!+[]]+[+[]]
// Array => []
// Number => +[]
// String => []+[]
// Boolean => ![]
// Function => []["filter"]
// eval => []["filter"]"constructor"()
// window => []["filter"]["constructor"]("return this")()
// 解码后的代码如下,为了节省字符,使用mrxn123代替代码中的超长字符串
['mmh']["filter"]["constructor"](((['mmh'] + [])["constructor"]['fromCharCode']'apply'))('mmh');
// 根据jsfuck对照表,我们去掉mmh,这样就是熟悉的原滋原味的jsfuck格式的代码了
[]["filter"]["constructor"]((([] + [])["constructor"]['fromCharCode']'apply'))();
// 根据eval对照[]["filter"]"constructor"(),我们只需要把code部分代码直接console.log()出来就好
console.log(((([] + [])["constructor"]['fromCharCode']'apply')));
// 输出:{
// 同样的姿势将开始用mrxn123替换掉的字符串替换回去,回车,OK!JavaScript源码就出现在控制台了
标签: JavaScript 解密