LINUX.ORG.RU

Реверс-инженеринг speedtest.net


0

0

Хочу сделать простую утилиту для тестирования скорости канала в интернет с помощью сервиса speedtest.net, но без применения браузера и флеша.

Сами измерения прозиводятся очень примитивно: там просто по HTTP скачиваются/закачиватся данные. Проблема в получении PNG-картинки с результатом. Для её получения флеш-ролик POST'ит примерно такие данные на "http://speedtest.net/api/api.php":

hash=164ca8e4e7c12cd2f1540eb5996c1779&serverid=970&download=9067&upload=24026&ping=53
И в результате скрипт с сервера выдаёт ответ типа
resultid=505978957&date=6%2F29%2F2009&time=4%3A49+AM&rating=0
и получаем ссылку на PNG: http://speedtest.net/result/505978957.png.

Проблема в получении хеша. Опытным путём было установлено, что хеш зависит только от скорости скачивания, закачки и от времени пинга («download=9067&upload=24026&ping=53»). Если хеш не соответствует этим данным, то выдаётся resultid=0.

Есть ли способ обпределить каким именно алгоритмом вычисляется хеш и как для этого обрабатываются исходные данные? Подозреваю что там md5. Если способа определить алгоритм хеширования не существует (а я в этом почти уверен), то посоветуйте какой-нибудь хороший декомпилятор actionscript'а. Или какой-нибудь другой способ расковыривания SWF-файлов...

Deleted

Судя по всему, это не просто хешь, это ID записи в базе с результатами, и зависит он похоже не только от параметров скорости, а скорее всего, от них вообще не зависит. Об этом свидетельствует тот факт, что картинка "помнит" время замера, -- попробуйте менять цифорки в валидном адресе картинки, увидете не только "свежак", но и старые.

vnovouhov
()
Ответ на: комментарий от vnovouhov

> Судя по всему, это не просто хешь, это ID записи в базе с результатами, и зависит он похоже не только от параметров скорости, а скорее всего, от них вообще не зависит. Об этом свидетельствует тот факт, что картинка "помнит" время замера, -- попробуйте менять цифорки в валидном адресе картинки, увидете не только "свежак", но и старые.

Нет. Картинки там просто хранятся статически. Т.е. они не на лету генерируются, а генерируются скриптом api.php, складываются в определённую диру и всё. Потому там есть старые результаты. И время замера нигде не запоминатеся - берётся текущее. Вот например новая ссылка, полученная отправкой старых данные (которые в первом посте):

http://speedtest.net/result/505994739.png

Результат тот же, время новое.

Вот пример кода:

wget --post-data='hash=164ca8e4e7c12cd2f1540eb5996c1779&serverid=970&download=9067&u pload=24026&ping=53' -O - --quiet 'http://speedtest.net/api/api.php'

serverid можно менять как угодно.

Deleted
()
Ответ на: комментарий от summatus

> flare swf попробуй.

Пробовал. Каша какая-то получается вместо скрипта. Сейчас нашёл SoftInk SWF Decompiler, он намного более читабельный листинг выдаёт, но в триальной версии только первые два скрипта декодирует. Зато он нашёл нечто с именем __Packages.com.meychi.ascrypt.MD5, в этом направлении и буду копать, но это уже вечером...

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.