Доброе время суток. Подскажи в чем мб проблема дешифрую трафик с гейм сервера потом сверяю как расшифровывает l2phx и есть разница.
8байт норм расшифровывается потом 8 байт неправильно потом опять 8 норм и т д
вот процедуры расшифровки
Код:
procedure TCryptXOR.Decrypt(var Data; const Size: Word);
var
k:integer;
pck:array[0..90] of Byte absolute Data;
begin
if(not isInit)or(size<1)then Exit;
for k:=size-1 downto 1 do
pck[k]:ck[k] xor GKeyR[k and keyLen] xor pck[k-1];
pck[0]:ck[0] xor GKeyR[0];
Inc(PCardinal(@GKeyR[keyLen-7])^,size);
end;
procedure TCryptXOR.InitKey(const keyInit; const Size: Cardinal);
const
KeyConst: array[0..3] of Byte = ($A1,$6C,$54,$87);
KeyConstInterlude: array[0..7] of Byte = ($C8,$27,$93,$01,$A1,$6C,$31,$97);
begin
if Size=16 then begin
keyLen:=15;
Move(keyInit,GKeyS,8);
Move(KeyConstInterlude,GKeyS[8],8);
end else begin
keyLen:=7;
Move(keyInit,GKeyS,4);
Move(KeyConst,GKeyS[4],4);
end;
Move(GKeyS,GKeyR,16);
isInit:=True;
end;
вот так инициализирую ключ
Код:
procedure KeyPacket(buff: array of byte; Len: integer);
begin
Move(buff[4],key,16);
fCryptSrv:=TCryptXOR.Create;
fCryptSrv.InitKey(key,16);
end
Вот так расшифровываю
Код:
fCryptSrv.Decrypt(buff[2],len-2);
Добавлено через 11 часов 16 минут
Вопрос снимается сам разобрался