Vetalll 2 Опубликовано 25 марта, 2022 Я пишу свой Интерлюд сервер с нуля. Не спрашивайте зайчем - чисто для фана и для практики архитектуры, много-поточности, корутин и тд и тп. В момент когда клиент подключается к гейм серверу есть 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 исходников) Запустить Акис сервер пока нет возможности.. На выходных уже буду пробовать.. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Rogue 248 Опубликовано 25 марта, 2022 Там после ц4 смещение было на 4 байта точнее не подскажу не помню. Вот это место тебе нужно Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vetalll 2 Опубликовано 25 марта, 2022 (изменено) 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 Изменено 25 марта, 2022 пользователем Vetalll Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Rogue 248 Опубликовано 25 марта, 2022 Имя персонажа не шифруется при создании же Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vetalll 2 Опубликовано 25 марта, 2022 Все проблему решил.. Я был прав на счет пункта 2 Имя персонажа шифруется XOR ключем. Все пакеты ГеймСервера шифруются XOR ключем. XOR ключ оказывается не простой.. а 16 байтовый массив где первые 8 байт рандом, а вторые 8 байт это статик значения. (Вот тут и была моя проблема.. я юзал просто рандом на все 16 байт) Тему можно закрыть или вообще удалить.. Спасибо что хоть попытались помочь. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты