Всем здравствуйте. Решил я написать бота для игры вконтакте (Метро 2033). Узнал куда бот шлёт свои запросы, но в запросах несколько параметров показались мне непонятными. Для этого я декомпилировал флешку игры. Получил файлы ActionScript, посмотрел их, но так как я ничего не понимаю в ActionScript - ничего и не понял. Прошу помощи у понимающих в этом людей. Игра шлёт параметры GETом. Мне хотелось бы узнать откуда берутся данные параметры: 1) auth - при каждом запросе к игре разный; 2) session - меняется при перезапуске игры; 3) hash - каждый раз разный. Вот файл с ActionScript'ом данной игры: http://zalil.ru/34155457 Всем заранее спасибо.
Насколько знаю, auth и hash из вк берутся. Когда писал бота для мамбы, хеш был разный для разных пользователей. Тут по моему надо смотреть api вконтакте, auth от туда берется.
Я сначала тоже подумал что auth это auth_key контактовский, но это не так. К тому же этот auth каждый запрос разный. Auth_key передаётся не понятно как, возможно в каком то из параметров но шифрованный. Длинна параметров, может быть чем то поможет. auth - 32 символа (скорее всего чего либо мд5) session - 10 символов hash - 62 символа
Какой же это ActionScript, это AVM2 Pcode. Открой в нормальном декомпиляторе, например в Action Script Viewer, и там будет ActionScript вполне читаемый и понятный.
Вот, заливаю новый: http://zalil.ru/34155457 Сижу туплю с ним, вроде там получше но всё равно не могу понять что с чем соединять надо =(
Ну а что тут тупить, ActionScript разновидность ECMAScript, т.е. зная скажем JavaScript не составит труда разобраться и в нем. Зри в chat.ChatClient и т.д.
Ну а я к сожалению незнаю JS. Вот мне кажется нужно где то здесь копать: Code: public function request(_arg1:String, _arg2:Object):void{ var method:* = _arg1; var opts:* = _arg2; if (!opts){ opts = {}; }; if (!opts.params){ opts.params = {}; }; if (Platform.instance.session){ opts.params.session = Platform.instance.session; }; if (this.sess_){ opts.params.sess = this.sess_; }; opts.params.method = method; opts.params.user = Platform.instance.viewer; opts.params.hash = uint((Math.random() * 4294967295)); delete opts.params.auth; opts.params.auth = MD5.hash((JSONServer.signature(opts.params) + Platform.instance.auth)); this.last_ = opts; Chain.add(function (){ return (srv_.request(method, opts)); }, ((opts.at) || (Chain.AFTER))); } так же думаю надо смотреть тут: Code: public class JSONServer { .... .... .... public static function signature(_arg1:Object):String{ var _local3:String; var _local4:String; var _local2:Array = []; for (_local3 in _arg1) { _local2.push(((_local3 + "=") + _arg1[_local3])); }; _local2.sort(); _local4 = ""; for (_local3 in _local2) { _local4 = (_local4 + _local2[_local3]); }; return (_local4); } } Насколько я понял(возможно я не прав) что hash это случайное число, а auth это md5(чтото+auth_key). А вот с session вобще ничего не понял=(
чтооооо?????????? вы хоть поняли, что написали? не надо вводить людей в заблюждение. ActionScript - это вам не JavaScript (ООП и Прототипно-ориентированное Прогр. как бы намекают). не все диалекты экмаскрипт являются вариациями экмаскрипта.
Тоооо!!!!!!! Еще раз ActionScript это диалект ECMAScript. Так точно, а Вы нет судя по: That's not my point. Воооу никто, никуда, никому не вводит а тем более в какое-то заблюждение(это где вообще?!). Я и не говорил что они идентичны, как минимум подходы к ООП у каждого свои, но в базисном синтаксисе они очень схожи. И зная один разобраться в коде другого не составит труда. That's my point exactly.