Показать сообщение отдельно
Старый 09.02.2019, 17:31   #3
Новичок
 
Регистрация: 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 вне форума   Ответить с цитированием