Перейти к содержанию
Авторизация  
Vetalll

IL клиент шлет битые строки на геймсервер

Рекомендуемые сообщения

Я пишу свой Интерлюд сервер с нуля. Не спрашивайте зайчем - чисто для фана и для практики архитектуры, много-поточности, корутин и тд и тп.

В момент когда клиент подключается к гейм серверу есть 2 основых пакета:

08 - RequestAuthLogin
0B - CharacterCreate 

Первый пакет шлет аккаунт а второй имя создаваемого перса. Так вот проблема в том что клиент шлет только 3 символа правильно. 
Если аккаунт или имя длинее 3х символов то все ломается.

Вот расшифрованный пакет CharacterCreate с именем нового чара TheName:
[67, 0, 11, 84, 0, 104, 0, 101, 0, 78, 63, 31, -54, 69, 45, 16, -6, -37, 0, 0, 0, 0, 0, 0, 0, 0, 63, 126, -54, 40, 45, 117, -6, -37, 0, 0, 0, 0, 0, 0, 0, 0, 63, 126, -54, 40, 45, 117, -6, -37, 0, 0, 0, 0, 0, 0, 0, 0, 63, 126, -54, 40, 45, 117, -6, -37, 0, 4, 83, 0, 86, 86, 83, 1, 9, 2, 9, 1, 81, 84, 81, 9, 85, 86, 9, 3, 4, 7, 5, 85, 4, 6, 85, 4, 6, 9, 4, 81, 1, 8, +65,436 more]

Вопрос в начале пакета
67 - Длина пакета
0,11 - Оп код

84,0 - 'T'
104,0 - 'h'
101,0 - 'e'
78 - 'N'.   (1  байт вместо 2) !!!!!!!

63, 31, -54 и так далее уже какойто мусор

Я подглядываю в фришные исхдники для всяких частей по типу структуры пакета и шифрации. Шифрование должно работать ОК (В теории, так как я брал с aCis исходников)
Запустить Акис сервер пока нет возможности.. На выходных уже буду пробовать.. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там после ц4 смещение было на 4 байта точнее не подскажу не помню.

Вот это место тебе нужно

8M3NcLl.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Quote

Там после ц4 смещение было на 4 байта точнее не подскажу не помню.

Да. Это в Логин Сервере - тут у меня все ок.
А вот в Гейм сервере. В aCis. сборке он называется AuthLogin.  Подправлю название пакета в топике
Посмотрите пример с CharacterCreate в топике выше.

проблемы в чтении имени в этом пакете в чтении никнейма более 3х символов

public final class CharacterCreate extends L2GameClientPacket
{

   @Override
   protected void readImpl()
   {
      _name = readS();
      _race = readD();
      _sex = (byte) readD();
      _classId = readD();
      _int = readD();
      _str = readD();
      _con = readD();
      _men = readD();
      _dex = readD();
      _wit = readD();
      _hairStyle = (byte) readD();
      _hairColor = (byte) readD();
      _face = (byte) readD();
   }
}   

Ну и в AuthLogin в чтении аккаунта длинее 3х символов

Собсвтено я думаю тут 2 проблемы
- Корявый патч или папка систем (У меня Win 10 x 64)
- Не правильно инициализирую шифрование в CryptPacket / CryprInit

Изменено пользователем Vetalll

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имя персонажа не шифруется при создании же

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все проблему решил.. Я был прав на счет пункта 2
Имя персонажа шифруется XOR ключем.  Все пакеты ГеймСервера шифруются XOR ключем.
XOR ключ оказывается не простой.. а 16 байтовый массив где первые 8 байт рандом, а вторые 8 байт это статик значения.   (Вот тут и была моя проблема.. я юзал просто рандом на все 16 байт)

Тему можно закрыть или вообще удалить.. Спасибо что хоть попытались  помочь.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...