не могу понять что делает код
прошу помочь раскурить код, что он делает?
Код:
setTimeout(function(){
var t,r,a,f, fKSBadi={"piBCBDQ":+((!+[]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]))};
t = document.createElement('div');
t.innerHTML="<a href='/'>x</a>";
t = t.firstChild.href;r = t.match(/https?:///)[0];
t = t.substr(r.length); t = t.substr(0,t.length-1);
a = document.getElementById('jschl-answer');
f = document.getElementById('challenge-form');
;fKSBadi.piBCBDQ+=+((!+[]+!![]+!![]+!![]+[])+(+[]));fKSBadi.piBCBDQ-=+!![];fKSBadi.piBCBDQ+=+((+!![]+[])+(+[]));fKSBadi.piBCBDQ*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));a.value = parseInt(fKSBadi.piBCBDQ, 10) + t.length;
f.submit();
}, 4000);
}, false);
var t,r,a,f, fKSBadi={"piBCBDQ":+((!+[]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]))};
t = document.createElement('div');
t.innerHTML="<a href='/'>x</a>";
t = t.firstChild.href;r = t.match(/https?:///)[0];
t = t.substr(r.length); t = t.substr(0,t.length-1);
a = document.getElementById('jschl-answer');
f = document.getElementById('challenge-form');
;fKSBadi.piBCBDQ+=+((!+[]+!![]+!![]+!![]+[])+(+[]));fKSBadi.piBCBDQ-=+!![];fKSBadi.piBCBDQ+=+((+!![]+[])+(+[]));fKSBadi.piBCBDQ*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));a.value = parseInt(fKSBadi.piBCBDQ, 10) + t.length;
f.submit();
}, 4000);
}, false);
Получаем href
Потом идут "Регулярные выражения" типа обрезания or вытянуть
Потом что-то делаеться с длиной переменой из innerHTML
Потом типа поиск чевота два раза в DOM (jschl-answer - challenge-form)
А вся Кухня в этом
Код:
fKSBadi={"piBCBDQ":+((!+[]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]))};
fKSBadi.piBCBDQ+=+((!+[]+!![]+!![]+!![]+[])+(+[]));
fKSBadi.piBCBDQ-=+!![];
fKSBadi.piBCBDQ+=+((+!![]+[])+(+[]));
fKSBadi.piBCBDQ*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));
a.value = parseInt(fKSBadi.piBCBDQ, 10) + t.length;
fKSBadi.piBCBDQ+=+((!+[]+!![]+!![]+!![]+[])+(+[]));
fKSBadi.piBCBDQ-=+!![];
fKSBadi.piBCBDQ+=+((+!![]+[])+(+[]));
fKSBadi.piBCBDQ*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));
a.value = parseInt(fKSBadi.piBCBDQ, 10) + t.length;
(и этот секретнный код должен соотвственно совпадать на сервере т.к на сервере стоит тот-же механизм)
Потом задержка 4sec
все бы ничего, я вижу что href подсовывается https, значит должен быть url домена но я не вижу его в коде, при чем реализованно как то так, что снифером не ловится. При отправке учетных данных сервер выкидывает 503 ошибку но до ошибки кидает вот этот код. после чего яваскрипт его обрабатывает и выполняется вход, НО СНИФЕРОМ обнаруживается только первичных вход когда получили 503 ошибку. Не глубоки мои познания в JavaScript можете пример более детально разобрать этот код? Мне надо понять как он формирует url с параметрами для перехода.
Код:
fKSBadi.piBCBDQ*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));
Код:
<script type="text/javascript">
//<![CDATA[
(function(){
var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)};
b(function(){
var a = document.getElementById('cf-content');a.style.display = 'block';
setTimeout(function(){
var t,r,a,f, fKSBadi={"piBCBDQ":+((!+[]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]))};
t = document.createElement('div');
t.innerHTML="<a href='/'>x</a>";
t = t.firstChild.href;r = t.match(/https?:///)[0];
t = t.substr(r.length); t = t.substr(0,t.length-1);
a = document.getElementById('jschl-answer');
f = document.getElementById('challenge-form');
;fKSBadi.piBCBDQ+=+((!+[]+!![]+!![]+!![]+[])+(+[]));fKSBadi.piBCBDQ-=+!![];fKSBadi.piBCBDQ+=+((+!![]+[])+(+[]));fKSBadi.piBCBDQ*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));a.value = parseInt(fKSBadi.piBCBDQ, 10) + t.length;
f.submit();
}, 4000);
}, false);
})();
//]]>
</script>
//<![CDATA[
(function(){
var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)};
b(function(){
var a = document.getElementById('cf-content');a.style.display = 'block';
setTimeout(function(){
var t,r,a,f, fKSBadi={"piBCBDQ":+((!+[]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]))};
t = document.createElement('div');
t.innerHTML="<a href='/'>x</a>";
t = t.firstChild.href;r = t.match(/https?:///)[0];
t = t.substr(r.length); t = t.substr(0,t.length-1);
a = document.getElementById('jschl-answer');
f = document.getElementById('challenge-form');
;fKSBadi.piBCBDQ+=+((!+[]+!![]+!![]+!![]+[])+(+[]));fKSBadi.piBCBDQ-=+!![];fKSBadi.piBCBDQ+=+((+!![]+[])+(+[]));fKSBadi.piBCBDQ*=+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));a.value = parseInt(fKSBadi.piBCBDQ, 10) + t.length;
f.submit();
}, 4000);
}, false);
})();
//]]>
</script>
Код:
<form id="challenge-form" action="/cdn-cgi/l/chk_jschl" method="get">
<input type="hidden" name="jschl_vc" value="07c69e2c277d7c2f74353eb560bcb74a"/>
<input type="hidden" name="pass" value="1435952215.999-wZFS7TiD0u"/>
<input type="hidden" id="jschl-answer" name="jschl_answer"/>
</form>
<input type="hidden" name="jschl_vc" value="07c69e2c277d7c2f74353eb560bcb74a"/>
<input type="hidden" name="pass" value="1435952215.999-wZFS7TiD0u"/>
<input type="hidden" id="jschl-answer" name="jschl_answer"/>
</form>
Код:
+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]))
че это за числовые выражения такие есть где нибудь аббревиатура на это?
Вообще, мне искренне непонятно, почему ты снифером не может окончательный URL перехватить.
Не знаю сниффер не показывает переход get который в этом коде.
все записи пересмотрел.
На счет этого кода. Придется костыли лепить. По крайней мере выяснил что чему равно))
+!![] = 1
!+[] = 1
(+[]) = 0
понял кароч как это дело щитается, осталось на С++ реализовать вычисление.
Теперь по теме
Есть строка :
Код:
t.innerHTML="<a href='/'>x</a>";
Теперь другое есть
На счет этого кода. Придется костыли лепить. По крайней мере выяснил что чему равно))
+!![] = 1
!+[] = 1
(+[]) = 0
+!![] = 1
!+[] = 1
(+[]) = 0
Почему так~
Здесь есть подсказка
Код:
a.value = parseInt(fKSBadi.piBCBDQ, 10) + t.length;
Что-то мне думы пришли хост-free и Вам нужно жить по правилом free.
Такую 503 ошибку можно эмулеровать введу не хватки мощъности сервера.
А все всем спасибо. Научил парсер считывать значения (+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![])) ) Не вижу смысла обфусцировать код в javascript)))) он все равно выполняется на стороне клиента, а значит его работу все равно можно понять.
Цитата: @pixo $oft
У меня для тебя плохие новости — ты столкнулся с обфусцированным кодом. Поэтому или меняй его, чтобы смотреть промежуточные значения, или отлаживай с той же самой целью.
Вообще, мне искренне непонятно, почему ты снифером не может окончательный URL перехватить.
Вообще, мне искренне непонятно, почему ты снифером не может окончательный URL перехватить.
Сниффером я увидел get только когда после post запроса до 503 ошибки получил контент, затем этот контент запустил отдельно в браузере. Вот только тогда я этот get и поймал сниффером. По другому он не отображается
Вот видишь, просто нужно было нужный момент поймать. Ну и да, т.к. код на стороне клиента выполняется, в целом его не так сложно заставить работать на себя ;-)