Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Съэмулировать клиент


Страницы:   1 2

flaxe ©   (2007-05-08 21:29:00) 

Имеется программа-клиент к инетовскому серверу. Как можно "записать" все запросы сервера и ответы клиента на них и затем написать программу, которая бы создавала видимость для сервера этого самого клиента?


flaxe   (2007-05-27 10:50:00) [1]

Здесь точно реализован XOR алгоритм по 2 байтам ключа, но так и не могу врубиться в чем прикол


flaxe   (2007-05-21 20:46:00) [2]

С горем пополам чтото сделал, теперь самое интересное:
Данные сниффера, логин 1 пароль 1
05 00 15 0C FF <- Типа приветствие сервера, на что он нам высылает
07 00 15 0D 03 35 00 <- В котором 07 00 как я понял перевернутая длина пакета, 15 0D <- Тип пакета(аналогия с 15 0С) а 03 35 00 <- Ключ.
Далее 15 03 - Шифрованый логин и пароль
15 04 ответ от сервера с уникальным ключем для дальнейших действий,
Просьба помочь разобраться в шифровании Логина и пароля(15 03).

00000000  05 00 15 0C FF                                     .....

00000000  07 00 15 0D 03 35 00                               .....5.

00000000  1F 00 15 03 0D 3C 3C 3C  3C 3C 3C 3C 3C 3C 3C 3C   .....<<< <<<<<<<<
00000010  3C 0D 3C 3C 3C 3C 3C 3C  3C 3C 3C 3C 3C 3C 00      <.<<<<<< <<<<<<.

00000000  0E 00 15 04 30 CC CC CC  CC 64 00 00 00 CC         ....0... .d....

___________________________
00000000  05 00 15 0C FF                                     .....

00000000  07 00 15 0D 04 2C 02                               .....,.

00000000  1F 00 15 03 19 2A 2A 2A  2A 2A 2A 2A 2A 2A 2A 2A   .....*** ********
00000010  2A 19 2A 2A 2A 2A 2A 2A  2A 2A 2A 2A 2A 2A 00      *.****** ******.

00000000  0E 00 15 04 30 CC CC CC  CC 64 00 00 00 CC         ....0... .d....

____________________________
00000000  05 00 15 0C FF                                     .....

00000000  07 00 15 0D 04 2E 02                               .......

00000000  1F 00 15 03 07 34 34 34  34 34 34 34 34 34 34 34   .....444 44444444
00000010  34 07 34 34 34 34 34 34  34 34 34 34 34 34 00      4.444444 444444.

00000000  0E 00 15 04 30 CC CC CC  CC 64 00 00 00 CC 0E 00   ....0... .d......
00000010  15 04 06 CC CC CC CC 00  00 00 00 CC               ........ ....

____________________________
00000000  05 00 15 0C FF                                     .....

00000000  07 00 15 0D 03 D4 01                               .......

00000000  1F 00 15 03 E2 D3 D3 D3  D3 D3 D3 D3 D3 D3 D3 D3   ........ ........
00000010  D3 E2 D3 D3 D3 D3 D3 D3  D3 D3 D3 D3 D3 D3 00      ........ .......

00000000  0E 00 15 04 30 CC CC CC  CC 64 00 00 00 CC         ....0... .d....
_____________________________
00000000  05 00 15 0C FF                                     .....

00000000  07 00 15 0D 03 70 02                               .....p.

00000000  1F 00 15 03 46 77 77 77  77 77 77 77 77 77 77 77   ....Fwww wwwwwwww
00000010  77 46 77 77 77 77 77 77  77 77 77 77 77 77 00      wFwwwwww wwwwww.

00000000  0E 00 15 04 30 CC CC CC  CC 64 00 00 00 CC         ....0... .d....

_____________________________
-> 00000000  05 00 15 0C FF                                     .....

<- 00000000  07 00 15 0D 00 90 03                               .......

-> 00000000  1F 00 15 03 A1 92 92 92  92 92 92 92 92 92 92 92   ........ ........
-> 00000010  92 A1 92 92 92 92 92 92  92 92 92 92 92 92 00      ........ .......

<- 00000000  0E 00 15 04 30 CC CC CC  CC 64 00 00 00 CC         ....0... .d....

______________________________
00000000  05 00 15 0C FF                                     .....

00000000  07 00 15 0D 00 C3 00                               .......

00000000  1F 00 15 03 F4 C7 C7 C7  C7 C7 C7 C7 C7 C7 C7 C7   ........ ........
00000010  C7 F4 C7 C7 C7 C7 C7 C7  C7 C7 C7 C7 C7 C7 00      ........ .......

00000000  05 00 65 01 00 0E 00 15  04 30 CC CC CC CC 64 00   ..e..... .0....d.
00000010  00 00 CC                                           ...


flaxe   (2007-05-21 19:37:00) [3]

и еще сразу
допустим я считываю через IdTCPClient1.ReadInteger, как мне потом это преобразовать через inttohex(IdTCPClient1.ReadInteger,???);
длину откуда браТЬ7


flaxe   (2007-05-21 19:23:00) [4]

Как допустим можно преобразовать String "0700" в 7?


flaxe   (2007-05-21 19:08:00) [5]

RF Online ^)


Nucer   (2007-05-21 19:00:00) [6]

Что за клиент то?


flaxe   (2007-05-21 18:58:00) [7]

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


Nucer   (2007-05-21 18:56:00) [8]

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


Nucer   (2007-05-21 18:55:00) [9]

Заводишь отдельный буфер. Допустим buf:string;
В OnRead пишешь buf:=buf+socket.RecieveText; т.е. считываешь в буфер очередную порцию байт. Потом что-то вроде:
while length(buf)>2 do
  begin
   size:=ord(buf[1])+ord(buf[2])*256;
   if length(buf)<size then break;
   pck:=copy(buf,1,size);
   delete(buf,1,size);
   ViewPacket(pck);
  end;


flaxe   (2007-05-21 18:23:00) [10]

Вообщемто структура пакетов такая
aa aa bb bb cc cc....
aa aa - Длина всего пакета
bb bb - Тип Пакета
сс сс сс.. - Остальные данные
Вот только как так считать, поочередно неполучается


flaxe   (2007-05-21 18:16:00) [11]

С передачей спасибо, вроде работает, но теперь проблема с приемом
Пытаюсь делать через
RI:=IdTCPCLient1.ReadInteger;
memo1.Lines.Add(inttohex(RI,8));
но вроде какбы оно, но нето, непойму как сначала прочитать первые 2 байта- длина строки, а потом все остальное


Сергей М.   (2007-05-21 08:53:00) [12]


> команду в HEX-формате, как её можно отправить


var
 SendBuff: Pointer;
 BufSize: Integer;
..

BufSize := Length(Edit1.Text) div 2;
GetMem(SendBuff, BufSize);
try
 if HexToBin(AnsiLowerCase(Edit1.Text), SendBuff, BufSize) = 0 then
   IdTCPClient.WriteBuffer(SendBuff^, BufSize, true);
finally
 FreeMem(SendBuff);
end;


flaxe   (2007-05-20 21:31:00) [13]

Потехонечку разбираюсь с сетевым протоколом, только вот на данный момент вопрос: допустим я в edit1.text записываю команду в HEX-формате, как её можно отправить на сервер и обратно, получив с сервера ответ впихнуть его в memo1.lines.add


Сергей М.   (2007-05-17 09:16:00) [14]


> возможно ли както "расшифровать" строки, и вообще что какие
> тут есть способы?
>


Судя по данным сниффера, протокол инф.обмена между сервером и клиентом подразумевает, что первое слово в инф.сообщениях (как сервера так и клиента) - это префикс, указывающий размер  сообщения в байтах, включая размер самого префикса.


flaxe   (2007-05-17 01:14:00) [15]

Начнем с малого:
Как мне принять всю строку целиком высланную мне с сервера? Както может можно определить её размер?

P.s. лазяя по буржуйским сайтам, часто натыкался на сокращение WSA... поиск ничего кроме World Snowmobile Association и World Summit Award :) не выдал, может известно что за хренотенька?


flaxe   (2007-05-17 00:56:00) [16]

Чето у меня нефига не получается :(
Вообщемто мне нужно написать БОТ'а для одной онлайн игрушки типа Ла2,
пользуюсь сейчас SMSniffer'ом + IdTCPClient1.Write(...);
но проблемма в том, что если на первую строку #$05#$00#$15#$0C#$FF судя по sniffer'y он отвечает то что нужно, то все следующее постоянно меняеются как длина строк, так и сами символы, хотя отдельные части остаются неизменными. Может кто уже занимался ранее чем-то подбным, возможно ли както "расшифровать" строки, и вообще что какие тут есть способы?


Nucer   (2007-05-11 04:49:00) [17]

>Как эти данные в SendBuff занести?
#$05#$00#$15#$0C#$FF


DVM   (2007-05-10 22:31:00) [18]


procedure TForm1.btnSendTCPCommandClick(Sender: TObject);
var
 SendBuff: array[1..15] of byte;
 RecvBuff: array[1..15] of byte;
begin
 IdTCPClient.Host := edtHost.Text;
 IdTCPClient.Port := strtoint(edtPort.Text);
 try
   IdTCPClient.Connect;
 except
   // Ошибка!
 end;
 
 SendBuff[1] := strtoint(edit1.Text);
 SendBuff[2] := strtoint(edit2.Text);
 SendBuff[3] := strtoint(edit3.Text);
 SendBuff[4] := strtoint(edit4.Text);
 SendBuff[5] := strtoint(edit5.Text);
 SendBuff[6] := strtoint(edit6.Text);
 SendBuff[7] := strtoint(edit7.Text);
 SendBuff[8] := strtoint(edit8.Text);
 SendBuff[9] := strtoint(edit9.Text);
 SendBuff[10] := strtoint(edit10.Text);
 SendBuff[11] := strtoint(edit11.Text);
 SendBuff[12] := strtoint(edit12.Text);
 SendBuff[13] := strtoint(edit13.Text);
 SendBuff[14] := strtoint(edit14.Text);
 SendBuff[15] := strtoint(edit15.Text);

 if IdTCPClient.Connected then
   begin
     IdTCPClient.WriteBuffer(SendBuff, SizeOf(SendBuff), true);
     IdTCPClient.ReadBuffer(RecvBuff, SizeOf(RecvBuff));
   end;

 if IdTCPClient.Connected then IdTCPClient.Disconnect;
end;


flaxe   (2007-05-10 21:37:00) [19]

А как мне послать именно "05 00 15 0C FF" ?
Как эти данные в SendBuff занести?


DVM   (2007-05-09 22:45:00) [20]

IdTCPClient.WriteBuffer(SendBuff, SizeOf(SendBuff), true);


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо