Сообщений: 4
Тем: 1
Зарегистрирован: Mar 2014
Репутация:
0
Всем Привет. Помогите решить проблему, пишу авторизацию к серверу, но не могу найти структуру пакета RequestAuthLogin для Ит
Цитата:Формат для ревизии 0xc621:
00
00 00 00 00 ... // Начало массива из 128 байт содержащих логин и пароль, и шифрующихся по алгоритму RSA
... (байты 94-107) // строка содержащая логин. Имеет длинну 14 байт и храниться в формате ASCII а не UNICODE !!!
... (байты 108-124) // строка содержащая пароль. Имеет длинну 16 байт и храниться в формате ASCII а не UNICODE !!!
... 00 00 00 00 // не используется. Конец массива
Нашел только такое описание, но поснифав пакеты заметил что размер пакета 178 байт.
Объясните, что еще входит в этот пакет, бьюсь уже неделю, выручайте
Сообщений: 309
Тем: 7
Зарегистрирован: Jul 2013
Репутация:
1,233
Mousepro Написал:Всем Привет. Помогите решить проблему, пишу авторизацию к серверу, но не могу найти структуру пакета RequestAuthLogin для Ит
Нашел только такое описание, но поснифав пакеты заметил что размер пакета 178 байт.
Объясните, что еще входит в этот пакет, бьюсь уже неделю, выручайте
[SRC="java"]public class RequestAuthLogin extends L2LoginClientPacket
{
private byte[] _raw;
private int _sessionId;
private byte[] _gameGuard;
public RequestAuthLogin()
{
_raw = new byte[128];
_gameGuard = new byte[16];
}
@Override
public boolean readImpl()
{
if(getAvaliableBytes() >= 128)
{
try
{
readB(_raw);
_sessionId = readD();
readB(_gameGuard);
return true;
}
catch(Exception e)
{
_log.log(Level.SEVERE, "error readImpl: " + this.getClass().getSimpleName(), e);
return false;
}
}
return false;
}[/SRC]
Сообщений: 4
Тем: 1
Зарегистрирован: Mar 2014
Репутация:
0
03-31-2014, 10:27 PM
(Сообщение последний раз редактировалось: 03-31-2014, 10:28 PM Mousepro.)
Вот только яву я не знаю, на питоне пишу, можно словами? Я так мельком по коду заметил что там Id сессии с пакета Init или GGAuth, а вот 16 байт геймгуарда это что?
Сообщений: 309
Тем: 7
Зарегистрирован: Jul 2013
Репутация:
1,233
Mousepro Написал:Вот только яву я не знаю, на питоне пишу, можно словами? Я так мельком по коду заметил что там Id сессии с пакета Init или GGAuth, а вот 16 байт геймгуарда это что?
_raw - читаем 128 байтов, которые содержат логин и пароль. _sessionId читаем 4 байта сессии, _gameGuard считываем 16 байтов ГеймГварда. А что объяснять про ГГ? Он и есть ГГ, там проверка на него дальше по коду.
readB - читаем массив
readD - читаем int.
ps. если вы пишите бота, то наверное столкнулись с леймгвардом, тогда там куча мусора в авторизации. Выше приведенный пример для чистого клиента-сервера.
Сообщений: 4
Тем: 1
Зарегистрирован: Mar 2014
Репутация:
0
luna9966 Написал:_raw - читаем 128 байтов, которые содержат логин и пароль. _sessionId читаем 4 байта сессии, _gameGuard считываем 16 байтов ГеймГварда. А что объяснять про ГГ? Он и есть ГГ, там проверка на него дальше по коду.
readB - читаем массив
readD - читаем int.
Цитата: Сразу после установки соединения сервер отправляет клиенту пакет Init
2. В ответ на него клиент отправляет пакет RequestGGAuth(в ревизии протокола 785a этот пакет не высылается)
3. Сервер отвечает на него пакетом GGAuth (в ревизии протокола 785a этот пакет не высылается)
4. Если сервер ответил, что авторизация прошла успешно, то клиент высылает пакет RequestAuthLogin, содержащий логин и пароль.
5. Проверка логина и пароля, в случае неудачи, сервер высылает пакет LoginFail содержащий причину неудачи, инатче высылается пакет LoginOk, содержащий
session key #1.
6. Далее клиент запрашивает список серверов пакетом RequestServerList
Где это 16 байт от ГГ, они случайно не в Init приходят,может это "Хз чо" и есть 16 байт эти ?
Цитата:Формат для ревизии протокола 0xc621:
00
XX XX XX XX // ID сессии
XX XX XX XX // Версия протокола 0xc621
XX XX XX XX ... // 128 байт публичного ключа, которым в последствии клиент шифрует пакет RequestAuthLogin
29 DD 95 4E // \
77 C3 9C FC // | хз что
97 AD B6 20 // |
07 BD E0 F7 // /
XX XX XX XX ... // 16 байт blowfish ключа которым шифруются все последующие пакеты
00
XX XX XX XX // контрольная сумма пакета
Пакет для Interlude содержит дополнительные 4 байта:
XX XX XX XX // XOR ключ которым зашифрован пакет
пока что пишу только авторизацию, проверяю все на чистом сервере, цель пока - получить LoginOk
Сообщений: 309
Тем: 7
Зарегистрирован: Jul 2013
Репутация:
1,233
Mousepro Написал:Где это 16 байт от ГГ, они случайно не в Init приходят,может это "Хз чо" и есть 16 байт эти ?
Вполне вероятно. Конкретно в пакетной истории ИТ не силен, так что подсказать, что имелось ввиду под "хз чо" не могу.
Сообщений: 2,455
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
GG байты приходят на сервер от геймгуарда в пакете RequestAuthGameGuard. Структура пакета: cddddd.
c - опкод (byte, 0x07)
d - ключ сессии
4d - ключ гейм гуарда (либо raw bytes 16)
Именно с этим ключем идет сравнение в RequestAuthLogin.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Сообщений: 4
Тем: 1
Зарегистрирован: Mar 2014
Репутация:
0
04-02-2014, 03:51 PM
(Сообщение последний раз редактировалось: 04-02-2014, 10:19 PM Mousepro.)
Pointer*Rage Написал:GG байты приходят на сервер от геймгуарда в пакете RequestAuthGameGuard. Структура пакета: cddddd.
c - опкод (byte, 0x07)
d - ключ сессии
4d - ключ гейм гуарда (либо raw bytes 16)
Именно с этим ключем идет сравнение в RequestAuthLogin.
Я не понял, ключ геймгуарда я сам получается формирую, я просто отсылал ему 16 нулей :
PHP код: <?php
cm_auth_gg = make_packet('BI16x', 0x07, sessionId)
Цитата:dump cm_auth_gg size = 0x18
0x7 0x8f 0xac 0x27 0x37 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
ответ (все норм) :
Цитата:GGAuth size = 0x20
0xb 0x8f 0xac 0x27 0x37 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x8b 0x23 0xd8 0xf8 0x85 0xbc 0x7c 0xc4 0x81 0x33 0x83
какая структура пакета то, что серверу отправлять ?
опкод 0x00
а дальше что?
|