Wordstat поменял дизайн на мгновение - ждем перемен

Elbran
На сайте с 29.03.2009
Offline
78
#61

Ура-а-а-а-а, раскодировал наконец-то!!!

Домены по 95р (http://reg.ru-tbf.ru/), Сервис по проверке ссылок + генератор статей с уникальностью 95% (http://backlinksmanager.ru/) ICQ: 338-814-942
WN
На сайте с 02.02.2012
Offline
15
#62
Elbran:
Ура-а-а-а-а, раскодировал наконец-то!!!

может поделишься? :)

Z1
На сайте с 09.12.2005
Offline
164
#63


//переменные
$answer = '.....';// в этой переменной ответ яндекса на аякс-запрос
$useragent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0';//тут свой юзер агент
$fuid01 = '.....';// это кука fuid01, которую слали яндексу

//ниже собственно раскодировка

$obj = json_decode($answer);
$l = $obj->data;
$h = substr($useragent, 0, 25) . $fuid01 . 'I keep watch over you ;)';
$str = "";
for ($g = 0; $g < strlen($l); $g++)
{
$str.= chr(ord($l[$g]) ^ ord($h[$g % strlen($h)]));
}
echo urldecode($str);

До раскодировки и после неё, думаю, разберетесь.

Elbran
На сайте с 29.03.2009
Offline
78
#64

zweroboy1, спсб за json_decode, никак не мог найти функцию раскодирования этого json, эмулировать раскодирование приходилось 🤪

с этой функцией поинтерестнее конечно стало жить :)

Б
На сайте с 10.08.2013
Offline
1
#65
zweroboy1:
До раскодировки и после неё, думаю, разберетесь.

не получается перенести на перл :(

в $answer идёт всё содержимой между { и } (включая сами скобки) ?

что конкретно делает эта строка:

$str.= chr(ord($l[$g]) ^ ord($h[$g % strlen($h)]));

?

сейчас на перле код выглядит так, может кто может подкорректировать?

my $obj = decode_json($answer);
my $l = $obj->{data};
my $h = substr($useragent, 0, 25) . $fuid01 . 'I keep watch over you ;)';
my $str = '';

for(my$i=0;$i<length$l;$i++){
$str.= chr(ord(substr($l,$i,1)) ^ ord(substr($h, $i % length($h),1) ));
}
print uri_unescape($str);

на выходе как-то так:

lAyhjr'▒v\;1h(
}jg<&/fcD{ lqw'iSt:8[ > -KF::chEo@53H~ g|bK2xsLv, Q.&Ckn4D
INq
rb"jS|*)jkvMZSn+yy'hDBQ6j'Z}HAf jB;OAZvh*5#;9P'6Mfhmpt`4rrbuMu?>
!lo?+f'WM6#*Q=Xq%K)>W\v$,6m5@tpr#H.e,▒]T{X2C{?rbYx5ONX3,Gl"\+?m!JfxdM}(?uMQO`?#0d|=+5[YX6^35lx`3`JDR4Qo e
e+0\*g79"mkud?1MANS"+p$
d4Z/QrI-CTw6?9ii▒o0n&'r▒|7yM3ZGC$;zGn@Irr*y AQPD[`O0T:{wZ3K>qy_]O3qa~<+_
Z1
На сайте с 09.12.2005
Offline
164
#66

буквоед, $answer - это весь ответ яндекса, вида

{"data":"hX8L^^\u0002@[ZUN\\r[\\A\\6V\u0017\fq\u0012\u0004^\u0016\u0015\u0006\u0 001\u0016\u0006r\u0017R$\u0016W\u0003\u0011\\I>\u0 019)Cjt\bE\u0013jg.sB\u0000}\u0003t\r\u001cg\u000 7\u0005jV .............}

^ - "Побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)" http://www.php.net/manual/ru/language.operators.bitwise.php

В той строке каждый символ из $l переводится в ASCII-код, затем с помощью этого ^ сравнивается с ASCII-кодом соответствующего символа ключа $h, а затем результат сравнения переводится обратно из ASCII-кода в символ.

Вот мануал - http://ua2.php.net/ord http://ua2.php.net/chr

Как в перле будет - не знаю, я на нём не пишу.

Elbran
На сайте с 29.03.2009
Offline
78
#67

Блин, опять яндексойды что то химичат. опять все парсеры перестали работать 😡

Походу, нужно подождать недельку, пока все поустаканиться, и переписывать парсеры заного.

Мдя, скоро придется эмулятор Javacript писать на php 😂

Б
На сайте с 10.08.2013
Offline
1
#68
zweroboy1:
В той строке каждый символ из $l переводится в ASCII-код, затем с помощью этого ^ сравнивается с ASCII-кодом соответствующего символа ключа $h, а затем результат сравнения переводится обратно из ASCII-кода в символ.

ок, но ведь там в ответе кириллица utf-8, которая далеко за пределами таблицы ASCII

т.е. например в перле "print chr 65" - даст латинскую A

но чтобы получить "И" на кириллице, нужно уже "print chr 0x418"

при этом "print ord 'И'" выдаст 208

в пхп не так?

emariaru
На сайте с 26.10.2010
Offline
73
#69

ага, изменили кодирование

теперь в ответе еще приходит key, который вызывается на стороне клиента

а сама функция вот эта вроде

var key = navigator['userAgent']['substr'](0, 25) + $['cookie']('fuid01') + eval(data['key']);

var edata = '';

for (var i = 0; i < data['data']['length']; i++) {

edata = edata + String['fromCharCode'](data['data']['charCodeAt'](i) ^ key['charCodeAt'](i % key['length']))

}

Elbran
На сайте с 29.03.2009
Offline
78
#70

гыг, почти вломал. осталось технические детали, завтра (точнее сегодня уже ) точно доделаю.

Эх, яндексоды-яндексойды. Ну не ужели никак не допрет, что если то, что в открытом доступе - всеравно парсить будут.

лучше бы API сделали, тогда бы и нагрузка на сервак была меньше (кодировать бы не пришлось, да и инвы нам парсерам меньше надо, а не весь тот HTML, который пользователю показывают)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий