PDA

Просмотр полной версии : Нужна помощь...


DjSeNseI
30.11.2008, 15:18
xkor: Выложи пожалуйста свой BlowFish для интерлюдии...
Очень нужно.:cray::cray::cray:

xkor
30.11.2008, 17:34
BlowFish уже сто раз выкладывался, и для интерлюдии он ничем не отличается от С4...

DjSeNseI
30.11.2008, 18:54
xkor:Ещё один маленький вопросик, я вроде всё правельно сделал
отправляю пакет на аторизацию а срвак малчит.
Вот пакет:
http://zdjsensei.ucoz.ru/1212134.JPG


Пожалуйста xkor/объясни в чём может быть моя ошибка.
Мне кажет что пакет малость не правельно составлен а вот где имено???

xkor
30.11.2008, 19:31
DjSeNseI, чексумма правильно расчитана?, пакет от сервера как выглядит?

DjSeNseI
30.11.2008, 19:47
Вот такой вот:
EF 7C 28 5A 78 0A

xkor
01.12.2008, 00:27
DjSeNseI, эм, на сколько я могу судить это какойто обрубок от пакета...
покажи целиком пакет
он либо 11 байт по размеру либо 160+

DjSeNseI
01.12.2008, 08:22
Вот :
EF 7C 28 5A 78 0A 00 00

А вот ява с4:
http://zdjsensei.ucoz.ru/5657.JPG

xkor
01.12.2008, 14:26
DjSeNseI, хм, ну для ява с4 нормальный пакетик а EF 7C 28 5A 78 0A 00 00 это что то ненормальное

DjSeNseI
01.12.2008, 16:38
Нуда этот обрубок мне тоже не очень нравится.:o:o
Ща поставлю яву с4 другую ато это маленько касячет...
По поже если что отпишусь.

PanAm
01.12.2008, 17:54
вот тут посмотри http://coderx.ru/showthread.php?t=670&page=3
тоже самое на сервере 217.13.197.170 - если конект на порт 2106 - то приходит пакет EF 7C 28 5A 78 0A 20 49 18 00 (очень похож на то что ты ловишь),

DjSeNseI
01.12.2008, 20:41
xkor:
Это шок-5 ип???:
217.13.197.170
Да да при конекти на этот ип этот обрубок приходит...
xkor скажи плиз вчём может быть причина на приходящий вот такой вота пакет.

ratvier
01.12.2008, 23:18
Вот так отвечает 217.13.197.170:2106

on_init
__________________________________________________ ____
0x00 | ba 00 00 ea d6 07 00 21 c6 00 00 7b 27 4a 38 ce
0x10 | b7 69 fd 90 0d 79 b5 5c d8 e4 87 f2 a4 47 17 85
0x20 | d1 55 00 58 38 c9 49 bc 1c 8d ee c3 f1 30 7d 32
0x30 | bf 4c dc 92 6b e5 2d f7 69 55 fa 9c 55 55 25 16
0x40 | 91 36 1c aa 50 c5 d9 8a 02 59 b1 9f d7 28 bc f3
0x50 | 72 4b 43 f0 f8 b3 30 60 51 ca 33 1a 17 72 a1 b1
0x60 | 95 2e 35 fe 0d 25 6c da b5 31 e7 ad a3 08 36 3a
0x70 | 43 35 18 a7 92 58 7a db 65 57 be 9f 7b d9 0b 32
0x80 | f1 0d 8b 6d 81 4e 32 6c 3a c2 b8 00 00 00 00 00
0x90 | 00 00 00 00 00 00 00 00 00 00 00 f5 21 63 1e 9c
0xa0 | 7d db ce 9b 6d 3f 1b c4 60 9f 40 00 00 00 00 00
0xb0 | 00 00 e2 c6 69 5e 09 9e 00 00

on_ggauth
__________________________________________________ ____
0x00 | 2a 00 0b ea d6 07 00 00 00 00 00 00 00 00 00 00
0x10 | 00 00 00 00 00 00 00 d5 18 6f 78 98 bd a7 3d 27
0x20 | 1c 9a 4e 80 6f 55 3d 27 1c 9a


LoginFail reason 0x14

xkor
01.12.2008, 23:46
Это шок-5 ип???:
217.13.197.170нет

DjSeNseI
02.12.2008, 07:31
ratvier: Ты через что делаешь конект к серваку???
Я пробовал через сокетTcp и через Indy idTcp всё равно приходит такой вот инит. Кстате ещё пробовал через Winapi конект тоже такой инит...

ratvier
02.12.2008, 09:53
DjSeNseI, Юзаю winsocket 2.2
Есть подозрение, что ты что-то неправильно делаешь

DjSeNseI
02.12.2008, 10:35
Ща тогда гляну что там у меня за глюк...

xkor
02.12.2008, 10:38
ты точно из сокета читаеш весь пакет а не ту часть что первой придти успела?, прост обычно функции чтения из сокета читают стока данных скока уже пришло и не ждут того количества которое ты просишь

PanAm
02.12.2008, 15:25
ИМХО, народ вы не туда смотрите, по ссылке что я давал, подтвержденный факт что приходит именно такой пакет, вопрос только в том, что это - ЛС линейки, какой либо антибот или вообще левый сервис. Автор проверь на 100% куда именно ты конектишся.

DjSeNseI
02.12.2008, 21:10
Да принцепи всё хочу чрез TcpClient сделать. Но по этому компаненту мало инфы. Хотя у мя есть не сколько вареантов на отправку пакетов.Ща занова пишу клиента:diablo::diablo:

Добавлено через 1 час 44 минуты
Народ может быть чексума у мя не правельная???


----------------------------------------------------------------------
procedure TL2Control.LSSetCheckSum; LSSetCheckSum
var
Pkt : String;
I : Integer;
Chksum, ECX: Longint;
begin
Pkt := '';
for I := 1 to Packet.Size-8 do Pkt := Pkt + Packet.Body[I];

chksum := 0;
i := 1;

while (i < Length(Pkt)) do
begin
ecx := Ord(pkt[i]);
ecx := ecx or Ord(pkt[i+1])shl 8;
ecx := ecx or Ord(pkt[i+2])shl 16;
ecx := ecx or Ord(pkt[i+3])shl 24;
chksum :=chksum xor ecx;
i := i+4;
end;

Pkt := IntToHex(Chksum, 8);
Packet.Body[Packet.Size-4] := Chr(StrToInt('$'+Copy(Pkt,1,2)));
Packet.Body[Packet.Size-5] := Chr(StrToInt('$'+Copy(Pkt,3,2)));
Packet.Body[Packet.Size-6] := Chr(StrToInt('$'+Copy(Pkt,5,2)));
Packet.Body[Packet.Size-7] := Chr(StrToInt('$'+Copy(Pkt,7,2)));
end;

DjSeNseI
04.12.2008, 17:39
Помогите пожалуйста.
Кому не валко выложите функцию на пакет RequestAuthLogin.
Ну или кто нибудь гляньте мою:
function TL2Control.LSRequestAuthLogin; // <- LSRequestAuthLogin
var
Login,
Password: String;
begin
Result.Info := 'RequestAuthLogin';
Result.Size := 48;
Result.Body := #$00+
#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+ #$00+#$00+#$00+#$00+
#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+ #$00+#$00+#$00+#$00+#$00+#$00+
#$08+#$00+#$00+#$00+#$00+#$00+#$00+#$00+#$00+
#$00+#$00+#$00+#$00+
#$00+#$00+#$00+#$00;

// приводим к нужному виду логин и пароль
Login := InAccount.Username;
Password := InAccount.Password;
while Length(Login) < 14 do Login := Login + #$00;
while Length(Password) < 16 do Password := Password + #$00;

SetPeace( Login, Result, 2, 15);
SetPeace(Password, Result, 16, 31);

LSSetCheckSum(Result);
LSEncryptPacket(Result);
end;

NLObP
04.12.2008, 19:21
Ну или кто нибудь гляньте мою

И ты в серьез думаешь, что по этому кусочку тебе помогут?

DjSeNseI
07.12.2008, 10:46
ну а вдруг кто нибудь поможет. Я и сам в принцепи пробую разобраться со блушишем и чек суммой. но пока как то не очень у мя есть 3 разных чексуммы и ни одна не хочет работь и так же блюфишь...

Добавлено через 3 минуты
И ещё кто нибудь знает с4 яву сборку с плохой защитой для эксперементов. Кто знает скажите название или адрес... Пожалуйста

NLObP
07.12.2008, 13:23
ну а вдруг кто нибудь поможет. Я и сам в принцепи пробую разобраться со блушишем и чек суммой. но пока как то не очень у мя есть 3 разных чексуммы и ни одна не хочет работь и так же блюфишь...

Добавлено через 3 минуты
И ещё кто нибудь знает с4 яву сборку с плохой защитой для эксперементов. Кто знает скажите название или адрес... Пожалуйста

Я это к тому, что по тому куску, что ты выложил много не понятно, что в нём делается.
Могу посоветовать локальный С4 сервер, тренеруйся сколько влезет.

Вот, я как то пробовал делать:

function pkt_ckecksum(pos: integer; count: integer):cardinal;
var
i, j : integer;
crc, chksum : longint;
begin
j:=pos; //начало для подсчета контрольной суммы
crc:=0;
chksum:=0;
for i:=0 to (count div 4) do //длину считаем блоками по 4
begin
crc:=PacketB[j];
crc:=crc or (PacketB[j+1] shl 8);
crc:=crc or (PacketB[j+2] shl 16);
crc:=crc or (PacketB[j+3] shl 24);
chksum := chksum xor crc;
j:=j+4;
end;
//move(chksum,PacketB[count+pos],4);
result:=chksum;
end;

procedure build_RequestAuthLogin();
begin
//pos начинается с 0!!!
InitPkt; //инициализируем пакет
WriteW($32); //"\x32\x00" - длина пакета постоянна и равна 0x30 + 0x02
WriteID($00); //"\x00" - тип пакета (0x00 - RequestAuthLogin)
{pos:=$03;}
WriteS(DefaultAccount); //"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x 00\x00" - login
pos:=$11; WriteS(DefaultPassword); //"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x 00\x00\x00\x00" - password
pos:=33; WriteB($08); //"\x08" - означает конец секции login/password
// WriteD($0); //"\x00\x00\x00\x00\x00\x00\x00\x00" - в c3 не применяется (зарезервированно?)
// WriteD($0); //
pos:=$2a; WriteD(pkt_ckecksum(2,40)); // чексумма
WriteD($0); //"\x00\x00\x00\x00";
//к.сумма считается для блока начиная со смещ. 2, длиной 40 байт
// add_ckecksum(2,40);
end;



PS: придумал не сам, брал из материалов на разных сайтах.

DjSeNseI
07.12.2008, 19:29
Cпс тебе за помощь ща поробую...
А насщёт лакал серва у мя он стоит.

Добавлено через 1 час 9 минут
Всё равно у мя ни чего не получается.Вот такое вылазиет:
Client is not using latest Authentication method. (Min is 0)
Client is not using latest Authentication method. (Min is 0)
Client is not using latest Authentication method. (Min is 0)

DjSeNseI
09.12.2008, 11:16
Помогите плиз с отправкой пакетов через TcpClient...
Я совсем запутался и инфы в нете совсем нету про TcpClient.!.

PanAm
10.12.2008, 17:03
DjSeNseI, ИМХО, я тоже пробовал делать через TcpClient, вроде как через жо.. получается :mad:
похоже, если хочешь использовать компоненты, лучше делать через TClientSocket, в его свойстве Socket вроде все что нужно есть.

DjSeNseI
10.12.2008, 20:25
Что то мне кажется что через TClientSocket нельзя для Л2 проги мутить...
Ну не знаю ща попробую что нибудь замутить.

PanAm: Если ты что нибудь найдешь про TcpClient поделись пожалуйста.

DjSeNseI
16.12.2008, 19:56
Подскажите пожалуйста в чём ошибка может тут быть.
Помогите плиз)))
Вот скрин ошибки:
http://zdjsensei.ucoz.ru/error.JPG
Вот мой исходник:
http://zdjsensei.ucoz.ru/Src.rar

dmitry501
17.12.2008, 06:33
Ошибка в твоем сервере. Это не Л2 протокол. Ты пытаешься идентицицировать первые 2 байта как длину пакета, а это не так.
Смени IP на нормальный сервер, например на руофф - 89.249.27.112 и ты не получишь ошибку.

DjSeNseI
17.12.2008, 11:18
Не ничего не помогает...
У мя на локалке ява стоит даже туда когда конекчусь то пакет приходит маленикий но всё равно ошибка вылазиет.
На русоф пробовал туда у меня даже не хочет конектится...

Мне кажет в приёме пакетов у меня где-то ошибка но не могу понять в чём ошибка. Пробовал разными способами получать пакеты но всё равно ошибка...

Да кстате в лист-бокс у меня приходит пакет нормально но только корявый.
А в мемо ни как не хочет.

PanAm
17.12.2008, 14:54
этот код
Client.Socket.ReceiveBuf(size, 2);
SetLength(pck, size-2);
Client.Socket.ReceiveBuf(pck[1], size-2);
mes.Lines.Add(StringToHex(pck,' '));
исправь на
if Client.WaitForData(1000) then begin
Client.ReceiveBuf(size, 2);
SetLength(pck, size);
Client.ReceiveBuf(pck[1], size);
mes.Lines.Add(IntToStr(size)+' - '+StringToHex(pck,' '));
end;

DjSeNseI
17.12.2008, 15:06
PanAm: Вроде всё работает...

PanAm
17.12.2008, 15:15
наздоровье, обычно не следующем шаге ломаются и бросают...

DjSeNseI
17.12.2008, 16:08
Ща пытаюсь пройти авторизацию.
А ты продолжаешь заниматься этой шнягой? по написанию бота

Добавлено через 20 минут
PanaM: Объясни плиз что это такое PacketB-ниже где это встречается???


function pkt_ckecksum(pos: integer; count: integer):cardinal;
var
i, j : integer;
crc, chksum : longint;
begin
j:=pos; //начало для подсчета контрольной суммы
crc:=0;
chksum:=0;
for i:=0 to (count div 4) do //длину считаем блоками по 4
begin
crc:=PacketB[j];
crc:=crc or (PacketB[j+1] shl 8);
crc:=crc or (PacketB[j+2] shl 16);
crc:=crc or (PacketB[j+3] shl 24);
chksum := chksum xor crc;
j:=j+4;
end;
//move(chksum,PacketB[count+pos],4);
result:=chksum;
end;

PanAm
17.12.2008, 18:47
хз, тут у xkorа наверно понятней
http://coderx.ru/showpost.php?p=19192&postcount=12
procedure AddChecksum(var data:array of char; position: Word);
var
i,k:Word;
begin
k := (position div 4)-1;
for i := 0 to k do
PCardinal(@data[position])^:=PCardinal(@data[position])^ xor PCardinal(@data)^;
end;

[I]Добавлено через 2 часа 11 минут
Или вот из la2_client_emu
procedure AddCheckSumm(var data: array of byte; len: integer);
type trec = record
t0: byte;
t1: byte;
t2: byte;
t3: byte;
end;
var chksum: Longword;
i: integer;
ecx: Longword;
t: trec;
begin
if length(data)<len+4 then exit;
chksum := 0;
i := 0;
while i < len do begin
t.t0 := data[i];
t.t1 := data[i + 1];
t.t2 := data[i + 2];
t.t3 := data[i + 3];
ecx := Longword(t);
chksum := chksum xor ecx;
i := i + 4;
end;
t := trec(chksum);
data[len]:=t.t0;
data[len+1]:=t.t1;
data[len+2]:=t.t2;
data[len+3]:=t.t3;
end;

DjSeNseI
19.12.2008, 15:52
Народ пожалуйста уделите на меня маленько своего времени. Объясните примерно как правельно пользоваться процедурами-функциями ( Чексумме и авторизация). А точней как их использовать???:o:o:o

NLObP
19.12.2008, 16:07
Народ пожалуйста уделите на меня маленько своего времени. Объясните примерно как правельно пользоваться процедурами-функциями ( Чексумме и авторизация). А точней как их использовать???:o:o:o

Смотри внимательно, я давал пример
procedure build_RequestAuthLogin();
begin
InitPkt;
WriteW($32);
WriteID($00);
WriteS(DefaultAccount);
pos:=$11; WriteS(DefaultPassword);
pos:=33; WriteB($08);
pos:=$2a; WriteD(pkt_ckecksum(2,40)); // <----- чексумма
WriteD($0);
end;

DjSeNseI
19.12.2008, 16:32
Ну вот к примеру пришёл мне пакет(инит) теперь надо составить пакет на авторизацию.

RequestAuthLogin

Формат:
32 00 // Длина
00 // Тип
XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Login массив из 14 символов
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX // Password 16 символов
08 00 00 00 00 00 00 00 00
XX XX XX XX // чексумма
00 00 00 00


Пытаюсь ща вручную состряпать пакет. Вот мой тест пакет изготовлен вручную:

32 00
00
64 6A 73 65 6E 73 65 69 //Логин(djsensei)
32 31 75 68 65 67 67 66 6B 36 //Пароль(21uheggfk6)
08 // Маркер конца
00 00 00 00 00 00 00 00
XX XX XX XX // Чек сумма
00 00 00 00

Это правельно составлено???Без чек суммы.
Как вручную определить чек-сумму?

Добавлено через 6 минут
Помоги плиз с пакетом:
Вот даные.
Логин=djsensei
Пароль=21uheggfk6

Составь плиз вручную пакет из этих даных для изучения плиз)))):confused::confused::o

NLObP
19.12.2008, 16:41
//к.сумма считается для блока начиная со смещ. 2, длиной 40 байт
То есть блок, для которого считается к.сумма начинается со 2-го байта (исключаем длину пакета) и до начала контрольной суммы (исключая к.сумму и хвостовые байты).

DjSeNseI
19.12.2008, 16:48
Как я понял это будет чексумма считаться вот так вот:

32 00
00
XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
08 00 00 00 00 00 00 00 00
XX XX XX XX // чексумма
00 00 00 00

Так вот что выделено жирным шрифтом это чек сумма?

marslem
19.12.2008, 18:19
чек сумма-это когда в магазине тебе выдают бумажку на которой разные цифарки-это чек,а тебе нужна еще и сумма и ты смотришь на то что купил и на последние цифры и их сумму внизу
чек сумма чек сумма...

NLObP
19.12.2008, 18:41
00
XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
08 00 00 00 00 00 00 00 00

Для этого куска надо подсчитывать к.сумму. А как ты её будешь считать, решай сам.

DjSeNseI
20.12.2008, 22:31
//
Всё я прошёл авторизацию на логин сервере...:friends:
Теперь пробую авторицоваться на гейм сервере.


Помогите пожалуйста!
После авторизации на логин сервере можно вообще закрыть соединение а потом на GS открыть новый конект???????????????????????????????????????????? ??????????????????????
Я получил ип+порт. теперь можно смело туда конектится?

PanAm
22.12.2008, 13:48
по идее да
PS. исходники не покажешь? )

xkor
23.12.2008, 04:04
Я получил ип+порт. теперь можно смело туда конектится?можно, и сразу же отсылать пакет с версией протокола и константой)

DjSeNseI
23.12.2008, 17:43
А теперь объясните плиз а для чего мы конектились на логин сервер???
Я думаю так что когда прошёл типа проверку на логин сервере в ГС передаются мои даные типа я с этого ипа типа могу поиграть.
:oТак получается:o

Добавлено через 1 минуту

PS. исходники не покажешь? )

Извини не могу показать исходники...
Потом если пройду ГС то может быть что нибудь выложу.

dmitry501
23.12.2008, 20:11
Коннектились на логин сервер, чтобы получить 2 ключа, которые передаем гейм-серверу. Гейм - сервер не проверяет пароль.

DjSeNseI
23.12.2008, 20:52
Ну вроде поняль буду пробовать...

DjSeNseI
02.01.2009, 16:21
Что-то со всем стало тут глухо по программированиююю...
Так даже не интересно.:eek:

Но у меня возник один маленький вопросик, а у Камаеля шифрация такая же осталась как у Интерлюдии?

Пожалуйста если кто нибудь знает где можно почитать про создание компанентов скажите мне плиз...
Я хочу написать не большой компонент для Delphi на авторизацию на сервераххх.:eek:

AdDa
06.01.2009, 13:58
Алгоритм такой же... размер ключа тоже.
Изменения лишь в ID пакетов.

З.Ы. А вообще есть такой замечательный сайт l2jserver.com. Там сурсы по бранчам для каждых хроник разложены

DjSeNseI
08.01.2009, 18:57
xkor : А пакетхак что не работает с ботом?
Я пробовал замустить пакетхак а потом и бота вылазиет ошибка...
Мне надо изучить пакеты ГС

xkor
09.01.2009, 04:05
работает...

Stimer
03.02.2009, 18:33
Может кому пригодится...

procedure SendGsp(data: array of byte; len: integer;crypt:boolean);
var
send_buff: array [0..MAX_PKT_SIZE-1] of byte; //Буфер отправки
temp_buff: array [0..MAX_PKT_SIZE-1] of byte; //Буфер шифрования
pl: string; //Длина пакета
begin
move(data[0],temp_buff[0],len); // Переносим в темп
if crypt then EncryptGP(temp_buff,len); // Если нада шифруем
pl:= IntToHex(len+2,4); // ******************
send_buff[0]:=StrToInt('$'+pl[3]+pl[4]);// Высчитываем длину пакета и
send_buff[1]:=StrToInt('$'+pl[1]+pl[2]);// записываем в первые 2 байта
move(temp_buff,send_buff[2],len); // Добавляем остальную часть пакета
len:=len+2; // Коректируем длину пакета +2
//view_pkt(send_buff,Len,false); // Просмотр пакета
send(Sock,send_buff,len,0); // Собсно отправка
end;


И пакет ProtocolVersion для ИЛ:


version_data: array[0..264] of byte=(
$00, $EA, $02, $00, $00, $09, $07, $54, $56, $03, $09, $0B, $01, $07, $02, $54,
$54, $56, $07, $00, $02, $55, $56, $00, $51, $00, $53, $57, $04, $07, $55, $08,
$54, $01, $07, $01, $53, $00, $56, $55, $56, $01, $06, $05, $04, $51, $03, $08,
$51, $08, $51, $56, $04, $54, $06, $55, $08, $02, $09, $51, $56, $01, $53, $06,
$55, $04, $53, $00, $56, $56, $53, $01, $09, $02, $09, $01, $51, $54, $51, $09,
$55, $56, $09, $03, $04, $07, $05, $55, $04, $06, $55, $04, $06, $09, $04, $51,
$01, $08, $08, $06, $05, $52, $06, $04, $01, $07, $54, $03, $06, $52, $55, $06,
$55, $55, $51, $01, $02, $04, $54, $03, $55, $54, $01, $57, $51, $55, $05, $52,
$05, $54, $07, $51, $51, $55, $07, $02, $53, $53, $00, $52, $05, $52, $07, $01,
$54, $00, $03, $05, $05, $08, $06, $05, $05, $06, $03, $00, $0D, $08, $01, $07,
$09, $03, $51, $03, $07, $53, $09, $51, $06, $07, $54, $0A, $50, $56, $02, $52,
$04, $05, $55, $51, $02, $53, $00, $08, $54, $04, $52, $56, $06, $02, $09, $00,
$08, $03, $53, $56, $01, $05, $00, $55, $06, $08, $56, $04, $0D, $06, $07, $52,
$06, $07, $04, $0A, $06, $01, $04, $54, $04, $00, $05, $02, $04, $54, $00, $09,
$52, $53, $05, $04, $01, $04, $05, $05, $01, $52, $51, $52, $0D, $06, $51, $08,
$09, $54, $53, $00, $0D, $01, $02, $03, $54, $53, $01, $05, $03, $08, $56, $54,
$07, $02, $54, $0B, $06, $DC, $4F, $61, $4F
);
Пакет протокола версии 746 под Ил
Отправляем пакет
procedure GS_ProtocolVersion;
begin
SendGsp(version_data,265,false);
end;

если нада изменить протокол то...
procedure GS_ProtocolVersion;
var
hex_ver: string;
data: array[0..260] of char;
begin
move(version_data,data,265);
hex_ver:=IntToHex(746,8); //Пишем версию...
data[1]:=Chr(StrToInt('$'+hex_ver[7]+hex_ver[8]));
data[2]:=Chr(StrToInt('$'+hex_ver[5]+hex_ver[6]));
data[3]:=Chr(StrToInt('$'+hex_ver[3]+hex_ver[4]));
data[4]:=Chr(StrToInt('$'+hex_ver[1]+hex_ver[2]));
SendPkt(data,length(data));
end;


В ответ получаем от сервера пакет CryptInit и отселе идет пляска с бубнами...