L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
мне уже кажется, что с этими непонятками я просто хожу по замкнутому кругу, буксую на месте
UPD1
кто является автором примера la2_client_emu.rar?
UPD2 Добавлено через 17 часов 26 минут
Расширил логирование в la2_client_emu и судя по логу программа не может дойти до следующих методов: LS_ServerList() и LS_PlayOk().
После последнего успешного выполнения метода RequestServerList() в методе WMSOCK_RS_EVENT(Msg) происходит WSAECONNABORTED (#10053).
Подскажите в чем может быть проблема? Что может разрывать совет?
Linux, для корректного переноса проекта на поддерживающие юникод делфи нужно также заменить PChar на PAnsiChar, Char на AnsiChar и в целом проанализировать использование строк и символов в проекте
__________________ Начало.
За это сообщение supernewbie нажился спасибкой от:
В методе LS_LoginOk есть запись двух ключей SessionKey1_1 и SessionKey1_2 в секцию пакета для RequestServerList().
SessionKey приходит от сервера и его же нужно отправлять серверу в следующем пакете без каких-либо изменений.
Главное чтобы BF-шифрование верно отрабатывало.
к верно посоветанному
Цитата:
Сообщение от supernewbie
нужно также заменить PChar на PAnsiChar, Char на AnsiChar
могу добавить: заменить "string" на "AnsiString" и "Chr" на "AnsiChar" (об этом многие забывают, что может приводить к ошибкам). Можно тупо прогнать полную замену без анализа (но с опцией "только целые слова"), должно заработать.
PS. По статьям: зайди к нам на сайт, там на главной странице ссылки есть.
PS. По статьям: зайди к нам на сайт, там на главной странице ссылки есть.
Хочется поблагодарить следующих людей: TechnoWiz@rd, за базовую информацию для понимания протокола Lineage, а также KyberPrizrak за доработку исходной статьи.
Т.е. лучше изучать по статье KyberPrizrak? Его статья более расширенная? На глаз пока сложно определить отличия
UPD1
Еще один момент смущает: статья KyberPrizrak исправляющая баги (со слов KyberPrizrak) статьи TechnoWiz@rd имеет последнее редактирование 06.07.2007, в то время как статья TechnoWiz@rd была отредактирована 23.11.2007
Какой же версии описания протокола стоит доверять больше?
Последний раз редактировалось Linux, 01.06.2016 в 15:54.
Т.е. лучше изучать по статье KyberPrizrak? Его статья более расширенная? На глаз пока сложно определить отличия
это очень давно было, но на сколько помню у KyberPrizrak более верный протокол описан (как и по последовательности пакетов, так и по их содержимому)
Цитата:
Какой же версии описания протокола стоит доверять больше?
доверять можно только самостоятельно проснифанному трафику, т.к. часть очень важных пакетов (RequestAuthLogin, NetPing, s:8D) могут меняться от сервера к серверу
Цитата:
Сообщение от Linux
По собранной статистике можно понять поведение двух разных подключений? Где в моем случае была допущена ошибка, из-за чего до Game-Server так и не доходила программа?
у тебя пакет RequestAuthLogin значительно меньше, чем в оригинальном клиенте, расшифровывай пакет, смотри что внутри, возможно поймешь, что нужно передавать
у тебя пакет RequestAuthLogin значительно меньше, чем в оригинальном клиенте, расшифровывай пакет, смотри что внутри, возможно поймешь, что нужно передавать
1.1) А не подскажете чем расшифровывать или по какому алгоритму?
В проекте идет метод BlowFish.pas (by xkor) с комплектом методов:
procedure AddCheckSumm(var data: array of byte; Len: Integer);
function RepairKey(key: String): String;
function RSAEncrypt(a,p,rsakey: String): String;
function AntiXOR(s: String): String;
Что из этого подойдет?
1.2) А зачем пакет расшифровывать если пакет идет на сервер?
2) Добавил сравнительную таблицу пакетов (compare_LS.png), учитывая что первые 2 байта это размер, с 3-го кодируются данные, как по размеру пакета понять какой это пакет: Init, RequestAuthLogin и т.д.??
1.1) А не подскажете чем расшифровывать или по какому алгоритму?
По умолчанию трафик в Ла2 шифруется с помощью BF (также для RequestAuthLogin используется RSA и для части пакетов еще какой-то xor). Ответить на вопрос "чем и как" в данном случае, к сожалению, не смогу, т.к. ответ потянет минимум на полновесную статью, а то и на главу какой-нить книги, к тому же не являюсь большим специалистом в этой области.
Цитата:
Что из этого подойдет?
Все из перечисленных функций как раз занимаются расшифровкой пакетов.
Цитата:
1.2) А зачем пакет расшифровывать если пакет идет на сервер?
Это как проход через часового: ты должен знать пароль для прохода и лучший вариант его узнать - подслушать пароль.
Цитата:
как по размеру пакета понять какой это пакет
никак, в данном случае можно догадаться по очередности пакетов, на сколько помню очередность такая:
1) сервер присылает Init
2) клиент отвечает AuthGameGuard
3) сервер GGAuth
4) клиент RequestAuthLogin
5) сервер LoginOk либо LoginFail
6) клиент RequestServerList
7) сервер ServerList
8) клиент RequestServerLogin
9) сервер PlayOk либо PlayFail
плюс в эти пакеты могут вмешиваться NetPing и 8D
PS. В очередности могу немного ошибиться, за подробностями обращайся к статьям KyberPrizrak.