Вернуться   CoderX :: Forums > Lineage II > L2PacketHack
Войти через OpenID

L2PacketHack Форум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела! Обсуждение багов Lineage ЗАПРЕЩЕНО!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 31.05.2016, 21:34   #11
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 156
Сказал Спасибо: 4
Имеет 33 спасибок в 31 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от Linux Посмотреть сообщение
В методе LS_LoginOk есть запись двух ключей SessionKey1_1 и SessionKey1_2 в секцию пакета для RequestServerList().
SessionKey приходит от сервера и его же нужно отправлять серверу в следующем пакете без каких-либо изменений.
Главное чтобы BF-шифрование верно отрабатывало.

к верно посоветанному
Цитата:
Сообщение от supernewbie Посмотреть сообщение
нужно также заменить PChar на PAnsiChar, Char на AnsiChar
могу добавить: заменить "string" на "AnsiString" и "Chr" на "AnsiChar" (об этом многие забывают, что может приводить к ошибкам). Можно тупо прогнать полную замену без анализа (но с опцией "только целые слова"), должно заработать.

PS. По статьям: зайди к нам на сайт, там на главной странице ссылки есть.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
За это сообщение ScythLab нажился спасибкой от:
Старый 01.06.2016, 13:04   #12
Новичок
 
Аватар для Linux
 
Регистрация: 17.05.2016
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Linux пока неопределено
По умолчанию

Цитата:
Сообщение от ScythLab Посмотреть сообщение
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.
Linux вне форума   Ответить с цитированием
Старый 03.06.2016, 12:55   #13
Новичок
 
Аватар для Linux
 
Регистрация: 17.05.2016
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Linux пока неопределено
По умолчанию

Прогнал через WireShark подключение L2.exe и la2_client_emu,
Используемый фильтр: tcp && tcp.port==2106 || tcp.port==7777

Собранная статистика:

1) L2.exe (L2_LS_GS_orig.png)
Для наглядности я подсветил строки с пакетами у которых Len>0, а содержимое пакетов с данными (L2Orig_data.txt) представил в спойлере с указанием номера пакета:
Оффтоп

2) L2Connect.exe (L2_LS_GS_L2Connect.png)
Для наглядности я подсветил строки с пакетами у которых Len>0, а содержимое пакетов с данными (L2Connect_data.txt) представил в спойлере с указанием номера пакета:

Оффтоп


По собранной статистике можно понять поведение двух разных подключений? Где в моем случае была допущена ошибка, из-за чего до Game-Server так и не доходила программа?
Миниатюры
Нажмите на изображение для увеличения
Название: L2_LS_GS_orig.png
Просмотров: 33
Размер:	109.7 Кб
ID:	2964  Нажмите на изображение для увеличения
Название: L2_LS_GS_L2Connect.png
Просмотров: 19
Размер:	62.8 Кб
ID:	2965  
Вложения
Тип файла: txt L2Orig_data.txt (5.1 Кб, 12 просмотров)
Тип файла: txt L2Connect_data.txt (2.8 Кб, 12 просмотров)

Последний раз редактировалось Linux, 03.06.2016 в 14:03.
Linux вне форума   Ответить с цитированием
Старый 03.06.2016, 16:33   #14
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 156
Сказал Спасибо: 4
Имеет 33 спасибок в 31 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от Linux Посмотреть сообщение
Т.е. лучше изучать по статье KyberPrizrak? Его статья более расширенная? На глаз пока сложно определить отличия
это очень давно было, но на сколько помню у KyberPrizrak более верный протокол описан (как и по последовательности пакетов, так и по их содержимому)

Цитата:
Какой же версии описания протокола стоит доверять больше?
доверять можно только самостоятельно проснифанному трафику, т.к. часть очень важных пакетов (RequestAuthLogin, NetPing, s:8D) могут меняться от сервера к серверу

Цитата:
Сообщение от Linux Посмотреть сообщение
По собранной статистике можно понять поведение двух разных подключений? Где в моем случае была допущена ошибка, из-за чего до Game-Server так и не доходила программа?
у тебя пакет RequestAuthLogin значительно меньше, чем в оригинальном клиенте, расшифровывай пакет, смотри что внутри, возможно поймешь, что нужно передавать
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 03.06.2016, 18:23   #15
Новичок
 
Аватар для Linux
 
Регистрация: 17.05.2016
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Linux пока неопределено
По умолчанию

Цитата:
Сообщение от ScythLab Посмотреть сообщение
у тебя пакет RequestAuthLogin значительно меньше, чем в оригинальном клиенте, расшифровывай пакет, смотри что внутри, возможно поймешь, что нужно передавать
1.1) А не подскажете чем расшифровывать или по какому алгоритму?
В проекте идет метод BlowFish.pas (by xkor) с комплектом методов:
Код:
  procedure Init(const Key1:String);
  procedure DecodeBlock(var data:Block);
  procedure EncodeBlock(var data:Block);
  procedure bfDecode(var data:array of Char; len: Integer);
  procedure bfEncode(var data:array of Char; len: Integer);
и пачка методов из вспомогательного юнита:
Код:
  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 и т.д.??
Миниатюры
Нажмите на изображение для увеличения
Название: compare_LS.png
Просмотров: 23
Размер:	171.7 Кб
ID:	2968  
Linux вне форума   Ответить с цитированием
Старый 05.06.2016, 19:56   #16
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 156
Сказал Спасибо: 4
Имеет 33 спасибок в 31 сообщенях
ScythLab пока неопределено
По умолчанию

Цитата:
Сообщение от Linux Посмотреть сообщение
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.
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 07.06.2016, 16:07   #17
Новичок
 
Аватар для Linux
 
Регистрация: 17.05.2016
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Linux пока неопределено
По умолчанию

Платформа: HighFive, Ревизия протокола: c621 (согласно TechnoWiz@rd)

Основные методы:
Оффтоп

Порядок авторизации на Login-Server:
1) Init().................................................. .[OK] { Server->Client }
Оффтоп

2) RequestGGAuth()..................................[OK] { Client->Server }
Оффтоп

3) LS_GGAuth().........................................[OK] { Server->Client } сервер ответил, что авторизация на GG прошла успешно
Оффтоп

4) RequestAuthLogin()...............................[OK] { Client->Server } клиент отправляет Логин и Пароль
Оффтоп

5) LoginOK().............................................[OK] { Server->Client } проверка Логина и Пароля прошла успешно, +Session_Key_1
Оффтоп

6) RequestServerList()..............................[FAIL] { Client->Server }
Оффтоп

Далее описывать код пока не буду - до тех пунктов даже не доходит программа

7) ServerList()..........................................[NoNe] { Server->Client } передается список рабочих серверов


8) RequestServerLogin()............................[NoNe] { Client->Server } запрос игры на выбранном сервере


9) PlayOK()..............................................[NoNe] { Server->Client } подключение к Game-Server разрешено, +Session_Key_2

Лог выполнения программы - L2Connect_Log.txt

Вопросы:
1) Ну раз программа прошла GGAuth и LoginOK значит с шифрованием все нормально: иначе бы в методе LS_Parser программа не смогла бы определить тип пакета ( [LS_Parser]: buff[2]=0x0B ) и не продвинулась бы дальше по цепочке. Что не так в пакете RequestServerList? в упор не пойму, где я ошибся
Вложения
Тип файла: txt L2Connect_Log.txt (4.7 Кб, 13 просмотров)

Последний раз редактировалось Linux, 07.06.2016 в 17:42.
Linux вне форума   Ответить с цитированием
Старый 07.06.2016, 16:56   #18
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Linux, шифрование начинается с пакета RequestServerList
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 07.06.2016, 17:43   #19
Новичок
 
Аватар для Linux
 
Регистрация: 17.05.2016
Сообщений: 14
Сказал Спасибо: 5
Имеет 0 спасибок в 0 сообщенях
Linux пока неопределено
По умолчанию

Цитата:
Сообщение от supernewbie Посмотреть сообщение
Linux, шифрование начинается с пакета RequestServerList
А конкретнее: какой алгоритм, какие параметры?
В этих двух статьях я не нашел ссылки, что пакет RequestServerList как-то по особому должен шифроваться
Какие из приведенных ниже методов из этих статей надо применить к пакету?

Вспомогательные методы - Шифрация пакетов GameServer (KyberPrizrak)
Оффтоп

Вспомогательные методы - Шифрация пакетов GameServer (TechnoWiz@rd)
Оффтоп

Может ктото поделиться порядком подключения на ЛС/ГС по-байтно, что делается с каждым байтом?

Может кто поделиться рабочим примером кода подключения к ЛС/ГС? можно в личку если что

Последний раз редактировалось Linux, 07.06.2016 в 18:19.
Linux вне форума   Ответить с цитированием
Старый 07.06.2016, 21:49   #20
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Linux, я имел ввиду что с RequestServerList начинается дополнительное секретное шифрование, алгоритм которого накрыт виртуализатором кода. этот алгоритм был добавлен админинстрацией и как правило имеет отличия для каждого инстанса защиты, чтобы узнать алгоритм шифрования необходимо произвести обратный инжиниринг кода защиты.
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack


Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 13:04.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!