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?
Tin-moon, keyConst это константная часть ключа. Зачем она - вопрос к разработчикам алгоритма, ну вот захотелось им что бы половина ключа приходила от серва а половина была константой...
ЗЫ в чем смысл передавать keyInit в метод в виде числа и преобразовывать там в массив, если эти байты ты получаешь из пакета в виде массива, смысл их в число превращать а потом обратно, только лишнее место для возможной ошибки делаешь
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Последний раз редактировалось xkor, 19.02.2012 в 14:00.
Tin-moon, keyConst это константная часть ключа. Зачем она - вопрос к разработчикам алгоритма, ну вот захотелось им что бы половина ключа приходила от серва а половина была константой...
ЗЫ в чем смысл передавать keyInit в метод в виде числа и преобразовывать там в массив, если эти байты ты получаешь из пакета в виде массива, смысл их в число превращать а потом обратно, только лишнее место для возможной ошибки делаешь
По описанию нужно 16 байт брать (красным)? или 8??
И еще где посмотреть какие пакеты дальше? В описаниях нету таких которые перехватывает l2phx.3.5.9.113.
xkor, где-то ты и прав. Ну.. у меня эта функция переписана (кстати с исходников корректора =) ) и я решил ничего не трогать. А вообще лично мне с числами работать приятнее и удобнее.
вот мой пакет KeyInit
2E 01 - тип
BE AA E1 05 28 10 97 D9 C8 27 93 01 A1 6C 31 97 - ключ
01 00 00 00 00 00 00 00 00 00 00 00 00 - константа
Жирным выделена та самая константа, которую ты выделил в функции
Вообще эта константа должна быть всегда в KeyInit. Но у тебя я ее не наблюдаю, отсюда следует вывод: либо эта константа для тебя только лишняя, потому что у тебя KeyInit какой-то другой, либо KeyInit ты мне показал не правильный.
Добавлено через 1 минуту Tin-moon, Да и вообще, в конце-то концов пора узнать, для каких хроник ты пишешь чат-клиент? )
Последний раз редактировалось Kilatif, 19.02.2012 в 15:46.
Причина: Добавлено сообщение
xkor, где-то ты и прав. Ну.. у меня эта функция переписана (кстати с исходников корректора =) ) и я решил ничего не трогать. А вообще лично мне с числами работать приятнее и удобнее.
вот мой пакет KeyInit
2E 01 - размер
BE AA E1 05 28 10 97 D9 C8 27 93 01 A1 6C 31 97 - ключ
01 00 00 00 00 00 00 00 00 00 00 00 00 - константа
Жирным выделена та самая константа, которую ты выделил в функции
Вообще эта константа должна быть всегда в KeyInit. Но у тебя я ее не наблюдаю, отсюда следует вывод: либо эта константа для тебя только лишняя, потому что у тебя KeyInit какой-то другой, либо KeyInit ты мне показал не правильный.
Добавлено через 1 минуту Tin-moon, Да и вообще, в конце-то концов пора узнать, для каких хроник ты пишешь чат-клиент? )
У меня почему-то повторяется.
Код:
0x19, 0x00, - размер пакета
0x2e, 0x01, - тип
0x70, 0x5e, 0x4c, 0x79, 0x4d, 0x85, 0xf2, 0x44, - я предполагаю, что это ключ
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00- непонятные.. в описании 2 раза только повторились.
Меня интересует следующий пакет в l2px(0x82)т.е. второй пакет который мы отправляем к серверу
Последний раз редактировалось Tin-moon, 19.02.2012 в 15:33.
Tип: 0x2B (ReqAuthLogin)
Pазмер: 57+2
0002 s LoginName
001A d PlayKey2
001E d PlayKey1
0022 d LoginKey1
0026 d LoginKey2
002A d : 1
Типа такой? С данными которые получил у логина?
Код:
XX XX // Длина
08 // Тип
XX XX ... 00 00 // Login (Unicode строка)
XX XX XX XX // SessionKey2_SecondPart
XX XX XX XX // SessionKey2_FistPart
XX XX XX XX // SessionKey1_FistPart
XX XX XX XX // SessionKey1_SecondPart
01 00 00 00
Это не странно?
Последний раз редактировалось Tin-moon, 19.02.2012 в 16:48.
Tin-moon, да, такой по структуре, но тип 0x2B для Gracia и выше
каковы размеры каждого блока?
0002 s LoginName - 14 байт
001A d PlayKey2 - 4 байт
001E d PlayKey1 - 4 байт
0022 d LoginKey1 - 4 байт
0026 d LoginKey2 - 4 байт
002A d : 1
и этот кусок хорим той функцией которые ты давал?
Добавлено через 21 минуту
Цитата:
Сообщение от Tin-moon
Это не странно?
Оно реально отправляет EnterWorld.... (51 байт). тестирую на l2emu HF. Ты вкурсе как обработать пакет?
Последний раз редактировалось Tin-moon, 19.02.2012 в 17:23.
Причина: Добавлено сообщение