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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
 
 
Опции темы Опции просмотра
Старый 09.02.2019, 12:34   #1
Новичок
 
Регистрация: 09.02.2019
Сообщений: 2
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
kotelok пока неопределено
По умолчанию Второй пакет для GS

Приветствую.

Нужен совет, т.к. завис на том моменте, на котором, судя по форумам, у остальных никаких проблем не возникает, а именно - на шифровании (ксором?) пакетов для/от геймсервера.

----
Кратко суть вопроса - по какому алгоритму шифруются пакеты игрового сервера для клиента Gracia Final?

Дополнительно - написано, что полученный xor-ключ (отдельно для принимаемых и отправляемых пакетов) после каждого пакета модифицируется согласно данным из последнего пакета. А по какому алгоритму? Ключ представляется в виде целого числа и к нему просто суммируется размер последнего пакета (с переполнением) или там какая-нибудь хитрая хэш-функция?

----
Если это имеет значение, то ниже подробности.

Что есть:
1. LS успешно пройден.
2. GS принимает первый пакет, где указан протокол и отвечает успехом:
Код:
19 00 2e 01 95 ef 7c ec    e0 e6 bc c8 01 00 00 00
01 00 00 00 00 e1 16 22    27
2E=KeyPacket:c(id 0-wrong protocol,1-protocol ok)q(key)d(01)d(ServerID)c(01)d(ObfuscationKey)

Т.е. пакет не зашифрован и содержит два каких-то ключа - один на 8 байт, другой на 4 (в самом конце). Или в конце это контрольная сумма?

Дальше подключился оригинальным клиентом и через Wireshark посмотрел следующий пакет, который клиент отправляет на сервер. Согласно описанию протокола, пакет зашифрован и содержит запрос на подключение (в т.ч. логин и 4 кусочка ключей, полученных от LS):
Код:
27 00 37 bd c1 48 a8 7e    c2 0a c2 ec 7f 7e df ac
9d 0a 9f 79 05 e9 09 2e    d4 b1 5f 79 ea eb 4a 01
33 a4 31 de a2 4e ae
2B=AuthLogin:s(LoginName)d(PlayKey2)d(PlayKey1)d(L oginKey1)d(LoginKey2)d(Unknown)

И вот тут не понятно, как на базе ключей из первого ответа сервера правильно зашифровать 2B-пакет? Ну и для контроля расшифровать его же обратно тем же ключом.
kotelok вне форума   Ответить с цитированием
 

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


Опции темы
Опции просмотра

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

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


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

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

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