Как я могу деобфусцировать код javaScript? Это здесь (внутри самого последнего тега скрипта).
В основном я знаю, что он делает (запутывает значение атрибута имени логина/пароля формы и добавляет в форму скрытый ввод с именем = 'char' и случайным значением, см. связанный вопрос здесь). Я хочу расшифровать скрипт, чтобы узнать, как он выполняет обфускацию, чтобы я мог имитировать его на стороне сервера (с помощью php).
Этот инструмент не может его декодировать.
Я сделал некоторую деобфускацию, оценив объект hd. Я взял части кода (разделенные точкой с запятой ;) и оценил их:
<script>
var hd =~[];
hd={___:++hd,$$$$:(![]+"")[hd],__$:++hd,$_$_:(![]+"")[hd],_$_:++hd,$_$$:({}+"")[hd],$$_$:(hd[hd]+"")[hd],_$$:++hd,$$$_:(!""+"")[hd],$__:++hd,$_$:++hd,$$__:({}+"")[hd],$$_:++hd,$$$:++hd,$___:++hd,$__$:++hd};
hd.$_=(hd.$_=hd+"")[hd.$_$]+(hd._$=hd.$_[hd.__$])+(hd.$$=(hd.$+"")[hd.__$])+((!hd)+"")[hd._$$]+(hd.__=hd.$_[hd.$$_])+(hd.$=(!""+"")[hd.__$])+(hd._=(!""+"")[hd._$_])+hd.$_[hd.$_$]+hd.__+hd._$+hd.$;
hd.$$=hd.$+(!""+"")[hd._$$]+hd.__+hd._+hd.$+hd.$$;
hd.$=(hd.___)[hd.$_][hd.$_];
console.log('hd: ');
console.dir(hd);
console.log('hd length: ' + Object.keys(hd).length);
</script>
Результат этого вы можете увидеть здесь в консоли браузера.
Тем не менее, последняя часть кода, очевидно, представляет собой функцию, вызывающую саму себя:
hd.$(hd.$(... _+"\"")())();
hd.$ — функция объекта, см. рисунок: 
Но я не знаю, как его расшифровать. Я пытался заменить все экземпляры объекта, например. hd.$$$$, hd.$_$ и т.д. в остальном коде, но результат только как это. Без понятия, как двигаться дальше.