RequestAuthLogin на Lindvior
Здравствуйте!
Я пишу оффгейм-бота для l2, на данный момент уже есть неплохой функционал (карта, таргеты, скилы, инвентарь, скрипты на фарм, общение с NPC). Пока что играл с чистым Interlude. Вопрос касается пакета логин-сервера RequestAuthLogin в хрониках Lindvior и Valiance. На интерлюде он состоял из ID сессии (ну или ответа гг), шифрованного публичным ключём куска с логином и паролем (128 байт), чексумы и некой восьмёрки. Но на Lindvior этот пакет весит не 176 + 2 байт, а 320 + 2 байт, а анализ расшифрованного пакета наводит на мысль, что RSA-блок тепер имеет размер 256 байт. Пакет фактически совпадает по структуре со старым, кроме размера этого блока с логином и паролем. Это кажется логичным, т.к. увеличена длина логина и пароля в этих хроника - в качестве логина теперь мэйл, который явно не поместится в привычные 14 байт. Не подскажете, где взять структуру пакета? Перерыл множество ява-сборок, везде старая структура (176+2), новой (320+2) нет нигде. Методом тыка (128 б логин + 128 б пароль, 128 б логин + 124 б пароль + 4 б отп) не получилось. Остальная часть вроде норм, раньше серв дропал конект, а теперь (п осле уведичентя блока RSA вдвое) говорит, что "неправильный пароль", т.е. прииходит AuthLoginFail (или LoginFail, или как его там) с соответствующим кодом ошибки. Как формируется этот пакет? Буду очень благодарен за любую помощь. Спасибо, Андрей |
Re: RequestAuthLogin на Lindvior
Если ничего не путаю, там возможны два варианта формата (от чего зависят не понял, то ли от engine.dll, то ли от чего-то из l2.ini), у меня используется старый:
Код:
var decrypt1 = rsa.processBlock(this.raw, 0x00, 0x80); В итоге получилось вот так: Код:
var decrypt1 = rsa.processBlock(this.raw, 0x00, 0x80); |
Re: RequestAuthLogin на Lindvior
Цитата:
Сейчас за 20 минут буду на работе, попробую Добавлено через 2 часа 10 минут oSg: спасибо за совет, но, увы, не получается залогинится. Пакет правильно формирую, а сервер всё равно не пускает - мол, неверный пароль. Не могли бы вы скинуть мне какой-то исходник с имплементацией этого пакета? Может, я что-то другое упускаю. Добавлено через 2 часа 22 минуты Прошу прощения, невнимательно прочёл ваш пост. Прочитав ваш код, попробовал этот способ. Допустим, есть такие данные: Login: aaaabbbbccccdddd Password: 1111222233334444 Получается так: Код:
1 блок: <3 байта отспупа> <16 байтов логина> <109 байтов до конца первого блока> Добавлено через 2 часа 47 минут Вот как формируется пакет: http://andrewdunai.com/images/dump-p2.png |
Re: RequestAuthLogin на Lindvior
Каким образом после декрипта получились блоки по 0x80 байт ?
http://rghost.ru/51644971.view |
Re: RequestAuthLogin на Lindvior
oSg, спасибо за ответ!
Дело в том, что мне этот пакет нужно сформировать, а не расшифровать, поэтому не все моменты понятные. Заполняю так, как на моей картинке (только теперь еще и добавил длину на то место, где у вас "4" (ASCII - 53). Вот только не понимаю, почему клиент формирует длину 53 байта. Насчет длины: Насчет длины в 128 байт:Развернуть ↓Добавлено через 23 минуты oSg, был бы вам очень признателен, если б вы могли скинуть мне еще один расшифрованный дамп, но с 30-значным логином и 10-значным паролем. |
Re: RequestAuthLogin на Lindvior
del/////////
|
Re: RequestAuthLogin на Lindvior
Цитата:
Всё-таки нужно обязательно ставить первым байтом в обоих пакетах "52", иначе не работает :) Так выглядит мой рабочий пакет*: http://andrewdunai.com/images/dump-final.png Легенда:
* Забыл отметить дополнительные 13 байт логина, если он очень длинный. ** Логин и пароль на этом изображении не зашифрованы RSA. Сейчас кидает ерор меседж 20 (подозреваю, что это - "аккаунт используется", т.к. друг скинул логин и пас и играет сейчас:) ) Огромное вам спасибо, тыкнул бы вам еще один плюс в карму, но слишком маленький ещё :( Огромное вам спасибо! Добавлено через 7 минут Рано обрадовался, 20 - это "System Error", теперь опять не пускает )) роюсь далее. |
Re: RequestAuthLogin на Lindvior
del/////////
|
Re: RequestAuthLogin на Lindvior
Цитата:
Кстати, всё так же не работает. Логин и пароль те, что надо, но сервер не хавает. Кстати, может подскажете, что там еще есть в пакете, чего я не указал в описании? Добавлено через 6 часов 29 минут Собсно, на Линдвиор (яву) получилось залогинится, на офф (и Линдвиор на dragonwind.ru) не пускает - "неверный пароль". 99%, что проблемма в RSA-блоке. Добавлено через 21 час 27 минут Проблема решена. Ночью психанул и написал свой эмулятор логин-сервера (т.к. это для меня быстрее, чем поднять ява-сборку с дебагингом пакетов :) ). Оказалось, был в нескольких шагах от успеха. Оказалось, что те саммые 52 байта данных в каждом из этих блоков выравниваются не по левой стороне, а по правой, т.к. блок, начинающийся с той самой четверки, обозначающей длину последующей секции в 52 байта, начинается не с первого байта, а с 75-го. Самое интересное - то, что на яве работают оба варианта, а на офе - только этот. Наверное, разница в RSA-отступах нулями, но голова уже трещит, не хочу и думать больше об этом. RSA у меня ванильной имплементации, так что виноваты NCSoft со своими "пакращеннями". Такое количество матов и теплых слов в адреса матерей корейцев, как вчера, я за последний год вряд ли употребил. :) |
Текущее время: 12:20. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot