Показать сообщение отдельно
Непрочитано 11.10.2013, 22:11   #1
Аватар для Gattsu
Пользователь

Автор темы (Топик Стартер) Разработка Tera JAVA (Part 1)

Приветствую Вас многоуважаемые жители zg!

Клиент:
Свернуть ↑Развернуть ↓


Посмотрев на обстановку эмуляторов, ровным счетом увидел только одну толковую разработку на C#, занимается ею один человек.

Давайте делиться и разрабатывать вместе.

В данный момент изучаю исходники на предмет сетевого взаимодействия.

Что понялв контексте пиратского сервера)


Структуры:
Свернуть ↑Развернуть ↓

ЭТАП 0
1. Сервер посылает ServerInitPacket

ЭТАП 1
2. Этап обмена ключами
2.1 Клиент отвечает посылая первый ключ(ckey1) ClientKeyPacket размером 128 байт
2.2 Сервер отвечает посылая первый ключ(skey1) ServerKeyPacket размером 128 байт
2.3 Клиент отвечает посылая второй ключ(ckey2) ClientKeyPacket размером 128 байт
2.4 Сервер отвечает посылая второй ключ(skey2) ServerKeyPacket размером 128 байт

Проходит установка состояния для чтения, клиент и сервер обрабатывают полученные ключи, подготавливают криптографию.

ЭТАП 2
3. Этап авторизации
3.1 Клиент посылает 96 байт

На пункте 3.1 не могу расшифровать уперся лбом в проблему.
Не могу разобрать алгоритм криптографии, особо тесный опыт с криптографией не имел, так что буду благодарен за подсказки.

Перенес алгоритм с C# на Java, проблема в многих местах, c SHA-1(160 бит хэш) там не понятная история, реализован не по RFC, тк выходные результат получаются разные и на C#, он выдает digest масива 5 uint32, но в общем худо бедно перенес на Java. Потом загвоздка в функциях криптографии, там используется без знаковые числа(проблема происходит при приведении типа). Одно завязано на другом, дебаг в двух средах, на двух языках, туго все идет.

Структуры:
Свернуть ↑Развернуть ↓


Обмен данными между клиентом и сервером.
ЭТАП 0 и ЭТАП 1 на прямую посылаются данные.
ЭТАП 2 данные зашифровываются.
Клиент-сервер посылает последовательность байт EncryptData.
При расшифровке выделяется структура DecryptData .

То-есть отправляя/получая, зашифровка/расшифровка происходит в один цикл, все данные обрабатываются одним проходом.

Концепцию четко вижу уже, расписал видение лаунчера, сервера авторизации и игрового.

ПС Написал пока пару строчек кода. Не вижу пока смысла, что-то выкладывать.

ПС Сетевая модель, модель работы с бд, потоками, я реализовал свою, никаких mmocore(l2j) и тому подобного. Ориентация идет на распределенные вычисления.

Дерзаем дамы и господа.

Добавлено через 31 минуту
Подготовка сервера для чтения.

Структуры:
Свернуть ↑Развернуть ↓


После получения ключей вызывается метод Crypto.init(key)

<< , >> - циклический сдвиг массива (побайтовый).

!Проблема с proccess.

Последний раз редактировалось Gattsu; 11.10.2013 в 22:49. Причина: Добавлено сообщение
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Сказали спасибо: