Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Разработка Tera JAVA (Part 1)
#1
Приветствую Вас многоуважаемые жители zg!

Клиент

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

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

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

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


Структуры
ЭТАП 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.
Ответ
#2
Gattsu Написал:На пункте 3.1 не могу расшифровать уперся лбом в проблему.
Не могу разобрать алгоритм криптографии, особо тесный опыт с криптографией не имел, так что буду благодарен за подсказки.

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

В разделе теры, возьми сорсы которые я шарил и вытяните с них крипторSmile
Он полностью рабочийSmile
open-team.ru - Freya, HighFive...
Ответ
#3
DiagoD Написал:В разделе теры, возьми сорсы которые я шарил и вытяните с них крипторSmile
Он полностью рабочийSmile
я бы рад, но кто-то бы перезалил быSmile
Ответ
#4
Спасибо за информацию, может быть когда-нибудь воспользуюсь Smile

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

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

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

Троллинг: спасибо, что открыли глаза на сдвиги :redlol:
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#5
Кто сказал что нет проектов? Big Grin

Проекты есть. Я вот до сих пор понемногу обновляю сборку которую мы разрабатывали с командой разработчиков (активный сервер правда уже закрыт из-за неприбыльности после 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
Ответ
#6
SHA
"Ошибка" не понятная мне реализованная разработчиком, хэш реализованный по стандартам, использовал встроенный алгоритм в java, для теста, выдает разный хэш, то-есть хэш разработчика отличается от стандарта и разработчик выдает выходной результат не массивом байт, а массивом без знаковых чисел, почему так, это действительно придется читать документацию вникать в алгоритм, и смотреть на чужой код, проводить анализ...

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

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

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

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

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

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

Network
Как отработаю конечный вариант, выложу
Ответ
#7
Ошибок там нет. В Тере используется странная имплементация SHA, которая по особому выравнивает (padding) байты если входной массив очень большой (а там по 300 вроде бы байтов?). В яве этот алгоритм "правильно" реализовывается в GNU Crypto. В C# - работает по умолчанию. В С++ я писал вручную (OpenSSL не подходил, а тянуть ради хеша здоровенную крипто-либу не хотелось).
НЛО прилетело и оставило подпись здесь.
Ответ
#8
Бамп во славу Ozzy! Ибо интересно: есть ли какие-нибудь продвижения у ТСа Smile
Ну и ессесно все еще интересно посмотреть на реализацию сети.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [Продажа] Ретайл серверных файлов TERA SilverSmoke 7 3,104 10-08-2020, 01:16 PM
Последний пост: SilverSmoke
  Где можно найти старый клиент TERA? CozyMucus 0 2,107 10-06-2020, 09:19 PM
Последний пост: CozyMucus
  TERA @ C++ TieLay 3 4,793 08-15-2020, 02:44 PM
Последний пост: BloodVais
  TERA с 1 Июня 2020г. больше не в России TieLay 0 2,443 05-22-2020, 03:39 PM
Последний пост: TieLay
  Эмулятор с поддержкой TERA EU 93.02 TieLay 0 3,018 05-12-2020, 10:55 AM
Последний пост: TieLay
  TERA - развитие эмулятора не остановлено TieLay 4 6,273 10-17-2016, 03:01 AM
Последний пост: Ugly
  Как включить геодату на Tera Shock Froust 3 3,937 07-27-2016, 01:17 PM
Последний пост: APKO
  Шара сурсы Tera C# LineOFWar 85 36,607 06-05-2016, 02:40 AM
Последний пост: SkyWard
  TERA @ JAVA TieLay 102 40,557 05-04-2016, 10:01 PM
Последний пост: TieLay
  [Share] TERA DataCenter Decryptor h4x0r 23 18,577 08-26-2015, 10:27 AM
Последний пост: flopix

Перейти к форуму:


Пользователи, просматривающие эту тему: 3 Гость(ей)