Показать сообщение отдельно
Старый 16.06.2009, 09:27   #1
Новичок
 
Регистрация: 06.06.2009
Сообщений: 28
Сказал Спасибо: 8
Имеет 5 спасибок в 5 сообщенях
Asmoday пока неопределено
По умолчанию Шифрование по алгоритму XOR

Доброго всем времени суток!
Начал было писать программку эмулирующую вход на сервер, но столкнулся с проблемой. Авторизацию на логин сервере прохожу вполне успежно, получаю ключи СессионИД и т.д. Загвозка заключается вот, в чем, не могу пройти логин на гейм сервере.
Часть кода взял из л2пакетхака. Пробую следующие:

PHP код:
const
  
Login='testtest';

var
  
XorOutXorInTCodingClass;
  
Data:string;

....
  
XorIn:=L2Xor.Create;
  
XorOut:=L2Xor.Create;
  
XorIn.InitKey(Key,True);
  
XorOut.InitKey(Key,True);
....
  
Data:='08'// RequestAuthLogin
  
Data:=Data+StringToHex(Login,'00')+'0000'//Добавляем имя акка
  
Data:=Data+IntToHex(SessionKey2_2,8); //SessionKey2_2
  
Data:=Data+IntToHex(SessionKey2_1,8); //SessionKey2_1
  
Data:=Data+IntToHex(SessionKey1_2,8); //SessionKey1_2
  
Data:=Data+IntToHex(SessionKey1_1,8); //SessionKey1_1
  
Data:=Data+'01000000'// Хм, что не знаю, но в пакете не изменно.
  
Data:=HexToStr(Data);

  
XorOut.EncryptGP(Data[1],Length(Data)); 
Сервер (и ява и птс) пишут что неверный сессион ид.
Подскажите где трабла, в чем ошибка?

И еще, я так понял, что при приеме/отправке любого пакета, ключ шифрования меняется, соответсвенно 2 вопроса:
а) Как меняется (+ или - к ключу от длинны пакета, учитываются ли те 2 байта что указывают на длунну самого пакета)
б) Учитывается ли 1 исходящий пакет ProtocolVervion и 1 входящий KeyInit при установке ключа.

Если можно немного коментов про смену ключа во время работы. Заранее благодарю.

Последний раз редактировалось Asmoday, 16.06.2009 в 09:41. Причина: Поэксперементировал, помогло :)
Asmoday вне форума   Ответить с цитированием