Сейчас на форуме: 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




Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 28 февраля 2012 09:24
· Личное сообщение · #2

если это не http-запросы, то и соответственно тулзы навроде fiddler, charles работать не будут, можешь попробовать ospy и точно подойдет wireshark




Ранг: 68.0 (постоянный), 6thx
Активность: 0.060
Статус: Участник

Создано: 28 февраля 2012 13:29
· Личное сообщение · #3

Всегда пользуюсь снифером EtherDetect --> Link <--




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 28 февраля 2012 14:10
· Личное сообщение · #4

WPE PRO, EtherScan

-----
127.0.0.1, sweet 127.0.0.1





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

Создано: 28 февраля 2012 20:33
· Личное сообщение · #5

drone +1 charles пробовал, ничего хорошего не вытащил, думал не разобрался просто
OKOB WPE PRO тоже пробовал, толи она сырая совсем, то ли я )
Остальное буду тестить, спс

а по поводу как это может быть организовано во флеше может кто подсказать? флешка на несколько метров анализируется визуально тяжко, какие команды основные искать?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 29 февраля 2012 03:23
· Личное сообщение · #6

Isaev пишет:
какие команды основные искать?


команды, не команды, но имхо: socket, send, recive, packet, protocol, connect, ...

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 3.6 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 29 февраля 2012 05:41 · Поправил: kiber_punk
· Личное сообщение · #7

Isaev
>>Какой софт для анализа лучше в данном случае? (под винду)

Ну если пакеты нестандартные, то и анализировать придётся самому, вручную.

- Берёшь обычный сниффер на RawSocket без анализатора;
- сравниваешь дампы пакетов;
- выявляешь различия (в зависимости от посылаемых команд) и закономерности, определяешь структуру пакета.




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

Создано: 29 февраля 2012 17:59
· Личное сообщение · #8

kiber_punk а зачем? если есть клиент на флеше, который с сервером общается... там в скриптах все структуры должны быть заложены

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 29 февраля 2012 19:28
· Личное сообщение · #9

модуль искать по import flash.net.*;

а инфа скорее всего на сокете
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html

-----
127.0.0.1, sweet 127.0.0.1




Ранг: 3.6 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 01 марта 2012 03:45
· Личное сообщение · #10

> kiber_punk а зачем? если есть клиент на флеше, который с сервером общается... там в скриптах все структуры должны быть заложены

С нуля оно как-то попроще пишется

Но если флешка успешно декомпилится, то в путь-дорогу.
Я с swf не работал, сказать что-то определённое не могу.




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

Создано: 02 марта 2012 20:04 · Поправил: Isaev
· Личное сообщение · #11

OKOB в тему, спс
Теперь я вообще сомневаюсь, что там через сокеты )
в аттаче скрипт коннекта, если кому интересно
строки
public static const HTTP:int=1;
public static const TCP:int=0;

наводят на мысль.... но http запросы не ловятся абсолютно ничем!

kiber_punk пишет:
С нуля оно как-то попроще пишется

Ну это на любителя... Может в данном случае именно так, т.к. писалось это всё явно не прямыми руками )

cdb0_02.03.2012_EXELAB.rU.tgz - connect.txt

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





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

Создано: 17 апреля 2013 10:55
· Личное сообщение · #12

Вернулся на досуге к вышеизложенной проблеме...
в идеале надо научиться коннектиться к серверу и получить хотя бы ник в игре свой, дальше я уже пойму как оно работает и буду разбераться сам.
Есть у кого опыт разбора пакетов? Мне бы на пальцах показать.
в аттаче линк к сайту жертвы. флеш декомпилируется нормально, но он так написан криво, что там сами авторы наверное часами ищут места, где надо что-нибуть пофиксить. Клиент если качать, разницы никакой, там тупо обёртка для того же флеша сделана, т.е. дизасм не поможет
Проблемы:
1. Кроме начальных Http запросов ничего дальше не вижу, потому работать не с чем!

a42e_17.04.2013_EXELAB.rU.tgz - link.txt

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





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

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

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




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 17 апреля 2013 11:40 · Поправил: OKOB
· Личное сообщение · #14

Wireshark'ом все снифается
Все время сыпятся HTTP пакеты с инфой вида

Referer: ..........................
Cookie: __utma=163785057.1031524955.1366182404.1366182404.1366182404.1; __utmb=163785057.6.10.1366182404; __utmc=163785057; __utmz=163785057.1366182404.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

Данные POST запроса:
data=&off=1860&ack=133198&uuid=d23d5d20%2Da72d%2D11e2%2Dbe08%2D003048d23447&id=292&mtime=1366182915675

-----
127.0.0.1, sweet 127.0.0.1





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

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

OKOB и ведь действительно показывает много больше HTTP пакетов, чем HTTP Analyser последний... он мне выдавал авторизацию через контакт, первые 2 запакованные файла и всё, дальше молчал как рыба
с чем это может быть связано? начальные версии (3х) вроде отлично работали, потом что-то поломалось... Был бы это баг думаю давно бы починили. keygen нашего собрата работает до последней 7 версии, может какая доп. защита просто организована, которую он не палит явно? или что-то донастроить нужно? кто-то пользуется им?
Я думал просто дальше не через http работа идёт, потому он и молчит

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

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

Isaev пишет:
или что-то донастроить нужно? кто-то пользуется им?


Берите лучше Wireshark, он универсальнее.

-----
http://ntinfo.biz





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

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

а как в Wireshark собрать из кучи пакетов content и сохранить в 1 исходный файл?
Нашёл только Follow TCP Stream, но оттуда можно только всё вместе сохранить, но не content отдельно
и может быть там можно как-то сворачивать отображение этих пары тысяч пакетов для 1 файла? очень мешает анализу

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

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

Isaev
Ежели ОС - win xp, посоветую снифер Commview (для 7+ кряки не але пока),
там контент шустро достать можна
самая вкусная фича етого снифера - пишет какой процес делал send/recv

| Сообщение посчитали полезным: Isaev


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

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

Isaev пишет:
а как в Wireshark собрать из кучи пакетов content и сохранить в 1 исходный файл?

если обычный http, то смотри по пакетам, там дожен будет один большой кусок собран после мелких ACK

если это не http и вообще протоколов не определен, то никак, так как wireshark не знает как собирать большие куски от неизвестных протоколов

а куски бывают передаются по разному,
например в одних TCP протоколах весь пакет передается в ACK, а бывает если пакет большой то бьется на ACK а финальный приходит в ACK,PUSH




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

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

reversecode пишет:
если обычный http, то смотри по пакетам, там дожен будет один большой кусок собран после мелких ACK

вот не собран он там ) бьётся по 1506 байт вроде, а как собрать сие чудо в один?
sendersu, да XP, спс посмотрю сегодня

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

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

Isaev пишет:
как в Wireshark собрать из кучи пакетов content и сохранить в 1 исходный файл


NetworkMiner в помощь

-----
127.0.0.1, sweet 127.0.0.1


| Сообщение посчитали полезным: sendersu, Isaev

Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

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

у microsoft есть networkmonitor




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

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

OKOB пишет:
NetworkMiner в помощь

то, что надо, сенк.

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





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

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

Нашёл начало коннекта.
Там идёт запрос DNS получение IP адреса сервера по названию (но откуда берётся само название не понял... вроде нигде не получалось и в скриптах флеш не находится ни полностью ни частично)
потом получаются политики и начинается общение...
Пакеты идут явно сжатые, т.к. архиватором больше не жмётся.
Отсюда вопрос: сжатие обычно стандартное? Или скорее можно/нужно вытащить из скриптов флеша способ сжатия. Если второе, то по каким ключевым словам искать? (т.к. скриптов из флешки вышло на 19мб.)

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

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

Isaev пишет:
по каким ключевым словам искать?


inflate, deflate, compress, decompress, zip, zstream, zlib...

-----
127.0.0.1, sweet 127.0.0.1





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

Создано: 22 апреля 2013 17:46
· Личное сообщение · #26

раз ромашка, два ромашка. а я четвертую сорвал! (с)
pcap будет или нет?
dns запрос не может быть авторизацией итд, это ресолвер работает




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

Создано: 22 апреля 2013 18:33
· Личное сообщение · #27

OKOB то что ты привел, нигде не светится в скриптах... ещё есть предложения?

reversecode пишет:
dns запрос не может быть авторизацией

я этого и не писал, я писал сначала DNS потом политики, потом авторизация
на счёт pcap, сайт я дал, нажал кнопку и у тебя есть pcap, такой же как и у меня... или тебе непременно нужно с моими паролями?
Если есть время на приставучего меня, можно встретиться в аське или скайпе... Я в общем не особо буду напрягать, но некоторые моменты быстрее, когда объяснят наглядно

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

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

на первый взгляд:
1. Данные о состоянии персонаже получает через tcp соединение на порт 20001, пакет или шифрован или упакован. Первые 4 байта это размер пакета, дальше не непонятно.
2. Информацию о мире через get запросы, в ответе приходит упакованый (zip) xml файл типа:

<map id="13" v="3762986418"/>
<map id="14" v="4190566349"/>
<map id="15" v="4203503813"/>
</maps>
<fxs>
<fx id="vileEnvy" v="157652508"/>
<fx id="advMapHeimskringlaSimbol07" v="265625787"/>
<fx id="quickSands_spawn" v="4027737497"/>
причем значения наверно тоже шифрованы.




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

Создано: 22 апреля 2013 22:54 · Поправил: Isaev
· Личное сообщение · #29

xDvKx порт да 20001, на счёт шифрован не знаю, но у них там горе программисты, т.ч. сомневаюсь очень... если и шифрован, то по-детски
xDvKx пишет:
Первые 4 байта это размер пакета

вот как-то не сходится с размером нигде, тоже сначала так думал... может распакованного?
xDvKx пишет:
Информацию о мире

да это достал давно, там в 3х файлах всё расписано, это ты из среднего привёл пример. это просто,т.к. опыт с http достаточный, но на этом геты кончаются.
а дальше надо помощь или мелкие наводки

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




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

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

Isaev пишет:
вот как-то не сходится с размером нигде, тоже сначала так думал... может распакованного?


Все сходится, например пакет
0000005a 116e20248c8586c8fa6bb50bd0fc8d8eb8c1c9c5f6c7facdfdfccacfd4ccd1ffd203d1d5d8db070b0d0d0cdfe012111215e1131419ebe81bedefb9babd2e32becf24372d22f6f5f6fb08362b3438fb4044d2d16787b46bdfb6db
его размер 94 байта = 4 байта информация о размере пакета + 90 байт сам пакет
И еще один небольшой пакет
00000007 2f1b1828605e5d
11=4+7


И вот еще нашлось:
Отправка пакета
Code:
  1.         public function send(param1:Object) : int
  2.         {
  3.             var _loc_3:* = null;
  4.             if (this._status != CONNECTED)
  5.             {
  6.                 throw new Error("send:q invalid status=" + this._status);
  7.             }
  8.             var _loc_2:* = -1;
  9.             if (param1 is SequencedPacket)
  10.             {
  11.                 _loc_3 = SequencedPacket(param1);
  12.                 var _loc_4:* = this;
  13.                 _loc_4._nextSeqId = this._nextSeqId + 1;
  14.                 _loc_2 = this._nextSeqId + 1;
  15.                 _loc_3.seqId = this._nextSeqId + 1;
  16.             }
  17.             this._socket.writeBytes(<b>encodeToNetwork(this._serial, param1)</b>);
  18.             this._socket.flush();
  19.             return _loc_2;
  20.         }// end function

Получение пакета
Code:
  1.         private function onSocketData(event:ProgressEvent) : void
  2.         {
  3.             var _loc_3:* = null;
  4.             if (this._status == CLOSED)
  5.             {
  6.                 return;
  7.             }
  8.             var _loc_2:* = new ByteArray();
  9.             this._socket.readBytes(_loc_2);
  10.             this._log.debug("onSocketData size={0}", _loc_2.length);
  11.             <b>this._decoder.newData(_loc_2);</b>
  12.             do
  13.             {
  14.                 
  15.                 if (this._status == CLOSED)
  16.                 {
  17.                     break;
  18.                 }
  19.                 this._callback.onPacketReceived(this, _loc_3);
  20.                 var _loc_4:* = <b>this._decoder.getPacket()</b>;
  21.                 _loc_3 = <b>this._decoder.getPacket();</b>
  22.             }while (_loc_4 != null)
  23.             return;
  24.         }// end function


encodeToNetwork(this._serial, param1)
this._decoder.getPacket();

в языке не понимаю, но думаю это то что нужно


. 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 » Выход » ЛС
   Для печати Для печати