ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

21.12.2009, 00:04
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
И зная этот sig я мог бы, насколько я понимаю, придставляться любым юзером, каким бы пожелал... кхм.
Имей ввиду, что кроме sig есть еще и auth_key, который уникален для каждого юзера.
А именно auth_key = md5(api_id + '_' + viewer_id + '_' + '_' + api_secret_s_vkladki_plateji)
|
|
|

21.12.2009, 00:09
|
|
Познающий
Регистрация: 12.09.2009
Сообщений: 61
Провел на форуме: 818777
Репутация:
19
|
|
Сообщение от ErrorNeo
кстати.
в моем случае вся "эффективная работа" работа идет вообще не с приложением контакта, а исключительно с сервером приложения.
Т.е. если бы я умел формировать sig, то смог бы вообще минуя сервера контакта достигать в нем (контакте) поставленных перед собой задач.
И куков там, естественно, никаких нет. Только sig. И зная этот sig я мог бы, насколько я понимаю, представляться приложению любым юзером, каким бы пожелал... кхм.
вообще странная система какая-то.
но если вы, ребята, так уверены, что secret_api действительно реально выдернуть из флешки....
возможно я попробую)
Реально, не зря написано
Защищенное взаимодействие обеспечивает безопасность транзакций с голосами, отсылки оповещений и обновления статусов. Стандартное взаимодействие в этих случаях невозможно: безопасность при участии клиентской стороны обеспечить невозможно, так как любой клиентский SWF-код декомпилируется.
|
|
|

21.12.2009, 00:14
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме: 4297091
Репутация:
2261
|
|
Сообщение от GlooK
Имей ввиду, что кроме sig есть еще и auth_key, который уникален для каждого юзера.
А именно auth_key = md5(api_id + '_' + viewer_id + '_' + '_' + api_secret_s_vkladki_plateji)
мде.
на самом деле из всей серии запросов мне нужен только один...
запрос к серверу приложения, передающий в POST запросе примерно такие данные:
Код:
sig=0578eca6d293400808e43d939b46c6a3&
uid=9295448&vname=%25D0%2590{бред из знаков процента и цифр}%25D0%25B0
&method={тут метод}&vid=41929817&auth%5Fkey=291d6a6ec2841455b1e9f4799eb116e5
тут имеют место:
1. сиг
2. id первого юзера
3. имя
4. метод
5. id второго юзера
6. аутх-кей.
...
боюсь, что аутх-кей тоже нужен :'(
и, насколько я понимаю, "сурового" способа его получения - нет.
так что, видимо, нужно искать именно "белое" решение, т.е. получать эта значения так, как их получает браузер (?т.е. хз как)
Последний раз редактировалось ErrorNeo; 21.12.2009 в 00:19..
|
|
|

21.12.2009, 00:17
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
браузер получает это все со страницы приложения http://vkontakte.ru/appXXXXXX
Код:
var flashVars = {"api_url":"http:\/\/api.vkontakte.ru\/api.php","api_id":XXXXXX,"api_settings":3,"viewer_id":"XXXXXX","viewer_type":2,"user_id":XXXXXX,"group_id":0,"is_app_user":"1","auth_key":"XXXXXXXXXXXXXX","language":0,"parent_language":0,"debug":0,"domain":"vkontakte.ru","scale":1,"width":"607","height":"590","swf_url":"http:\/\/cs4567.vkontakte.ru\/u45724907\/dada588219143a.zip"};
|
|
|

21.12.2009, 00:22
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме: 4297091
Репутация:
2261
|
|
т.е. без эмулятора флэш тут не обойтись?)
я так понимаю http аналога данного запроса не суещствует 
|
|
|

21.12.2009, 00:27
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
Провел на форуме: 2310282
Репутация:
149
|
|
Ну как же...
1. Авторизуемся в ВК
2. Заходим на страницу http://vkontakte.ru/app123456
3. Парсим HTML и достаем viewer_id и auth_key
4. Формируем запрос POST
|
|
|

21.12.2009, 06:32
|
|
Участник форума
Регистрация: 20.08.2008
Сообщений: 137
Провел на форуме: 2607957
Репутация:
184
|
|
Код:
class API
{
var firstChild;
static var __get__stackCount, __get__timeNow;
function API()
{
} // End of the function
static function init(_secret_code, _api_id, _testMode)
{
apiId = _api_id || _root.api_id;
userId = _root.user_id;
groupId = _root.group_id;
viewerId = _testMode || _root.viewer_id;
viewerType = _root.viewer_type;
isAppUser = _root.is_app_user;
authKey = _root.auth_key;
secretCode = _secret_code;
APIversion = "2.0";
if (_testMode)
{
testMode = true;
} // end if
API.getServerTime(function (_time)
{
var _loc1 = _time * 1000;
var _loc2 = new Date().getTime();
deltaT = _loc2 - _loc1;
lastReq = _loc1;
API.onInit(_time ? (true) : (false));
}, null, null, true);
setInterval(API.send, 400);
setInterval(API.tv_send, 400);
} // End of the function
static function get timeNow()
{
var _loc2 = new Date().getTime();
var _loc1 = _loc2 - API.deltaT;
return (Math.floor(_loc1 / 1000));
} // End of the function
static function sendRequest(_method, _params, _onComplete, _obj)
{
_params.method = _method;
_params.api_id = API.apiId;
_params.v = API.APIversion;
if (API.testMode)
{
_params.test_mode = 1;
} // end if
var _loc2 = new LoadVars();
var _loc3 = new Array();
for (var _loc4 in _params)
{
_loc2[_loc4] = _params[_loc4];
_loc3.push(_loc4 + "=" + _params[_loc4]);
} // end of for...in
_loc3.sort();
var _loc8 = API.viewerId + _loc3.join("") + API.secretCode;
_loc2.sig = md5.encrypt(_loc8);
Последние 2 строчки - sig.
Код:
var _loc8 = API.viewerId + _loc3.join("") + API.secretCode;
_loc2.sig = md5.encrypt(_loc8);
обьясните по человечески что такое _loc3.join("") и откуда оно берётся, всё остальное есть.
Обьясните на примере этой батвы, какой алгоритм у этого sig
Последний раз редактировалось Dr1ver; 21.12.2009 в 11:47..
|
|
|

21.12.2009, 11:35
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме: 4297091
Репутация:
2261
|
|
Сообщение от GlooK
Ну как же...
1. Авторизуемся в ВК
2. Заходим на страницу http://vkontakte.ru/app123456
3. Парсим HTML и достаем viewer_id и auth_key
4. Формируем запрос POST
(!!!)
да, на странице приложения действительно можно спарсить
api_id, viewer_id, user_id и auth_key, и несколько других параметров, передаваемых в приложение через flashVars.
Ну а сразу после flashVars идет как раз адрес приложения-swf'ки.
Так что проблема теперь остается только за формированием sig,
для чего, видимо, потребуется декомпилить эту swf'ку.
Dr1ver - sig это обычная ф-ция md5(user_id,request_params,secret_api).
Т.е., к примеру, md5 от строки
6492api_id=4method=getFriendsv=2.0secret
Насколько я понял, _loc3 это массив из параметров и их значений. Ну а join, видимо, команда для превращения массива в строку.
Последний раз редактировалось ErrorNeo; 21.12.2009 в 12:10..
|
|
|

21.12.2009, 11:45
|
|
Участник форума
Регистрация: 20.08.2008
Сообщений: 137
Провел на форуме: 2607957
Репутация:
184
|
|
Сообщение от ErrorNeo
(!!!)
Dr1ver - sig это обычная ф-ция md5(user_id,request_params,secret_api).
Т.е., к примеру, md5 от строки
6492api_id=4method=getFriendsv=2.0secret
где 6492 - id юзера, 4 - id группы (как я понял), метод это метод, ну и v= {secret_api}
это понятно, мне бы request_params , я их в упор не вижу, я на AS переменную от функции не отличаю, а там целый класс.
|
|
|

21.12.2009, 11:56
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме: 4297091
Репутация:
2261
|
|
APIversion = "2.0";
apiId = _api_id || _root.api_id;
метод не нашел, но его ты ведь сам выбираешь для каждого отдельного запроса.
Видимо это глобальная переменная, не указанная в твоем коде
_params.method = _method;
_params.api_id = API.apiId;
_params.v = API.APIversion;
эти 3 строки формируют массив, и он превращается в строку:
api_id=4 method=getFriends v=2.0
похоже?
ну а перед строкой ставится user_id - 6492, а в конце добавляется secret_api и получается
6492 api_id=4 method=getFriends v=2.0secret
от этого всего берется md5 и получается sig. 
вообще спс за приведенный код. наглядный
Последний раз редактировалось ErrorNeo; 21.12.2009 в 12:00..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|