Como descodificar este código hexadecimal javascript? [fechado]
Acabei de encontrar um código para o meu entendimento .qualquer um pode ajudar-me a descodificar o código.
var _0x98fd = ["\x2E\x6F\x76\x65\x72\x6C\x61\x70\x62\x6C\x61\x63\x6B\x62\x67\x2C\x20\x2E\x73\x6C\x69\x64\x65\x4C\x65\x66\x74", "\x2E\x77\x73\x6D\x65\x6E\x75\x63\x6F\x6E\x74\x65\x6E\x74", "\x6D\x65\x6E\x75\x6F\x70\x65\x6E", "\x61\x64\x64\x43\x6C\x61\x73\x73", "\x6D\x65\x6E\x75\x63\x6C\x6F\x73\x65", "\x72\x65\x6D\x6F\x76\x65\x43\x6C\x61\x73\x73", "\x68\x61\x73\x43\x6C\x61\x73\x73", "\x63\x6C\x69\x63\x6B", "\x23\x6E\x61\x76\x54\x6F\x67\x67\x6C\x65", "\x6D\x72\x67\x69\x6E\x6C\x65\x66\x74", "\x74\x6F\x67\x67\x6C\x65\x43\x6C\x61\x73\x73", "\x2E\x77\x73\x6D\x65\x6E\x75\x63\x6F\x6E\x74\x61\x69\x6E\x65\x72", "\x6F\x6E", "\x23\x6E\x61\x76\x54\x6F\x67\x67\x6C\x65\x2C\x2E\x6F\x76\x65\x72\x6C\x61\x70\x62\x6C\x61\x63\x6B\x62\x67", "\x3C\x73\x70\x61\x6E\x20\x63\x6C\x61\x73\x73\x3D\x22\x77\x73\x6D\x65\x6E\x75\x2D\x63\x6C\x69\x63\x6B\x22\x3E\x3C\x69\x20\x63\x6C\x61\x73\x73\x3D\x22\x77\x73\x6D\x65\x6E\x75\x2D\x61\x72\x72\x6F\x77\x20\x66\x61\x20\x66\x61\x2D\x61\x6E\x67\x6C\x65\x2D\x64\x6F\x77\x6E\x22\x3E\x3C\x2F\x69\x3E\x3C\x2F\x73\x70\x61\x6E\x3E", "\x70\x72\x65\x70\x65\x6E\x64", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2C\x20\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62\x2C\x20\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62\x2D\x73\x75\x62", "\x68\x61\x73", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x6C\x69\x73\x74\x20\x6C\x69", "\x2E\x6D\x65\x67\x61\x6D\x65\x6E\x75", "\x73\x6C\x6F\x77", "\x73\x6C\x69\x64\x65\x54\x6F\x67\x67\x6C\x65", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x6C\x69\x73\x74", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x6D\x6F\x62\x69\x6C\x65", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75", "\x73\x69\x62\x6C\x69\x6E\x67\x73", "\x77\x73\x6D\x65\x6E\x75\x2D\x72\x6F\x74\x61\x74\x65", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x61\x72\x72\x6F\x77", "\x63\x68\x69\x6C\x64\x72\x65\x6E", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x73\x75\x62\x6D\x65\x6E\x75\x2D\x73\x75\x62\x2D\x73\x75\x62", "\x2E\x77\x73\x6D\x65\x6E\x75\x2D\x63\x6C\x69\x63\x6B"];
$(function() {
var _0x5c8dx1 = $(_0x98fd[0]);
var _0x5c8dx2 = $(_0x98fd[1]);
var _0x5c8dx3 = function() {
$(_0x5c8dx1)[_0x98fd[5]](_0x98fd[4])[_0x98fd[3]](_0x98fd[2])
};
var _0x5c8dx4 = function() {
$(_0x5c8dx1)[_0x98fd[5]](_0x98fd[2])[_0x98fd[3]](_0x98fd[4])
};
$(_0x98fd[8])[_0x98fd[7]](function() {
if (_0x5c8dx2[_0x98fd[6]](_0x98fd[2])) {
$(_0x5c8dx4)
} else {
$(_0x5c8dx3)
}
});
_0x5c8dx2[_0x98fd[7]](function() {
if (_0x5c8dx2[_0x98fd[6]](_0x98fd[2])) {
$(_0x5c8dx4)
}
});
$(_0x98fd[13])[_0x98fd[12]](_0x98fd[7], function() {
$(_0x98fd[11])[_0x98fd[10]](_0x98fd[9])
});
$(_0x98fd[18])[_0x98fd[17]](_0x98fd[16])[_0x98fd[15]](_0x98fd[14]);
$(_0x98fd[18])[_0x98fd[17]](_0x98fd[19])[_0x98fd[15]](_0x98fd[14]);
$(_0x98fd[23])[_0x98fd[7]](function() {
$(_0x98fd[22])[_0x98fd[21]](_0x98fd[20])
});
$(_0x98fd[31])[_0x98fd[7]](function() {
$(this)[_0x98fd[25]](_0x98fd[24])[_0x98fd[21]](_0x98fd[20]);
$(this)[_0x98fd[28]](_0x98fd[27])[_0x98fd[10]](_0x98fd[26]);
$(this)[_0x98fd[25]](_0x98fd[29])[_0x98fd[21]](_0x98fd[20]);
$(this)[_0x98fd[25]](_0x98fd[30])[_0x98fd[21]](_0x98fd[20]);
$(this)[_0x98fd[25]](_0x98fd[19])[_0x98fd[21]](_0x98fd[20]);
});
});
Não sou novo no Javascript e é confuso para mim.
2
Author: CodingIntrigue, 2015-05-12
3 answers
Isso é Javascript ofuscado e minificado. O array de caracteres Hex decodifica para um array de nomes de métodos, nomes de classes e seletores de jQuery:
".overlapblackbg, .slideLeft"
".wsmenucontent"
"menuopen"
"addClass"
"menuclose"
"removeClass"
"hasClass"
"click"
"#navToggle"
"mrginleft"
"toggleClass"
".wsmenucontainer"
"on"
"#navToggle,.overlapblackbg"
"<span class="wsmenu-click"><i class="wsmenu-arrow fa fa-angle-down"></i></span>"
"prepend"
".wsmenu-submenu, .wsmenu-submenu-sub, .wsmenu-submenu-sub-sub"
"has"
".wsmenu-list li"
".megamenu"
"slow"
"slideToggle"
".wsmenu-list"
".wsmenu-mobile"
".wsmenu-submenu"
"siblings"
"wsmenu-rotate"
".wsmenu-arrow"
"children"
".wsmenu-submenu-sub"
".wsmenu-submenu-sub-sub"
".wsmenu-click"
Também escrevi um descodificador rápido, num JSFiddle.,
Http://jsfiddle.net/TrueBlueAussie/1jwb60pe/1/
Que surgiu com isto:$(function() {
var $menu = $(".overlapblackbg, .slideLeft");
var $wsmenucontent = $(".wsmenucontent");
var openMenu = function() {
$($menu).removeClass("menuclose").addClass("menuopen")
};
var closeMenu = function() {
$($menu).removeClass("menuopen").addClass("menuclose")
};
$("#navToggle").click(function() {
if ($wsmenucontent.hasClass("menuopen")) {
$(closeMenu)
} else {
$(openMenu)
}
});
$wsmenucontent.click(function() {
if ($wsmenucontent.hasClass("menuopen")) {
$(closeMenu)
}
});
$("#navToggle,.overlapblackbg").on(click, function() {
$(".wsmenucontainer").toggleClass("mrginleft")
});
$(".wsmenu-list li").has(".wsmenu-submenu, .wsmenu-submenu-sub, .wsmenu-submenu-sub-sub").prepend("<span class="wsmenu-click"><i class="wsmenu-arrow fa fa-angle-down"></i></span>");
$(".wsmenu-list li").has(".megamenu").prepend("<span class="wsmenu-click"><i class="wsmenu-arrow fa fa-angle-down"></i></span>");
$(".wsmenu-mobile").click(function() {
$(".wsmenu-list").slideToggle("slow")
});
$(".wsmenu-click").click(function() {
$(this).siblings(".wsmenu-submenu").slideToggle("slow");
$(this).children(".wsmenu-arrow").toggleClass("wsmenu-rotate");
$(this).siblings(".wsmenu-submenu-sub").slideToggle("slow");
$(this).siblings(".wsmenu-submenu-sub-sub").slideToggle("slow");
$(this).siblings(".megamenu").slideToggle("slow");
});
});
A vantagem do descodificador, é claro, é que pode continuar a ajustá-lo para fazer mais descodificação sem ter de o refazer manualmente.
É interessante notar que a versão decodificada realmente mostra que eles cometeram erros, como embrulhar objetos jQuery uma segunda vez!
Por exemplo
var _0x5c8dx1 = $(".overlapblackbg, .slideLeft");
Depois
$(_0x5c8dx1).removeClass("menuclose").addClass("menuopen")
Também usa efeitos secundários obscuros para executar funções como:
$(closeMenu)
Que é um atalho para {[5] } que irá disparar a função imediatamente.
3
Author: Gone Coding, 2015-05-12 16:36:44
Isto pode ajudar-te a começar.
var _0x98fd = [".overlapblackbg, .slideLeft",
".wsmenucontent",
"menuopen",
"addClass",
"menuclose",
"removeClass",
"hasClass",
"click",
"#navToggle",
"mrginleft",
"toggleClass",
".wsmenucontainer",
"on",
"#navToggle,.overlapblackbg",
'<span class="wsmenu-click"><i class="wsmenu-arrow fa fa-angle-down"></i></span>',
"prepend.wsmenu-submenu, .wsmenu-submenu-sub, .wsmenu-submenu-sub-sub",
"has",
".wsmenu-list li",
".megamenu",
"slow",
"slideToggle",
".wsmenu-list",
".wsmenu-mobile",
".wsmenu-submenu",
"siblings",
"wsmenu-rotate",
".wsmenu-arrow",
"children",
".wsmenu-submenu-sub",
".wsmenu-submenu-sub-sub",
".wsmenu-click"
];
Significa isto: var _0x5c8dx1 = $(_0x98fd[0]);
é isto var _0x5c8dx1 = $(".overlapblackbg, .slideLeft");
0
Author: Ted, 2015-05-12 15:30:18
Eis uma abordagem:
var _0x98fd = [".overlapblackbg, .slideLeft", ".wsmenucontent", "menuopen", "addClass", "menuclose", "removeClass", "hasClass", "click", "#navToggle", "mrginleft", "toggleClass", ".wsmenucontainer", "on", "#navToggle,.overlapblackbg", '<span class="wsmenu-click"><i class="wsmenu-arrow fa fa-angle-down"></i></span>', "prepend", ".wsmenu-submenu, .wsmenu-submenu-sub, .wsmenu-submenu-sub-sub", "has", ".wsmenu-list li", ".megamenu", "slow", "slideToggle", ".wsmenu-list", ".wsmenu-mobile", ".wsmenu-submenu",
"siblings", "wsmenu-rotate", ".wsmenu-arrow", "children", ".wsmenu-submenu-sub", ".wsmenu-submenu-sub-sub", ".wsmenu-click"
];
$(function() {
var headings = $(_0x98fd[0]);
var emptyJ = $(_0x98fd[1]);
var backdrop = function() {
$(headings)[_0x98fd[5]](_0x98fd[4])[_0x98fd[3]](_0x98fd[2]);
};
var _element = function() {
$(headings)[_0x98fd[5]](_0x98fd[2])[_0x98fd[3]](_0x98fd[4]);
};
/**
* equivalent to: $("#navToggle").click(function(){
* just follow the array and is positions
*/
$(_0x98fd[8])[_0x98fd[7]](function() {
if (emptyJ[_0x98fd[6]](_0x98fd[2])) {
$(_element);
} else {
$(backdrop);
}
});
emptyJ[_0x98fd[7]](function() {
if (emptyJ[_0x98fd[6]](_0x98fd[2])) {
$(_element);
}
});
$(_0x98fd[13])[_0x98fd[12]](_0x98fd[7], function() {
$(_0x98fd[11])[_0x98fd[10]](_0x98fd[9]);
});
$(_0x98fd[18])[_0x98fd[17]](_0x98fd[16])[_0x98fd[15]](_0x98fd[14]);
$(_0x98fd[18])[_0x98fd[17]](_0x98fd[19])[_0x98fd[15]](_0x98fd[14]);
$(_0x98fd[23])[_0x98fd[7]](function() {
$(_0x98fd[22])[_0x98fd[21]](_0x98fd[20]);
});
$(_0x98fd[31])[_0x98fd[7]](function() {
$(this)[_0x98fd[25]](_0x98fd[24])[_0x98fd[21]](_0x98fd[20]);
$(this)[_0x98fd[28]](_0x98fd[27])[_0x98fd[10]](_0x98fd[26]);
$(this)[_0x98fd[25]](_0x98fd[29])[_0x98fd[21]](_0x98fd[20]);
$(this)[_0x98fd[25]](_0x98fd[30])[_0x98fd[21]](_0x98fd[20]);
$(this)[_0x98fd[25]](_0x98fd[19])[_0x98fd[21]](_0x98fd[20]);
});
});
Amostra de violino: https://jsfiddle.net/0c42rgof/
0
Author: Hackerman, 2015-05-12 15:41:20