Показать сообщение отдельно
Старый 19.02.2012, 12:09   #81
Пользователь
 
Регистрация: 29.01.2012
Адрес: г. Минск
Сообщений: 64
Сказал Спасибо: 10
Имеет 5 спасибок в 5 сообщенях
Tin-moon пока неопределено
По умолчанию

Цитата:
Сообщение от 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;
        }

Последний раз редактировалось Tin-moon, 19.02.2012 в 12:12. Причина: Добавлено сообщение
Tin-moon вне форума   Ответить с цитированием