Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 09.02.2019, 17:31   #1
Новичок
 
Регистрация: 09.02.2019
Сообщений: 2
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
kotelok пока неопределено
По умолчанию

Всё, получилось методом перебора вариантов из Гугла ).

Сначала первая половинка ключа (8 байт) берётся из первого ответа сервера: 95 ef 7c ec e0 e6 bc c8.

Потом ключ дополняется до 16 байт какой-то непонятной константой: c8 27 93 01 a1 6c 31 97 (откуда она берётся не понятно, но, вроде, походит во всех случаях независимо от значения первой половины).

И потом пакет обрабатывается одним из методов, взятых из этого класса (они, в т.ч., модифицируют ключ от размера последнего обработанного пакета):
https://github.com/xackery/l2net/blo...pting/Crypt.cs

Добавлено через 1 минуту
Цитата:
Сообщение от ScythLab Посмотреть сообщение
Стандартный алгоритм - Blowfish ....
Да, спасибо, но этот этап я уже прошёл. Проблема была именно в XOR/unXOR пакетов сервера.

Сервер без защиты, так что всё заработало по указанному выше примеру.

Добавлено через 4 минуты
Цитата:
Сообщение от ScythLab Посмотреть сообщение
На этом форуме была программа (на делфи) ..
Да, я нашёл две. Одна очень помогла в прохождении логин-сервера (la2_client_emu), а вторую (xBot2010.sources), которая по идее умеет и с GS работать, я попросту не смог собрать, ибо там слишком много специфичных дельфёвых зависимостей.

----
Добавлено через 1 час 18 минут
Странно. Если бы ключ был некорректный, или алгоритм, то на выходе вообще ничего не получалось бы.

Однако, почему-то весь пакет раскодируется нормально, а первый байт каждый раз рандомный. Хотя там всегда должно быть одно и то же значение, обозначающее тип данного пакета.

Добавлено через 2 часа 18 минут
Разобрался. На PTS сервере GF есть настройка "EnablePacketShuffle". Если она включена, то в четырёх последних байтах первого пакета (2E=KeyPacket) сервер присылает ключ, которым в дальнейшем нужно модифицировать ID пакетов (вероятно, ещё на что-то влияет). Если настройку на сервере отключить, то ID-пакетов можно использовать без предварительного прогона через этот ключ.

Если кому понадобится, то способ мофикации ID пакетов относительно присланного ключа есть в исходниках вот этого класса:
https://github.com/xackery/l2net/blo...ixedPackets.cs

Последний раз редактировалось kotelok, 09.02.2019 в 17:31. Причина: Добавлено сообщение
kotelok вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



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

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


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

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

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