Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 04.09.2009, 01:10   #11
Новичок
 
Регистрация: 03.09.2009
Сообщений: 5
Сказал Спасибо: 2
Имеет 0 спасибок в 0 сообщенях
roma_ пока неопределено
По умолчанию

Еще раз спасибо alexteam за ответ.

Алгоритм примерно понял, помогите разобраться каким образом L2PacketHack получает НАЧАЛЬНЫЙ XOR ключ для дешифровки первого пакета?

пакет с ключем KeyInit
0001 03 B1 93 B6 01 00 00 00 01 00 00 00

следующий пакет (еще не дешифрован)
17 E8 E0 E0 02 12 AE F0 F4 43 4B 05 E7 EA 56 5A 5E....

этот же пакет но после дешифровки L2PacketHack
13 01 00 00 43 7C E8 D9 00 49 00 4E 43 61 E8 8B 00....

восстанавливаю XOR ключ, получаю:
04 FE 08 00 A1 6C 54 87 04

байты с 5 по 8 понятно, это константный ключ, а вот первые четыре совсем не совпадают с ключом из пакета KeyInit

как получился такой ключ?

Добавлено через 1 час 48 минут
Эта процедура формирует начальный XOR ключ?
я в паскале ничего не понимаю

procedure TencDec.CorrectXor;
var
// tmp: string;
Offset: Word;
TempPacket : Tpacket;
begin
//Обход смены XOR ключа.
case pckCount of
3: CorrectXorData := Packet;
4: begin
TempPacket := Packet;
// SetLength(tmp, TempPacket.Size);
// Move(TempPacket, tmp[1], TempPacket.Size);
xorS.DecryptGP(TempPacket.Data, TempPacket.Size-2);
Offset := $13 or ((TempPacket.size-7) div 295) shl 8;
PInteger(@TempPacket.Data[0])^:=PInteger(@TempPacket.Data[0])^ xor Offset xor PInteger(@(xorS.GKeyS[0]))^;
xorS.InitKey(TempPacket.Data[0],isInterlude);
xorC.InitKey(TempPacket.Data[0],isInterlude);
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;

Если да, то пожалуйста ответьте на вопросы:
1)
TempPacket.size это размер четвертого пакета? (в котором передаются данные о выбранном персонаже)?

2) откомментируйте чего происходит в этих строках

PInteger(@TempPacket.Data[0])^:=PInteger(@TempPacket.Data[0])^ xor Offset xor PInteger(@(xorS.GKeyS[0]))^;
xorS.InitKey(TempPacket.Data[0],isInterlude);
xorC.InitKey(TempPacket.Data[0],isInterlude);
if (not Settings.isNoDecrypt) then xorC.DecryptGP(CorrectXorData.Data, CorrectXorData.Size-2);
if (not Settings.isNoDecrypt) then xorC.EncryptGP(CorrectXorData.Data, CorrectXorData.Size-2);

Последний раз редактировалось roma_, 04.09.2009 в 01:10. Причина: Добавлено сообщение
roma_ вне форума   Ответить с цитированием
 

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 02:45.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!