Показать сообщение отдельно
Старый 04.09.2009, 11:45   #13
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

xkor, пардон.
тогда смотреть
L2Xor.InitKey и начало TencDec.ProcessRecivedPacket

Цитата:
Эта процедура формирует начальный XOR ключ?
я в паскале ничего не понимаю
L2Xor.InitKey его формирует.
InitKey вызывается из ProcessRecivedPacket после прихода 00h/2Eh
ну.. стоит оговориться что это в идеальном случае..
в твоем я так понимаю используеться CorrectXor

delphi Код:
procedure TencDec.CorrectXor; var   Offset: Word;   TempPacket : Tpacket; begin //Обход смены XOR ключа. case pckCount of //В зависимости от номера пакета 3:  CorrectXorData := Packet; //3й по счету пакет в "сеансе связи" мы запоминаем 4begin //и используем тут       TempPacket := Packet;       xorS.DecryptGP(TempPacket.Data, TempPacket.Size-2);       Offset := $13 or ((TempPacket.size-7) div 295) shl 8;//получаем ключ ориентируясь на 4й и запомненный 3й пакет предварительно "продекриптив" 4й пакет. и попутно привев его к изначальному (?) виду.       PInteger(@TempPacket.Data[0])^:=PInteger(@TempPacket.Data[0])^ xor Offset xor PInteger(@(xorS.GKeyS[0]))^;       xorS.InitKey(TempPacket.Data[0],isInterlude); //собственно в TempPacket.Data[0] лежит наш ключик.       xorC.InitKey(TempPacket.Data[0],isInterlude); //чтобы всем было хорошо и в кеях у нас лежали "правильные" ключики, "учитываем" 4й пакет %)       if (not Settings.isNoDecrypt) then xorC.DecryptGP(CorrectXorData.Data, CorrectXorData.Size-2);       if (not Settings.isNoDecrypt) then xorC.EncryptGP(CorrectXorData.Data, CorrectXorData.Size-2);       InitXOR:=True;     end; end; end;
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 04.09.2009 в 11:58.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от: