Структура/шифрация пакетов Логин сервера - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Игровой клиент

Игровой клиент Есть вопросы по поводу редактирования dat, utx и других файлов клиента, пожалуйста, задавайте их здесь.
Описание темы:Ben, it's Danila. I need a help.

Ответ
Опции темы
Непрочитано 11.07.2014, 19:05   #1
Аватар для Donatte
Герой

Автор темы (Топик Стартер) Структура/шифрация пакетов Логин сервера

Хотелось бы узнать, от знающих, "на пальцах" структуру и алгоритм шифрации пакетов для логин сервера приходящих от клиента.

Тыкать в сорцы не стоит. Я не настолько знаток, чтобы хорошо разбираться в Java коде касаемо работы с байт кодом и шифрациями.

Если есть мануалы или кто-то может словами объяснить, буду очень признателен. Реализация пакетов планируется осуществлять на PHP. Знаний PHP достаточно (полностью реализована пакетная работа с гейм сервером), но на данный момент не могу понять смысла шифрации в Java коде.

Заранее спасибо.
__________________
Родился, живу и когда-нибудь умру.
Donatte вне форума Ответить с цитированием
Непрочитано 12.07.2014, 16:44   #2
Аватар для n3k0nation
Antihero

По умолчанию Re: Структура/шифрация пакетов Логин сервера

Первые данные, которые приходят/уходят криптуются статичным блоуфиш ключем.
Код:
6b 60 cb 5b 82 ce 90 b1 cc 2b 6c 55 6c 6c 6c 6c
Затем генерируется рандомный ключ. Обмен ключами производится в пакете Init (cddbddddbc).
RSA ключем криптуется логин и пароль пользователя. RSA ключи генерируются опять же - рандомно.

Для большей конкретики - напишите более конкретные вопросы, на которые, я постараюсь ответить
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 12.07.2014, 19:20   #3
Аватар для Donatte
Герой

Автор темы (Топик Стартер) Re: Структура/шифрация пакетов Логин сервера

Pointer*Rage, спасибо за инфу. Конкретней изложу проблему ниже.

Итак, всё что я смог узнать, так это строение пакета, и то, общее.

Любой пакет к логин серверу имеет примерно следующую структуру:

XX XX - длина пакета (little-endian) которая никогда не шифруется
XX - опкод пакета
---------
XX XX XX XX XX
XX XX XX XX XX - тело пакета (данные)
XX XX XX XX XX
---------
XX XX XX XX - чексумма (little-endian)
00 00 00 00 - суффикс непостоянен

1. Непонятно откуда берётся чексумма (как генерируется, т.е. какой участок пакета берётся и каким методом вычисляется чексумма);
2. Насколько важен суффикс в пакете (т.е. возможно его постоянное использование как статического блока);
3. Шифрация. Люди пишут что шифруется весь пакет начиная с третьего байта. Собсбвенно, есть ли смысл выполнять шифрацию, если планируется общаться с сервером одним пакетом (отправил пакет с сайта и получил ответ с логина), не доходя до Init пакета?

Пока эти моменты мне очень непонятны, опять же, из-за моего хиленького скила в Java.
__________________
Родился, живу и когда-нибудь умру.
Donatte вне форума Ответить с цитированием
Непрочитано 12.07.2014, 20:21   #4
Аватар для n3k0nation
Antihero

По умолчанию Re: Структура/шифрация пакетов Логин сервера

Все данные при передаче по сети идут в LittleEndian.

Длина пакета вычисляется таким образом:
Код:
encryptData + header
Заголовок статичен, он имеет размер 2 байта.
В дату входит опкод и сама дата.

Проверка чексуммы
Начинаем собирать посредством побайтовой сборки - dword и дальнейшим захориванием нуль-числа.
Код:
		long chksum = 0;
		for (int i = 0; i < count; i += 4) {
			check = raw[i] & 0xff;
			check |= raw[i + 1] << 8 & 0xff00;
			check |= raw[i + 2] << 0x10 & 0xff0000;
			check |= raw[i + 3] << 0x18 & 0xff000000;
			chksum ^= check;
		}
Последние 4 байта делаем тоже самое, но без хора и далее сравниваем:
Код:
check == chksum
Запись чексуммы точно такая же, но конечно, в обратном порядке:
:
Свернуть ↑Развернуть ↓



Я забыл упомянуть, что при статичном крипте (когда используется статичный ключ блоуфиша) - мы хорим все данные перед криптом блоуфиша. Перед данными, мы кладем хор-ключ длиной в 4 байта, а уже после, мы покрываем блоуфишем все это.

Добавлено через 3 минуты
Суффикс
Его нету ;D Если это пакет Init, то он означает окончание блоуфиш ключа.

Добавлено через 5 минут
Чексумма генерится для даты (опкод + дата)

Добавлено через 12 минут
Цитата:
Сообщение от Donatte Посмотреть сообщение
3. Шифрация. Люди пишут что шифруется весь пакет начиная с третьего байта. Собсбвенно, есть ли смысл выполнять шифрацию, если планируется общаться с сервером одним пакетом (отправил пакет с сайта и получил ответ с логина), не доходя до Init пакета?
Можно, почему нет? Правда для этого придется править сервер Плюс вопрос в том, насколько передаваемые данные секретны.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.

Последний раз редактировалось n3k0nation; 12.07.2014 в 20:33. Причина: Добавлено сообщение
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 12.07.2014, 21:00   #5
Аватар для Donatte
Герой

Автор темы (Топик Стартер) Re: Структура/шифрация пакетов Логин сервера

Мануал хорош. Спасибо.

Осталось всё это обмозговать и нарисовать в PHP версии.

По поводу данных. Я думаю пакетная структура общения с сервером имеет массу преимуществ по сравнению с прямыми SQL запросами. Например:
1. Невозможность отправить свой запрос, т.к. все пакеты имеют статичный вид (взломщик не нарисует ничего лишнего);
2. Скорость обработки запроса во много раз выше, т.к. задержки в SQL запросах иногда бывают по 5-10 секунд;
3. Простота (сервер сам формирует нужные данные).

Если позаботиться о безопасности веб части, то это лучшее что можно придумать для обвязки.

Серверная часть не проблема, т.к. блок идентификации входящего пакета обзаведётся новыми условиями для новых опкодов. Ну и обработчик ответа придётся запилить соответственно.

Для меня основная проблема дойти до L2LoginPacketHandler с правильным пакетом в буфере.
__________________
Родился, живу и когда-нибудь умру.
Donatte вне форума Ответить с цитированием
Непрочитано 12.07.2014, 21:48   #6
Аватар для AleBrider
Пользователь

По умолчанию Re: Структура/шифрация пакетов Логин сервера

Цитата:
Сообщение от Donatte Посмотреть сообщение
Мануал хорош. Спасибо.

Осталось всё это обмозговать и нарисовать в PHP версии.
Если не секрет - зачем может понадобиться php ?
Кажется вопрос снимается.
Цитата:
Сообщение от Donatte Посмотреть сообщение
это лучшее что можно придумать для обвязки.
__________________
AleBrider вне форума Ответить с цитированием
Непрочитано 12.07.2014, 22:24   #7
Забанен за кидаловo/обман/развод

По умолчанию Re: Структура/шифрация пакетов Логин сервера

Воу воу, палехче!11111
Вам все объяснят тут, с 100500 летним стажем данной статьи О_о
П.С - обязательно обращать внимание на "до и после"!!!
П.С2 - обязую, от лица оверАхеревшихПасанофф(Это шутка как бы!!111111111111111111111111111111111111111), скопипастить статью в облако и сохранить линки на нее с зиги!!!111
KilRoy вне форума Отправить сообщение для KilRoy с помощью ICQ Отправить сообщение для KilRoy с помощью Skype™ Ответить с цитированием
Непрочитано 13.07.2014, 04:23   #8
Аватар для Donatte
Герой

Автор темы (Топик Стартер) Re: Структура/шифрация пакетов Логин сервера

После долгих пыток отправил пакет логину:
Код:
10 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00
где,
10 00 - длина
00 - опкод
00 00 00 00 00 00 00 00 00 - данные
10 00 00 00 - чексумма

Сервер выдаёт
Код:
Wrong checksum from client: [192.168.1.1]
Неужели всё таки нужно ещё и криптовать пакет? Или я неправильно чексумму посчитал?
__________________
Родился, живу и когда-нибудь умру.
Donatte вне форума Ответить с цитированием
Непрочитано 13.07.2014, 11:16   #9
Аватар для P3iNN
Постоялец

По умолчанию Re: Структура/шифрация пакетов Логин сервера

Цитата:
Сообщение от KilRoy Посмотреть сообщение
Воу воу, палехче!11111
Вам все объяснят тут, с 100500 летним стажем данной статьи О_о
П.С - обязательно обращать внимание на "до и после"!!!
П.С2 - обязую, от лица оверАхеревшихПасанофф(Это шутка как бы!!111111111111111111111111111111111111111), скопипастить статью в облако и сохранить линки на нее с зиги!!!111
Спасибо за статью,скпопипастил в .txt документ!
P3iNN вне форума Ответить с цитированием
Непрочитано 13.07.2014, 13:16   #10
Аватар для ANZO
Разработчик BDO Emu

По умолчанию Re: Структура/шифрация пакетов Логин сервера

Если вы пытаетесь наладить общение между сервером и обвязкой, то юзайте XML-RPC. Проверено временем и показало себя только с лучшей стороны.
ANZO вне форума Отправить сообщение для ANZO с помощью ICQ Отправить сообщение для ANZO с помощью Skype™ Ответить с цитированием
Ответ

Метки
логин, пакеты, структура, шифрация


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка связи логин и гейм сервера mar4ello24 Lineage II 9 30.07.2013 03:45
Кто знает? прошу помогите Bobur Lineage II 3 13.05.2013 10:01
Сервера разных хроник на 1 логин halaymoon Lineage II 9 11.12.2012 22:24
Установка ПТС C4 Сервера Tonchi Копия официального сервера 5 23.04.2011 17:35


© 2007–2019 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 12:30. Часовой пояс GMT +3.

Вверх