Структура/шифрация пакетов Логин сервера
Хотелось бы узнать, от знающих, "на пальцах" структуру и алгоритм шифрации пакетов для логин сервера приходящих от клиента.
Тыкать в сорцы не стоит. Я не настолько знаток, чтобы хорошо разбираться в Java коде касаемо работы с байт кодом и шифрациями. Если есть мануалы или кто-то может словами объяснить, буду очень признателен. Реализация пакетов планируется осуществлять на PHP. Знаний PHP достаточно (полностью реализована пакетная работа с гейм сервером), но на данный момент не могу понять смысла шифрации в Java коде. Заранее спасибо. |
Re: Структура/шифрация пакетов Логин сервера
Первые данные, которые приходят/уходят криптуются статичным блоуфиш ключем.
Код:
6b 60 cb 5b 82 ce 90 b1 cc 2b 6c 55 6c 6c 6c 6c RSA ключем криптуется логин и пароль пользователя. RSA ключи генерируются опять же - рандомно. Для большей конкретики - напишите более конкретные вопросы, на которые, я постараюсь ответить :) |
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. :( |
Re: Структура/шифрация пакетов Логин сервера
Все данные при передаче по сети идут в LittleEndian.
Длина пакета вычисляется таким образом: Код:
encryptData + header В дату входит опкод и сама дата. Проверка чексуммы Начинаем собирать посредством побайтовой сборки - dword и дальнейшим захориванием нуль-числа. Код:
long chksum = 0; Код:
check == chksum Я забыл упомянуть, что при статичном крипте (когда используется статичный ключ блоуфиша) - мы хорим все данные перед криптом блоуфиша. Перед данными, мы кладем хор-ключ длиной в 4 байта, а уже после, мы покрываем блоуфишем все это. Добавлено через 3 минуты Суффикс Его нету ;D Если это пакет Init, то он означает окончание блоуфиш ключа. Добавлено через 5 минут Чексумма генерится для даты (опкод + дата) Добавлено через 12 минут Цитата:
|
Re: Структура/шифрация пакетов Логин сервера
Мануал хорош. Спасибо.
Осталось всё это обмозговать и нарисовать в PHP версии. По поводу данных. Я думаю пакетная структура общения с сервером имеет массу преимуществ по сравнению с прямыми SQL запросами. Например: 1. Невозможность отправить свой запрос, т.к. все пакеты имеют статичный вид (взломщик не нарисует ничего лишнего); 2. Скорость обработки запроса во много раз выше, т.к. задержки в SQL запросах иногда бывают по 5-10 секунд; 3. Простота (сервер сам формирует нужные данные). Если позаботиться о безопасности веб части, то это лучшее что можно придумать для обвязки. Серверная часть не проблема, т.к. блок идентификации входящего пакета обзаведётся новыми условиями для новых опкодов. Ну и обработчик ответа придётся запилить соответственно. Для меня основная проблема дойти до L2LoginPacketHandler с правильным пакетом в буфере. :) |
Re: Структура/шифрация пакетов Логин сервера
Цитата:
Кажется вопрос снимается. Цитата:
|
Re: Структура/шифрация пакетов Логин сервера
Воу воу, палехче!11111
Вам все объяснят тут, с 100500 летним стажем данной статьи О_о П.С - обязательно обращать внимание на "до и после"!!! П.С2 - обязую, от лица оверАхеревшихПасанофф(Это шутка как бы!!111111111111111111111111111111111111111), скопипастить статью в облако и сохранить линки на нее с зиги!!!111 |
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] |
Re: Структура/шифрация пакетов Логин сервера
Цитата:
|
Re: Структура/шифрация пакетов Логин сервера
Если вы пытаетесь наладить общение между сервером и обвязкой, то юзайте XML-RPC. Проверено временем и показало себя только с лучшей стороны.
|
Текущее время: 15:16. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot