Ща пытаюсь пройти авторизацию.
А ты продолжаешь заниматься этой шнягой? по написанию бота
Добавлено через 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;
Последний раз редактировалось DjSeNseI, 17.12.2008 в 16:08.
Причина: Добавлено сообщение
procedure AddChecksum(var data:arrayofchar; position: Word);
var
i,k:Word;
begin
k := (position div4)-1;
for i := 0to k do
PCardinal(@data[position])^:=PCardinal(@data[position])^ xor PCardinal(@data[i*4])^;
end;
Добавлено через 2 часа 11 минут
Или вот из la2_client_emu
delphi Код:
procedure AddCheckSumm(var data: arrayofbyte; len: integer);
type trec = record
t0: byte;
t1: byte;
t2: byte;
t3: byte;
end;
var chksum: Longword;
i: integer;
ecx: Longword;
t: trec;
beginiflength(data)<len+4thenexit;
chksum := 0;
i := 0;
while i < len dobegin
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;
Последний раз редактировалось PanAm, 17.12.2008 в 18:47.
Причина: Добавлено сообщение
Народ пожалуйста уделите на меня маленько своего времени. Объясните примерно как правельно пользоваться процедурами-функциями ( Чексумме и авторизация). А точней как их использовать???
Народ пожалуйста уделите на меня маленько своего времени. Объясните примерно как правельно пользоваться процедурами-функциями ( Чексумме и авторизация). А точней как их использовать???
Ну вот к примеру пришёл мне пакет(инит) теперь надо составить пакет на авторизацию.
Цитата:
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
Составь плиз вручную пакет из этих даных для изучения плиз))))
Последний раз редактировалось DjSeNseI, 19.12.2008 в 16:32.
Причина: Добавлено сообщение
//к.сумма считается для блока начиная со смещ. 2, длиной 40 байт
То есть блок, для которого считается к.сумма начинается со 2-го байта (исключаем длину пакета) и до начала контрольной суммы (исключая к.сумму и хвостовые байты).
Как я понял это будет чексумма считаться вот так вот:
Цитата:
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
Так вот что выделено жирным шрифтом это чек сумма?