Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Вниз

Съэмулировать клиент   Найти похожие ветки 

 
flaxe ©   (2007-05-08 21:29) [0]

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


 
Dmitrij_K   (2007-05-08 22:45) [1]

сниффером http://www.nirsoft.net/utils/smsniff.html
для его работы нужен Winpcap http://www.winpcap.org/install/default.htm


 
flaxe ©   (2007-05-09 15:46) [2]

C SMSniff вроде разобрался, спасибо.
Можете показать на примере как осуществить такое...
Клиент шлет    -> 00000000  05 00 15 0C FF
Сервер выдает -> 00000000  07 00 15 0D 04 6A 03

Клиент шлет    -> 00000000  1F 00 15 03 3C 34 3A 24  3C 19 01 68 68 68 68 68
Клиент шлет    -> 00000010  68 5B 57 5A 56 55 51 68  68 68 68 68 68 68 00
Сервер выдает -> 00000000  0E 00 15 04 30 CC CC CC  CC 64 00 00 00 CC 0E 00
Сервер выдает -> 00000010  15 04 06 CC CC CC CC 00  00 00 00 CC

Или хотябы какими компонентами пользоваться нада в этом случае?
Подозреваю что idTCP раз TCP/Ip протокол...


 
flaxe ©   (2007-05-09 16:48) [3]

Собственно вопрос в том, как данные в HEX формате передавать/принимать по сети.


 
Belorus ©   (2007-05-09 17:50) [4]

А чем отличается HEX от не HEX формата ? В чём проблема то ?


 
flaxe ©   (2007-05-09 18:06) [5]

Как с помощью idTCP послать/принять что-нибудь?


 
DVM ©   (2007-05-09 22:45) [6]

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


 
flaxe ©   (2007-05-10 21:37) [7]

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


 
DVM ©   (2007-05-10 22:31) [8]


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;


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

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


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

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


 
flaxe ©   (2007-05-17 01:14) [11]

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

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


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


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


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


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

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


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


> команду в 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-21 18:16) [15]

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


 
flaxe ©   (2007-05-21 18:23) [16]

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


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

Заводишь отдельный буфер. Допустим 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;


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

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


 
flaxe ©   (2007-05-21 18:58) [19]

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


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

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


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

RF Online ^)


 
flaxe ©   (2007-05-21 19:23) [22]

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


 
flaxe ©   (2007-05-21 19:37) [23]

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


 
flaxe ©   (2007-05-21 20:46) [24]

С горем пополам чтото сделал, теперь самое интересное:
Данные сниффера, логин 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-27 10:50) [25]

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



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2008.02.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.042 c
15-1200217927
andreil
2008-01-13 12:52
2008.02.17
Как добавить в TTreeView простую строку?


15-1200544927
Slider007
2008-01-17 07:42
2008.02.17
С днем рождения ! 17 января 2008 четверг


2-1200839300
wii
2008-01-20 17:28
2008.02.17
eval() в Delphi


15-1200380983
Карелин Артем
2008-01-15 10:09
2008.02.17
Delphi 7 и Crystal Reports 11


2-1201080965
Urist
2008-01-23 12:36
2008.02.17
Exel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский