CloneFort_server

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

CloneFort_server

Сообщение Chief » 24.02.2008 00:21:48

CloneFort_server

Думаю это не безизвестный клиент-серверный чат hxxp://www.commfort.com/.
Идея проста: сделать свободный клон серверной части, совместимой (хотя бы частично), но с открытым исходным кодом.

План работ:
1. Изучить и разобрать бинарный протокол CommFort (вычислить методику шифрования, сжатия, и структуру пакетов);
2. Собрать небольшую команду (хотя и не обязательно);
3. Отработать план разработки серверной части (кроссплатформенной);
...

Вообщем отписуем идеи, предложения, решения и т. д. здесь.

Дизассемблированный код как решение для конечного продукта не используем, дабы не возникло проблем с законом о нарушении авторского права.
Использование в целях изучения не запрещается.


Немного информации о самом сервере CommFort: "хакнутый", декомпрессованый (unpacked) оригинальный сервер и ссылки на таковой не публикуем, ищем сами и используем для изучения.
Оригинальная серверная часть написана на C++ Builder, по-этому довольно просто отследить использованные автором компоненты и т. п.

There are four types of server licenses available. The server can be registered from any place in the world, and the license fee can be submitted securely.

CommFort Server 10U (10 client users max) - 79 USD
CommFort Server 25U (25 client users max) - 149 USD
CommFort Server 60U (60 client users max) - 249 USD
CommFort Server Unlimited - 399 USD

Цены на оригинальный продукт.
Последний раз редактировалось Chief 03.03.2008 20:35:11, всего редактировалось 7 раз(а).
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение Chief » 24.02.2008 00:36:56

Процесс подключения:

Клиент (содержание пакета отличается от подключения к подключению):
Код: Выделить всё
D6 2B 00 00 8D 3A 7A 4D 4D 4E 74 AD B0 B4 B0 B2 BC B7 B5 BD B8 BE F4 8C 8D 8F C7 EA 91 92 93 94 95 96 97 99 98 93 D6 EE B3 BE DC C8 C8 C7 C5 D6 08 00 00 D6 2C 2E 2A 5C 51 5A 5D D6 02 00 00 B6 79

Сервер (содержание почти постоянное при определенных настройках, при неизменных настройках чаще всего меняются байты по смещению: dec(16, 17) и dec(29, 30) ):
Код: Выделить всё
D6 02 00 00 4D 79 D6 07 00 00 63 05 7B 7C 7C 4A 79 D6 1F 00 00 6C 7B 7B 03 7D 7E 7E B4 87 B3 B3 B4 85 86 87 88 89 8A 8B 8D 84 C3 FD BE B1 D1 FB FD F0 F0 97 D6 06 00 00 0E 10 12 13 14 3B D6 07 00 00 5E 7A 7B 7C 7D 7E 7F D6 13 00 00 62 7A 7B 7C 7C 7F 97 83 83 82 E7 84 71 87 87 7C 88 8A 8B D6 13 00 00 54 7B 7B 03 7D 7E 7E 80 96 18 7E 8B 6B 83 C4 E0 E0 EF ED D6 01 00 00 58 D6 01 00 00 5B D6 0C 00 00 30 1E 1C 1E 00 01 02 30 34 AA 39 37 D6 13 00 00 75 7A 7F 11 1C 17 11 81 81 82 83 85 85 86 87 88 89 8A 8B

В простое сервер посылает клиенту каждую минуту пакет:
Код: Выделить всё
D6 01 00 00 B1
Последний раз редактировалось Chief 24.02.2008 01:34:22, всего редактировалось 1 раз.
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение ev » 24.02.2008 00:47:46

а почему нельзя сделать свой чат с открытым протоколом?
отсутствие клиента?
ev
долгожитель
 
Сообщения: 1733
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение Chief » 24.02.2008 00:47:54

Блоки данных:

Разберем на примере пакет посылаемый клиентом к серверу при подключении:
Код: Выделить всё
D6 2B 00 00 8D 3A 7A 4D 4D 4E 74 AD B0 B4 B0 B2 BC B7 B5 BD B8 BE F4 8C 8D 8F C7 EA 91 92 93 94 95 96 97 99 98 93 D6 EE B3 BE DC C8 C8 C7 C5 D6 08 00 00 D6 2C 2E 2A 5C 51 5A 5D D6 02 00 00 B6 79

Судя по всему блоки отделяются Magic-байтом D6, затем идут три байта определяющие размер или не только размер, остается только догадываться.
Берем 2 байт - значение: 2B dec(43), игнорируем следующие два байта равные 0, отсчитываем 43 байта и получаем что это и есть блок данных, так как за 43 идет снова байт со значением D6 08 00 00. Опять отсекаем нули, считаем 8 байт - D6 02 00 00, отсекаем нули остаются последние два байта пакета.
Получается, что:
Код: Выделить всё
magic db D6h
size dw ?
reserved db 0
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение Chief » 24.02.2008 00:51:35

ev писал(а):а почему нельзя сделать свой чат с открытым протоколом?
отсутствие клиента?

Скажу честно - зачем изобретать? Хотя не факт, клиент то можно и написать, но если писать то сразу качетсвенный и опять же кроссплатформенный.

Я там уже подымал топик про "супер-чат" (загнал капитально естественно). Сразу такую тему подымать было глупо. Начнем с мелкого, а вот как бог даст, дальше посмотрим.
Цель: опять же открытость (я непосредственно сторонник OpenSource, защищал и буду защищать данное направление).

Пока пусть целью будет - сделать хотя бы открытую совместимость с CommFort-чатом, т. к. из-за своей бурной известности и популярности благодаря абсолютной простоте он сложил о себе хорошее мнение. Но цена - конечно полный бред...
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение Attid » 24.02.2008 00:54:12

где-то я это уже слышал, не тут ли ?


ev а ты говоришь разбежались, думаю труппа наберется.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2583
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Chief » 24.02.2008 00:56:02

Attid писал(а):где-то я это уже слышал

Да, да именно там. Но там слишком высоко взяли мы. Ну да ладно... Повторюсь - начнем с низов, а дальше посмотрим что получится.

Здесь не подымаем тему - про команду (кстати несколько человек все же удалось собрать). Здесь смотрим открытыми глазами на реальные вещи.
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение Chief » 24.02.2008 01:14:20

Хм... Возможно что именно клиент инициирует шифрование соединения, по-этому упираем взгяд на то, что при подключении клиент передает ключ, которым в последствии и шифруются пакеты между клиентом и сервером.

Chief писал(а):В простое сервер посылает клиенту каждую минуту пакет:
Код: Выделить всё
D6 01 00 00 B1

Хм... Через каждые 10 минут (т. е. по прохождению 10 таких пакетов от сервера к клиенту) клиент посылает такой же пакет серверу.

Код: Выделить всё
magic    db D6h
p_size   dw 1
reserved db 0
p_data   db B1h

Вероятно, что цель данного пакета - поддержание соединения или т. п.
Последний раз редактировалось Chief 24.02.2008 15:18:38, всего редактировалось 1 раз.
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение ev » 24.02.2008 01:27:49

Скажу честно - зачем изобретать?

в данном случае проще изобрести, чем сначала разобраться в чужом и закрытом протоколе
а потом еще и зависеть от разработчика (поменял протокол, придется искать где и что именно)

Хотя не факт, клиент то можно и написать, но если писать то сразу качетсвенный и опять же кроссплатформенный.

ну а в чем проблема? :)
клиет - flash
сервер - fpc
протокол - xml (можно взять боле-менее готовый)
и будет счастье :)
ev
долгожитель
 
Сообщения: 1733
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение Chief » 24.02.2008 01:36:25

ev, если не сложно, можешь без критики, чисто по теме?
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение Chief » 24.02.2008 01:50:25

Разбор функций сервера и пакета отправляемого сервером при подключении клиента:

Функция : Voice Chat
Смещение : dec(79)
Значение выключено : dec(172)
Значение включено : dec(173)

Функция : File(s) Transfer
Смещение : dec(80)
Значение выключено : dec(172)
Значение включено : dec(173)

...небольшое умозаключение:
Код: Выделить всё
func_on  equ ADh
func_off equ ACh


При включенной поддержке Bulletins Board пакет увеличивается на 8 байт (при условии что объявлений в базе данных НЕТ):

...
D6 01 00 00 58
D6 01 00 00 5B
D6 04 00 00 02 2D 2E 2F
D6 0C 00 00 30 1E 1C 1E 00 01 02 30 34 AA 39 37
...

Функция : Bulletins Board
Смещение : dec(81)
Значение выключено : dec(174)
Значение включено : dec(175)
* под сомнением func_on и func_off.... хм...
Гм... Вообщем вопрос с разбором bb выносим отдельно.

Поехали далее...

Функция : Active Window Titles
Смещение : dec(82)
Значение выключено : dec(174)
Значение включено : dec(175)
Значение по выбору пользователя : dec(177)

Функция : Messages To Multiple Recipients (Многоадрески)
Смещение : dec(96)
Значение выключено : dec(213)
Значение включено : dec(211)
Значение только администраторам : dec(212)

(пост обновляю по мере изучения)
Последний раз редактировалось Chief 24.02.2008 02:47:15, всего редактировалось 3 раз(а).
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение Alexander » 24.02.2008 01:59:36

Я совсем ноль в сетях, но если действительно делать что то
свободное, может обратить внимание на gnunet и tor ?

Не знаю на сколько это реально прикрутить, но идеи хорошие.

http://hostinfo.ru/articles/security/rubric157/890/
http://ru.wikipedia.org/wiki/Tor
http://www.ccc.ru/magazine/depot/07_08/ ... l?0502.htm

http://www.torproject.org/index.html.ru

http://www.securitylab.ru/software/233403.php

http://gnunet.org/
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 582
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение Chief » 24.02.2008 02:16:23

Alexander, пока цель поднять совместимость с CommFort, а вот насчет: мультипротокольного-кроссплатформенного чат-сервера - это весьма практичная задача. Но давайте не повторять мою ошибку и не гнаться сразу за всем, начнем с поддержки CommFort 3.xx и посмотрим насколько активно это задача буду решаться.

В команде 4 человека + я, т. е. всего 5. Естественно командная работа сама по себе более плодотворная, но... не все горят желанием посвещать себя данной цели, но могут и хотят подкинуть идейку или помочь в решении какой-то подзадачи...

Насчет tor'а наслышан - для наших целей не подходит (на данном этапе) вовсе.
Последний раз редактировалось Chief 24.02.2008 15:29:00, всего редактировалось 2 раз(а).
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

Сообщение ev » 24.02.2008 02:20:30

Chief
так вроде по теме :)

имхо даже и браться не стоит в таком ключе - только геморой и никаких гарантий что будет работать в будущем

есть смысл браться, только если жить по принципу - зачем делать что-то просто, если можно самим создать кучу проблем и решать их :)

хотя может у вас какая то другая мотивация есть еще? ;)

я вот даже представить себе не могу что может заставить человека возиться с бинарным закрытым протоколом, если можно использовать что-то более дружелюбное... неужели проблема написать клиента? не верится... слишком уж возня с протоколом геморойнее....
ev
долгожитель
 
Сообщения: 1733
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение Chief » 24.02.2008 02:25:27

ev, тогда пример - зачем взялись за разработку l2jserver, зачем возиться с бинарным протоколом? А насколько сейчас данный проект популярен? А кто помнит как все начиналось?

Гм... Отвечу просто - "а шоб було"(c). Темболее, CommFort писался с использованием VCL, а это заметно упрощает задачу вычисления методов шифрования, сжатия и т. п., т. к. автор в любом случае использовал как решение готовые компоненты.

Клиент то можно потом и "свой" написать. А представь как для юзеров будет "круто" когда в одном клиенте и в одном сервере столько совместимостей и столько полезных функций. О мой бог, сколько открытых проектов, с которых можно черпать идеи, да лопатой гребти и все - в этом то и цель OpenSource (век живи, век учись(с)).
Chief
новенький
 
Сообщения: 74
Зарегистрирован: 26.09.2007 17:44:59

След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru