Разработка Tera JAVA (Part 1) - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Другие игры / Other games > TERA

Важная информация

TERA Разговоры о новой игре от компании HanGame и Bluehole Studio, обсуждение игровых новостей.

Ответ
Опции темы
Непрочитано 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™ Ответить с цитированием
Сказали спасибо:
Непрочитано 11.10.2013, 23:10   #2
Аватар для DiagoD

По умолчанию Re: Разработка Tera JAVA (Part 1)

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

Перенес алгоритм с C# на Java, проблема в многих местах, c SHA-1(160 бит хэш) там не понятная история, реализован не по RFC, тк выходные результат получаются разные и на C#, он выдает digest масива 5 uint32, но в общем худо бедно перенес на Java. Потом загвоздка в функциях криптографии, там используется без знаковые числа(проблема происходит при приведении типа). Одно завязано на другом, дебаг в двух средах, на двух языках, туго все идет.
В разделе теры, возьми сорсы которые я шарил и вытяните с них криптор
Он полностью рабочий
__________________
open-team.ru - Freya, HighFive...
DiagoD вне форума Отправить сообщение для DiagoD с помощью ICQ Отправить сообщение для DiagoD с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 11.10.2013, 23:18   #3
Аватар для Gattsu
Пользователь

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

Цитата:
Сообщение от DiagoD Посмотреть сообщение
В разделе теры, возьми сорсы которые я шарил и вытяните с них криптор
Он полностью рабочий
я бы рад, но кто-то бы перезалил бы
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 12.10.2013, 01:46   #4
Аватар для n3k0nation
Antihero

По умолчанию Re: Разработка Tera JAVA (Part 1)

Спасибо за информацию, может быть когда-нибудь воспользуюсь

Немного обсуждения.
Signed/unsigned
u-типы данных ничем по структуре не отличаются от signed типов в джаве. Во всяком случае они представляются в таком же количестве байтов, что и оригинальная структура.
Зачастую, в шарпах unsigned типы используются для исключения "хрен пойми, что за хрень в переменной", так что можно не беспокоится о переполнении, но лучше всего оттестировать, как это все воспроизводится на клиентской стороне, чтобы не получилось такого: взял деньгу и сервер упал.
И да, для того, чтобы превратить signed в unsigned и наоборот достаточно в правильном порядке сложить байты из которых этот тип состоит.

SHA
На счет хеширования SHA. Полистайте мелкомягкую доку по их дигестам, возможно там есть какие-то... ммм... недокументированные возможности, если можно так сказать А вообще, мне кажется, что тут косяк с вашей стороны, а с алгоритмикой отпечатков все впорядке.

Network
Что за распределенная модель сети? Подробнее пожалуйста, если можно.
В любом случае Вы используете NIO или какой-нибудь нетворк-фреймворк, так что это мало будет отличаться от ммогоря, за исключением, что Вы возможно сможете это все правильно спроектировать и реализовать.

Троллинг: спасибо, что открыли глаза на сдвиги
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 12.10.2013, 06:23   #5
Пользователь

По умолчанию Re: Разработка Tera JAVA (Part 1)

Кто сказал что нет проектов?

Проекты есть. Я вот до сих пор понемногу обновляю сборку которую мы разрабатывали с командой разработчиков (активный сервер правда уже закрыт из-за неприбыльности после F2P). 1-40lv Spawnzones, crafting, enchanting, gathering, mounts, most of skills etc...

Всю сеть можно прекрасно "уложить" с netty, добавить хендлеры ответственный за шифрование/дешифрование данных, да и маршаллинг макетов заодно (вот только сейчас идея появилась).

Есть ещё проект на Scala (гдето видел тут на форуме), не думаю что жив, но от туда можно взять пару наработок.
upd: http://forum.zone-game.info/showthread.php?t=24741
__________________
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Aquanox вне форума Ответить с цитированием
Непрочитано 12.10.2013, 06:45   #6
Аватар для Gattsu
Пользователь

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

SHA
"Ошибка" не понятная мне реализованная разработчиком, хэш реализованный по стандартам, использовал встроенный алгоритм в java, для теста, выдает разный хэш, то-есть хэш разработчика отличается от стандарта и разработчик выдает выходной результат не массивом байт, а массивом без знаковых чисел, почему так, это действительно придется читать документацию вникать в алгоритм, и смотреть на чужой код, проводить анализ...

Работает не трогай, а то работать не будет

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

Алгоритм криптографии надо улучшать в первую очередь, он увеличит быстродействие, уменьшить задержку вычислений.
Улучшение в потреблении памяти, в меньшем количестве операции...

Меня мозолит эта криптография Не дает спокойно спать

Не смысла делать, то что выдает разный хэш...

Сдвиг мог быть побитовый

Network
Как отработаю конечный вариант, выложу
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 12.10.2013, 10:35   #7
Пользователь

По умолчанию Re: Разработка Tera JAVA (Part 1)

Ошибок там нет. В Тере используется странная имплементация SHA, которая по особому выравнивает (padding) байты если входной массив очень большой (а там по 300 вроде бы байтов?). В яве этот алгоритм "правильно" реализовывается в GNU Crypto. В C# - работает по умолчанию. В С++ я писал вручную (OpenSSL не подходил, а тянуть ради хеша здоровенную крипто-либу не хотелось).
__________________
НЛО прилетело и оставило подпись здесь.
YK_Sirius вне форума Ответить с цитированием
Непрочитано 18.10.2013, 10:05   #8
Аватар для n3k0nation
Antihero

По умолчанию Re: Разработка Tera JAVA (Part 1)

Бамп во славу Ozzy! Ибо интересно: есть ли какие-нибудь продвижения у ТСа
Ну и ессесно все еще интересно посмотреть на реализацию сети.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка Java эмулятора RF Online. leada Рынок / Marketplace 7 05.09.2013 17:35
Ошибка ГС! keksar Серверная часть 29 21.02.2011 20:55
Крепости (осады) Romanz Серверная часть 125 31.07.2010 18:12
баги и недочёты сервака Devilop Серверная часть 21 03.06.2010 23:50
Адаптируем SQL BimBom Работа со скриптами 9 14.10.2009 15:14


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

Вверх