Цитата:
Сообщение от ErgoZ
tin-moon а ты на яве пишешь? или на другом языке?
|
Java
Добавлено через 10 часов 8 минут
Цитата:
Сообщение от Kilatif
Tin-moon, у меня с сокетами тоже не все впорядке, поэтому врятли тебе в этом помогу) Что касается ProtocolVersion. Я посылаю первый вариант, т.е. с константой, просто потому что так делает клиент, хотя прокатывает и второй.
|
Странно получил данные отрубился от логина подрубился к гейм, отправил ProtocolVersion без констант - реакции никакой. Отправил с константами реакции никакой). Возник вопрос константы как формируются?? А длина пакета с константами 267 байт? Без констант я так предпологаю что длина 5 байт? Или я ошибся где-то?
Пихаю гейм серверу пакеты, а реакции нету. В чем может быть проблема?
Добавлено через 15 часов 25 минут
Цитата:
Сообщение от Kilatif
Что касается шифрации.
Первые 2 пакета не шифруются (ProtocolVersion(Client->GS) и KeyInit(GS->Client)).
Пакеты после KeyInit шифруются xor-шифрованием со сменой ключа. Первый ключ берется в пакете KeyInit, остальные берутся из следующих пакетов.
Во вложении класс для работы с этим xor-шифрованием
|
Наконец получилось отправить ProtocolVersion. Незнаю что было, отправлял одно и тоже (заработало с константами). Вопрос по существу:
Получил KeyInit, переписал xor-шифрованием под яву, возник вопрос зачем public void InitKey(long keyInit) - что ты туда подпихиваешь (это ключ который пришел в KeyInit?) и самое интересное, зачем keyConst?
Код:
public CryptXor()
{
isInit = true;
}
public void InitKey(long keyInit)
{
byte[] keyConst = new byte[8] {0xC8, 0x27, 0x93, 0x01, 0xA1, 0x6C, 0x31, 0x97};
this.keyLength = 15;
Array.Copy(BitConverter.GetBytes(keyInit), 0, GKeyS, 0, 8);
Array.Copy(keyConst, 0, GKeyS, 8, 8);
Array.Copy(GKeyS, 0, GKeyR, 0, 16);
this.isInit = true;
}