Всё, получилось методом перебора вариантов из Гугла ).
Сначала первая половинка ключа (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