Сейчас на форуме: zds, UniSoft (+5 невидимых)

 eXeL@B —› Программирование —› Клиент-Сервер (Delphi)
<< . 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 28 февраля 2012 07:02
· Личное сообщение · #1

Приветствую всех!
Есть флеш приложение, которое общается с сервером через порт по средствам TCP пакетов.
Надо сделать простейшее приложение логина на сервер и получение любых данных.
По идее если обращение из флеш, структуру пакетов можно откопать в нём же.
Обычно сталкивался с GET, POST запросами, там всё ловил через HttpAnalyzerStd. Через что лучше работать с пакетами? Ставил различные снифферы пакетов, что-то всё работает очень сомнительно (когда в приложении куда-либо обращаешься, никаких посылок не ловится, а по идее данные должны запрашиваться от сервака).
Вопросы:
1. Какой софт для анализа лучше в данном случае? (под винду)
2. С чего начать копать (в теории)

PS: Если уж совсем не в тему форума, киньте в оффтоп, но там мало кто читает

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 24 апреля 2013 04:44
· Личное сообщение · #2

да с длиной ты прав, и в коде нашёл
Code:
  1. private static const HEADER_LENGTH:int = 4;


xDvKx пишет:
encodeToNetwork(this._serial, param1)
this._decoder.getPacket();
в языке не понимаю, но думаю это то что нужно

я в общем тоже не писал на нём, так интуитивно не сложно вроде...
там рядом есть ещё HttpConnector, один в один, т.е. http пакеты передаются также(ну или должны были передоваться или когда-то передавались), т.к. сейчас они все не шифрованые и не пожатые (всё что отлавливает NetworkMiner открывается в чистом виде, картинки например)

С первого взгляда похоже, но на деле я там шифрования так и не нашёл, как глубоко не лазил
encodeToNetwork она там ниже по коду
Code:
  1.         static function encodeToNetwork(param1:StaticSerial, param2:Object) : ByteArray
  2.         {
  3.             var _loc_3:* = new ExtByteArray();
  4.             param1.write(param2, _loc_3);
  5.             _loc_3.position = 0;
  6.             inPlace(_loc_3);
  7.             var _loc_4:* = new ByteArray();
  8.             new ByteArray().writeInt(_loc_3.length);
  9.             _loc_4.writeBytes(_loc_3);
  10.             _loc_4.position = 0;
  11.             return _loc_4;
  12.         }// end function

явно ничего не декодирует... _decoder.newData и _decoder.getPacket() это из модуля 0verkingsDec0der
Code:
  1.         public function newData(param1:ByteArray) : void
  2.         {
  3.             var _loc_2:* = this._data.position;
  4.             this._data.position = this._data.length;
  5.             this._data.writeBytes(param1, param1.position, param1.bytesAvailable);
  6.             this._data.position = _loc_2;
  7.             return;
  8.         }// end function
  9.  
  10.         public function getPacket() : Object
  11.         {
  12.             var _loc_1:int = 0;
  13.             var _loc_2:ExtByteArray = null;
  14.             var _loc_3:Object = null;
  15.             if (this._data.bytesAvailable > HEADER_LENGTH)
  16.             {
  17.                 _loc_1 = this._data.readInt();
  18.                 if (this._data.bytesAvailable >= _loc_1)
  19.                 {
  20.                     _loc_2 = new ExtByteArray();
  21.                     this._data.readBytes(_loc_2, 0, _loc_1);
  22.                     if (this._data.bytesAvailable == 0)
  23.                     {
  24.                         this._data.position = 0;
  25.                         this._data.length = 0;
  26.                     }
  27.                     TcpConnector.inPlace2(_loc_2);
  28.                     _loc_3 = this._serial.read(_loc_2);
  29.                     return _loc_3;
  30.                 }
  31.                 else
  32.                 {
  33.                     this._data.position = this._data.position - HEADER_LENGTH;
  34.                 }
  35.             }
  36.             return null;
  37.         }// end function

тут тоже о кодировании речи нет

вот это странные функции
Code:
  1.  static function inPlace(param1:ByteArray) : void
  2.         {
  3.             var _loc_2:* = param1.length / 2;
  4.             var _loc_3:int = 0;
  5.             while (_loc_3 < param1.length)
  6.             {
  7.                 
  8.                 param1[_loc_3] = param1[_loc_3] + (82 + _loc_2 + _loc_3);
  9.                 _loc_3++;
  10.             }
  11.             return;
  12.         }// end function
  13.  
  14.         static function inPlace2(param1:ByteArray) : void
  15.         {
  16.             var _loc_2:* = param1.length / 2;
  17.             var _loc_3:int = 0;
  18.             while (_loc_3 < param1.length)
  19.             {
  20.                 
  21.                 param1[_loc_3] = param1[_loc_3] - (82 + _loc_2 + _loc_3);
  22.                 _loc_3++;
  23.             }
  24.             return;
  25.         }// end function

но если это и есть шифрование, будет смешно

что при коннекте по TCP служит доступом я так и не понял... если в http там куки или просто параметры login/pass передаются, то тут как? Никаких параметров не передаётся вроде нигде
Code:
  1. public function connect(param1:HostInfo) : void
  2.         {
  3.             if (this._status != INIT)
  4.             {
  5.                 throw new Error("unable connect transport in status=" + this._status);
  6.             }
  7.             this._hostInfo = param1;
  8.             this._socket = new Socket();
  9.             this._socket.addEventListener(ProgressEvent.SOCKET_DATA, this.onSocketData, false, 0);
  10.             this._socket.addEventListener(IOErrorEvent.IO_ERROR, this.onIoError, false, 0, true);
  11.             this._socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError, false, 0);
  12.             this._socket.addEventListener(Event.CLOSE, this.onSocketClose, false, 0);
  13.             this._socket.addEventListener(Event.CONNECT, this.onSocketOpen, false, 0);
  14.             this._socket.connect(param1.publicHostName, param1.publicPort);
  15.             this._status = CONNECTING;
  16.             return;
  17.         }// end function


-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2013 09:18 · Поправил: xDvKx
· Личное сообщение · #3

Авторизация не при конекте происходит. После него первый пакет идет от клиента на сервер, в нем скорее всего и есть логин и пароль.

Code:
  1.         static function encodeToNetwork(param1:StaticSerial, param2:Object) : ByteArray
  2.         {
  3.             var _loc_3:* = new ExtByteArray(); Если правильно понимаю то, создал новый массив
  4.             param1.write(param2, _loc_3); Скопировал в него
  5.             _loc_3.position = 0; Установил позицию на начало
  6.             inPlace(_loc_3); Зашифровал
  7.             var _loc_4:* = new ByteArray(); Создал массив под готовый пакет
  8.             new ByteArray().writeInt(_loc_3.length); Вписал размер
  9.             _loc_4.writeBytes(_loc_3); Дописал сам пакет
  10.             _loc_4.position = 0;
  11.             return _loc_4;
  12.         }// end function


Больше ничего не делает

static function inPlace(param1:ByteArray) : void
static function inPlace2(param1:ByteArray) : void


скорее всего это и есть шифрование, но в flash у ByteArray есть интересная вещь это compress(algorithm:String):void, думаю может массив пакуется, стандартным способом, а потом шифруется inPlace, но не было времени разобраться с этим




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 24 апреля 2013 10:04 · Поправил: Isaev
· Личное сообщение · #4

xDvKx пишет:
но в flash у ByteArray есть интересная вещь

даже бы не подумал )
--> Link <--
там ещё и deflate/inflate есть, но это как я понял для полного архива с "заголовком", тут скорее действительно compress, будет время попробую найти в скриптах

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2013 10:25
· Личное сообщение · #5

Вот только непонятно для работы с сжатым массивом при использовании например array[0] будет использоваться байт из пакованного массива или он сначала распакуется...




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 24 апреля 2013 10:29
· Личное сообщение · #6

xDvKx пишет:
или он сначала распакуется

вряд ли, т.к. для этого предусмотрен uncompress(algorithm:String):void в явном виде по идее должен вызываться

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 апреля 2013 11:01 · Поправил: reversecode
· Личное сообщение · #7

LoginProcessCMD.as
private function userNodeInitialized(param1 = null) : void
и дальше формат пакета
или что ищем?
там два типа коннекта может быть
или tcp или http


пора уже кому то зарегить левый акк, снять pcap файл
так как не у всех есть желание регить и запускать флеш игру




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 24 апреля 2013 12:07
· Личное сообщение · #8

xDvKx compress/uncompress для ByteArray нашёл только в ConfigSerializerAMF, но он используется мало где(при загрузке mesh, skelet и ещё пары вещей), а в данном случае мы его не трогаем, как ни странно deflate/inflate вообще нигде не встречается.

reversecode пишет:
и дальше формат пакета
или что ищем?

Это, да... но или пакета я этого не ловлю, или ловлю так же пошифровано и пожато... Ищем именно момент как они жмутся/шифруются
reversecode пишет:
пора уже кому то зарегить левый акк, снять pcap файл

ок, сделаю на досуге

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 24 апреля 2013 18:12
· Личное сообщение · #9

а что ковыряем?
могу чуток помочь.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 24 апреля 2013 18:57 · Поправил: Isaev
· Личное сообщение · #10

SWR присоединяйся)
тут ссылка того, что ковыряем --> Link <--

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 апреля 2013 19:26 · Поправил: reversecode
· Личное сообщение · #11

после DNS запроса и получения айпи резолва ***.ру
и идет обмен авторизацией по tcp, с ****.ру
насколько я понял

после авторизации идет загрузка ресурсов каких то.. по http



Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2013 21:05
· Личное сообщение · #12

reversecode пишет:
идет обмен авторизацией по tcp, с оверкилом.ру


Известно, что первые 4 байта это размер пакета, дальше сам пакет. Но пакет сжат или шифрован, а может и то и то.

Вопрос в том как привести пакет в читаемый вид.

Пример первых двух пакетов
1. от клиента 0000005a116e20248c8586c8fa6b5794d50c8d8eb8c1f2c6c3c9cecad0d1ccccd3d5cfd3d5d8d703dad8d5d60adad9df0e1013121414e2131517eeed1ceeb9babd2e32becf24372d22f6f5f6fb08362b3438fb4044d2d16787b46bdfb6db

2.ответ от сервера
000001e816d91a09504be20e475a525b56535455d6d45e595a5b2ce95f69606162030066746768695a166d836e6f70110e7474757687787a7a014347c97fe88114317b978889201a8c8b9e5d2c60106213634966166818694a6b5a6d5b9f88a8a26ba5a5a6a9a8a9aaabb0ad34b1b039b4c3b4b6b7f92b9ce309f92dbec0c0c3cec7c4c5c64745cfcacbccbd79d0dad1d2d37471d7e5d8d9dacb87def4dfe0e1a29ee5b7f5e7e8e9aa97f2eef287f32d536659696a6066606d1b5d6a4b6e766a706a51747b7a6d462c3c2e2d6f7c5d80887863837b5a84827d86593f4e4140848a8498788e969f6d8b9f916a50605251959b95a984a6ac88afaf7eb683adb4a6b48066756867b4aabdbf8db0b1bec5bfc6a1c3c9bfbdd1adc3c8c19a809093979899989a9f9da1a29d9d8e8dcfd2e4dae1e1c4d6e4dce4cce2eaf3caede3e5bea4b3a6a5f6e801f6eff90000cff602f6f700f9030ad4bac9bcbb0f050d16e105060c180e15150915ec20121321fe1ef3f8f0d61b17232b1edceafac756c0389ba51512f4f09c131393f7161afca09b001d009ea3a22207af050409a60da92cadb3aeb1342fb4999bf46cde8ae1e2c223c5ec75df802aebecfe0686efd18a528c8d5c1c5e3e07309d2543180eb83a10131213a9c9f6ad211a5c8effeb29f34021222d5c5657595d5b63625f66




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 апреля 2013 21:15 · Поправил: reversecode
· Личное сообщение · #13

в пакете не символы для прочтения.
поэтому нужно писать десереализатор который разбирает пакет и будет показывать какое поле за что отвечает итд

в декомпиленом флеше есть какая то отладочная дебаг инфа
включите ее если это можно
это поможет для большего понимания работы протокола

*****Decoder.as расшифровывает входящий пакет



Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2013 21:24 · Поправил: xDvKx
· Личное сообщение · #14

del




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 апреля 2013 21:27 · Поправил: reversecode
· Личное сообщение · #15

)) так у вас уже все есть
ну и повторю
*****Decoder.as расшифровывает входящий пакет

осталось только набросать функций и вуаля можно смотреть дешифрованые пакеты



Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2013 22:51
· Личное сообщение · #16

так то оно так, но в delphi перевести не получается пока




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 апреля 2013 23:14
· Личное сообщение · #17

в чем именно затык?



Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 апреля 2013 23:18 · Поправил: xDvKx
· Личное сообщение · #18

вот такой дамп расшифрованный получается
Code:
  1. •у¦«S†ше#eќ!LV€][bhelnjksvqvy}}Є‚ЃЃ¶‡‡ЋѕБЕЕИЙ?КНРЁЁШ«wy}пфЃ“йэфкїїБЗХ[-ъ[-  Н§§>_ЌEє’Ы
  2. Ќйљќ[-ьь=nЮЙE{ыы$,\/+04/44.-34-0131\2/++^-+0^_a_`_,\]^42`1ыыэmpы _qfZ-++/;h\dg)mpэыђЇЫ‘[-ЪЫ
  3. a%gWџ›3`љ®§±­«­Ї10»·№»ЌKВНЕЗЙkiРЯУХЧЙ†Юхбге‡…мнпсхшщЃДЙLm›№[-!­Ё/пїфҐшЄыв
  4. ЛЌН»ы‘јфэяыыы{xыыыЛ‡ьыыы›—ь       ыыыл¦ьыыы›—ьыыы ыьыЃВЕFыcыЌ©т
  5. ээ“Њэы
  6. Л™М{М|Л°М{М{Л«Л№ЛёыгыГьыыэыыыыяыЃэыѓэ ыьь=$I8kыьыэяыыы{xыыыл¦ьыыы›—ь        ыыыл¦ьыыы»¶ьН
  7. ыыы»§ья“ю7\n`oodibn\hHjqdibHjpn`8,\hHjq`Ji`>gd^f8+^c\oNcjr?\o`8,^c\oIjoJpo=t@io`m8+g\no<^^jpioIjodatOdh`8,.111/04144.-\^odjiK\i`gNcjrHj_`8+k\th`ion<bm``h`io8+ncjr<__dodji\g=paanJi=A8a\gn`*9“ьsХЮMI*%РFEД'EH)МЖ*F(ЕЙЗF*С&$(Д*ЕGЗМЖИJDИ¬­|н?ооН-Оф|е….ооя…нО†M††TT3ы#Џ3ьҐ&ыэыыђЇЫ‘[-ь=nЮЙПыы3,,-0-42.f
  8. )T_ЌЊЗоц      
  9. §РщЧ“ю7\n`oodibn\hHjqdibHjpn`8,\hHjq`Ji`>gd^f8+^c\oNcjr?\o`8,^c\oIjoJpo=t@io`m8+g\no<^^jpioIjodatOdh`8,.111/04144.-\^odjiK\i`gNcjrHj_`8+k\th`ion<bm``h`io8+ncjr<__dodji\g=paanJi=A8a\gn`*9яљ
  10. ІЭиЁЊрыljMJчopсVv{^яeѓg Ќsssy ")%)­©/rл^ ceFЁKsэh
  11. µwyЊ•Ђcж!#уґчШўМ:ГвІєЯабпJIGПMMЧSl
  12. ћЗрОъЉуjМХD@!=<»<? ГЅ!=јАѕ=!И»!ј>ѕГЅїA;їЈ¤ьsдЏееД$ЕлsЬ|%еецэ|дЕ}D}}K
  13. K*т†
  14. *шю! +=T=L|yuыwuэwl
  15. ‰vt…ѕЅ]
  16. ХАјЛя]
  17. ‰vt…ѕї_
  18. ХАјЛ_
  19. j?2€‹нЊ
  20. “‘“–™™—ЁџҐҐ§©«ЇЇ±М…W‰qЌo‘u–R™„нџ‹Јђ§‘«љЇџіџзoнппсучяыяяС ЭЕ»ЏЫ1УЛџ')+'8щЮЇ79;э@оїGIKaOQS№XЩ_]_bee'skеqqsuw{{}?Q#U=Y;]AbeP№kWoYsbw_{]lі=№»»ЅїOДСЭЙННџа‡}QЩЫЭ•л•ЌaйлніщщхщщЛ З¬} ЛХјЌ/!+–
  21. ж№Єюя_ь{яыыьэычыsэыыыыэыыЛ›Л±Л«Л­М†ЛґЛµЛ¶ЛіЛёЛ№ЛµыЃээыыыэыэыЛ
  22. ыэыЛ
  23. ЇЈuыыы№
  24. ­Јuыыых[-Г¦uыыы»ьБ¦uыыыыыы_ь{яыыьэы»ыsэыыыыэыыЛ›Л±Л«Л­М†ЛґЛµЛіЛёЛ±Л«Л¶ыѓээыыы‰ьыэыЛ
  25. ЇЈuыыы±­ЈuыыыїыэыЛ
  26. Г¦uыыы»ьБ¦uыыыыыы–


в нем нет не логина не пароля




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 24 апреля 2013 23:25 · Поправил: reversecode
· Личное сообщение · #19

это входяший или исходящий пакет?
логин в исходяшем должен быть

Code:
  1.         private function userNodeInitialized(param1 = null) : void
  2.         {
  3.             this._initUserNode.removeEventListener(Event.COMPLETE, this.userNodeInitialized);
  4.             this._loginCommand = new LoginCommand();
  5.             this._loginCommand.login = SessionModel.instance.login;
  6.             this._loginCommand.authToken = SessionModel.instance.authToken;
  7.             this._loginCommand.serialsVersion = **********Serializer.serializator.getCRC();
  8.             this._loginCommand.locale = SessionModel.instance.locale;
  9.             this._loginCommand.timeZoneOffset = new Date().timezoneOffset;
  10.             this.openDialog(Resources.getText("terms.general.connect_to_server"));
  11.             ********CommBus.getInstance().sendWithCallback(this._loginCommand, this.loggedIn, this.onLoginError, false);
  12.             return;
  13.         }// end function

если нет, значит как то не так десериализировали пакет
либо мы чего то не так понимаем

но сложного там точно ничего нет, просто время нужно и все получится) пробуйте

StaticSerial.as
*****ClientSerial.as

это классы которые упаковывают и распаковывают примитивы
поэтому inPlace/inPlace2 это еще далеко не вся упаковка
это только поверхностная




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 25 апреля 2013 05:00 · Поправил: Isaev
· Личное сообщение · #20

xDvKx пишет:
в нем нет не логина не пароля

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

xDvKx пишет:
вот такой дамп расшифрованный получается

Это ты inPlace2 применил просто?
он же может быть сначала сжат, потом закодирован или наоборот

xDvKx пишет:
Отладочный лог

Это как включается?

reversecode пишет:
в чем именно затык?

Затык наверное в том, что где-то это всё жмётся в zlib или что-то похожее, а где пока не удалось найти

я в inPlace2 не совсем понимаю начало:
Code:
  1. var _loc_2:* = param1.length / 2;

из документации: expression1 *= expression2
"Присваивает выражению expression1 значение выражения expression1 * expression2."
т.е. как в сях... Но '_loc_2' то в начале не определено, значит =0, так? зачем тогда половина длины, если она с нулём перемножается? можно просто выкинуть _loc_2 или как это работает?
Вроде выходит что-то читаемое частично к концу (непечатные символы заменены)
Code:
  1. ...
  2. <dsettings quality="18568"/>···<ssettings globalEnable="0" globalVol
  3. ume="1" animationsVolume="1" effectsVolume="1" eventsVolume="1" guiVolume="1" stepsVolume=
  4. "1"/>···<asettings amMovingMouse="0" amMoveOneClick="1" chatShowDate="1" chatNotOutByEnter
  5. ="0" lastAccountNotifyTime="1365206793140" actionPanelShowMode="2" paymentsAgreement="0" s
  6. howAdditionalBuffsOnBF="true"/>

Видимо они всё же не пакуются... Остаётся только десериализировать остальное...
Но имени персонажа так и не нашёл )
Хотя эти настройки выше уже не общие, а от конкретного персонажа

не понял 2 момента в начале подключения:
1. откуда получили номер порта сервера?
2. откуда взялась строка node004 при запросе его IP
(в скриптах ни то ни то явно не задано)

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 апреля 2013 08:53 · Поправил: reversecode
· Личное сообщение · #21

Isaev пишет:
я в inPlace2 не совсем понимаю начало:

длинна деленая на 2
почему это ноль? она нулем никогда не бывает
потому что в ****Decoder.as
_loc_1 = this._data.readInt(); читается длинна

this._data.readBytes(_loc_2, 0, _loc_1); читается в массив, значит и длинна тоже выставляется

Isaev пишет:
Затык наверное в том, что где-то это всё жмётся в zlib или что-то похожее, а где пока не удалось найти

StaticSerial.as
****ClientSerial.as




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 25 апреля 2013 09:53
· Личное сообщение · #22

reversecode пишет:
почему это ноль?

потому, что там *= стоит наверное

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 апреля 2013 09:55
· Личное сообщение · #23

это не умножение
это присвоение var имя:* = значение




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 25 апреля 2013 10:00 · Поправил: Isaev
· Личное сообщение · #24

а, это не объявленный тип данных! ёклмн, никогда не встречал подобного)
Ещё удивило, что при типе данные int и uint в ActionScript значение по умолчанию = 70
откуда интересно столь значимое число

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 апреля 2013 13:01
· Личное сообщение · #25

reversecode пишет:
это входяший или исходящий пакет?

Это полный дамп пакетов, по которому прошелся inPlace и второй вариант inPlace2, ну чтобы наверняка )

Isaev пишет:
ну в моём случае там логина и пароля и не будет, если не через клиент только заходить(отдельно скачаный)там тянутся куки от одной из соц. сетей

Думаю что логин должен быть, а вместо пароля authToken.


Code:
  1.         private function userNodeInitialized(param1 = null) : void
  2.         {
  3.             this._initUserNode.removeEventListener(Event.COMPLETE, this.userNodeInitialized);
  4.             this._loginCommand = new LoginCommand();
  5.             this._loginCommand.login = SessionModel.instance.login;
  6.             this._loginCommand.authToken = SessionModel.instance.authToken;
  7.             this._loginCommand.serialsVersion = OverkingsSerializer.serializator.getCRC();
  8.             this._loginCommand.locale = SessionModel.instance.locale;
  9.             this._loginCommand.timeZoneOffset = new Date().timezoneOffset;
  10.             this.openDialog(Resources.getText("terms.general.connect_to_server"));
  11.             OverkingsCommBus.getInstance().sendWithCallback(this._loginCommand, this.loggedIn, this.onLoginError, false);
  12.             return;
  13.         }// end function


Isaev пишет:
Это как включается?

Vizzy Flash Tracer --> Link <--

Isaev пишет:
Вроде выходит что-то читаемое частично к концу (непечатные символы заменены)

Это как получилось ?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 апреля 2013 13:23
· Личное сообщение · #26

строки там в utf хранятся
значит и логин тоже в utf должен быть

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




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 25 апреля 2013 13:24 · Поправил: Isaev
· Личное сообщение · #27

xDvKx пишет:
Это как получилось ?

это просто inPlace2 к пакету(без длинны соответственно).
inPlace2 как я понял для принятия пакета, а inPlace для отправки.

reversecode пишет:
а какая цель вообще этих копаний с этим флешем?

цель научиться работать с неизвестными протоколами
ну и потом пару софтинок можно написать для себя, чтобы утвердиться и порадоваться)
там в процессе игры создаётся собственная большая база знаний, хочу сделать её твёрдую копию...
ручками это переписывать пару суток будешь, при дальнейшем расширении снова дописывать, да не инересно

потому
полностью правильно реализовывать весь се/де-реализатор протокола
может и не придётся, но кое-что из него надо будет перенять, благо весь код доступен

но для начала надо законнектиться, а по сему остались открытыми 2 вопроса выше

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 апреля 2013 13:45
· Личное сообщение · #28

reversecode пишет:
а какая цель вообще этих копаний с этим флешем?


Из спортивного интереса, игру вобще впервые вижу

Isaev пишет:
это просто inPlace2 к пакету(без длинны соответственно). inPlace2 как я понял для принятия пакета, а inPlace для отправки.


Значит где то я натупил



Ранг: 105.6 (ветеран), 69thx
Активность: 0.060
Статус: Участник

Создано: 25 апреля 2013 13:49
· Личное сообщение · #29

Isaev пишет:
не понял 2 момента в начале подключения:1. откуда получили номер порта сервера?2. откуда взялась строка node004 при запросе его IP(в скриптах ни то ни то явно не задано)


Насяльника! Ты исходный код страницы смотрел? Порт и адрес сервака передаются через переменную flashvars. И не только они. Там целый букет переменных flash получает при инициализации... А эти переменные соответственно генерятся скриптами сервака.

По-поводу

Code:
  1. var _loc_2:* = param1.length / 2;


Вот как оно выглядит в ассмблерном виде.

Code:
  1.      getlocal1
  2.      getproperty         QName(PackageNamespace(""), "length")
  3.      pushbyte            2
  4.      divide
  5.      convert_i
  6.      setlocal2


* означает что переменная неопределенного типа. Перед присвоением происходит приведение к типу int.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 25 апреля 2013 14:36 · Поправил: Isaev
· Личное сообщение · #30

xDvKx пишет:
Значит где то я натупил

видимо... ну я тоже не delphi делаю, сверим если что

JohnyDoe пишет:
Ты исходный код страницы смотрел?

одна голова хорошо... Там-то я и не глянул.
JohnyDoe пишет:
* означает что переменная неопределенного типа.

да я уже нашёл в документации, спс

xDvKx пишет:
Vizzy Flash Tracer

Оно без FlashDevelop не работает?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 9.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 апреля 2013 17:29 · Поправил: xDvKx
· Личное сообщение · #31

Isaev пишет:
Оно без FlashDevelop не работает?

Flash Player Debug нужен, но особой пользы от лога не вижу.

Ну вот расшифровалось все. И как и предпологал там логин передается и вместо пароля ауттокен, во втором пакете имя персонажа в кодировке UTF


<< . 1 . 2 . 3 . >>
 eXeL@B —› Программирование —› Клиент-Сервер (Delphi)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати