Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.FTN.DEVELOP
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.FTN.DEVELOP с датами от 12 Jul 13 20:52:30 до 25 Jun 24 23:52:42, всего сообщений: 2542
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 468 из 2542 ==================================== RU.FTN.DEVELOP =
От   : Yuri Myakotin                    2:5020/4441.1      05 Sep 14 12:56:30
Кому : Ivan Agarkov                                        05 Sep 14 12:56:30
Тема : Основанный на SQL тоссер/мейлер готов
FGHI : area://RU.FTN.DEVELOP?msgid=2:5020/4441.1+54097eef
На   : area://RU.FTN.DEVELOP?msgid=2:5020/849.1+54097758
= Кодировка сообщения определена как: CP866 ==================================
Ответ: area://RU.FTN.DEVELOP?msgid=2:5020/545+540987d9
Ответ: area://RU.FTN.DEVELOP?msgid=2:5020/849.1+540994fb
==============================================================================
Hello Ivan!

Friday September 05 2014 12:39, Ivan Agarkov wrote to Yuri Myakotin:
YM>> Я потихоньку там в вики описание протокола набиваю, но пока там
YM>> только малая часть - описание команд. Еще как минимум все
YM>> используемые структуры описать надо будет, систему приоритетов
YM>> команд, и вообще механику сессии - как происходит логин, как
YM>> происходит передача эхомейла, алгоритм получения хеша для логина
YM>> и ключа/вектора инициализации для шифрования etc etc etc.

IA> Я бы предложил по блокам расписывать и я это буду к себе добавлять.
IA> Формат сообщения - 32 бита хидер, из которых 8 старших бит - тип
IA> пакета, а остальное - длинна. Кстати зачем 8 бит, если там и в 4 всё
IA> уложится? :-)
Hа будущее. Запас. К примеру, можно будет добавить подписку-отписку-создание эх-фреки-etc в виде служебных сообщений, а не нетмейла к ареафиксу.

IA>  Hо не суть. Дальше сервер посылает какой-то хэш а клиент
IA> посылает пароли - так?
Сервер посылает инфу о себе (CMD_SRV_FIRST) - версию протокола, флаги (на данный момент реализован 1-битный флаг включения шифрования и 2-битный флаг приема нетмейла на непарольной сессии), рандомный хэш 32 байта, количество AKA и их список, плюс пакованный блок текстовой инфы (5 юникод-строк: название софта, станции, имя сисопа, местоположение и прочая инфа).

Клиент проверяет соответствие фидо-адреса сервера ожидаемому адресу линка, если да - отвечает точно таким же пакетом (СMD_CLIENT_FIRST) со своими данными, вычисляя функцией kessak_256 ответный хеш из: 32 байт хеша сервера, после которых идет юникод-пароль на сессию.

Формат заголовка пакета:
typedef struct tagLoginHeader
{
    MailerMsgHeader HDR;
    unsigned char HASH[32];
    unsigned char ProtocolVersionHi;
    unsigned char ProtocolVersionLo;
    unsigned short NumOfAkas;
    union
    {
            unsigned int Flags;
            struct
            {
                unsigned UseEncryption : 1;
                unsigned AcceptInsecureNetmail : 2;
                unsigned reserved : 29;
            };
    };
    unsigned int PackedContentOriginalSize;


} LoginHeader, *lpLoginHeader;

За ним идут 8-байтные адреса в количестве NumOfAkas штук, а за ними - пакованный Zlib'ом (функцией compress2) блок текста.

Формат фидошных адресов:
typedef union
{
    unsigned long long FullAddr;
    struct
    {
        WORD zone;
        WORD net;
        WORD node;
        WORD point;
    };
} FTNAddr, *lpFTNAddr;


Сервер сначала проверяет, есть ли у него линк с адресом из списка AKA клиента, и нет ли уже активной сессии с этим линком, если все ок - сравнивает присланный клиентом хэш с таким же, вычисленным им самим, если совпадает - посылает CMD_SRV_OK, в противных случаях - CMD_SRV_UNKNOWN_LINK, CMD_SRV_BUSY или CMD_SRV_INCORRECT_PWD.

Hу а дальше начинается, собственно, передача нетмейла, эх и файлов. Приоритет очереди отправки: команды > нетмейл > эхи > файлы. Т.е. если, скажем, появится новый нетмейл, он будет отправлен между частями передающегося уже файла.



IA>  Вообще пример сессии бы, с расшифровкой
IA> пакетов.
В процессе написания... сначала нужно будет все структуры в вики перечислить и расшифровать, потом пример сессии.




See all in Hell,
Yuri--- Мессагомаратель 1.1.5-b20110320
---
* Origin: Убей человека. Прежде всего в самом себе. (2:5020/4441.1)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.107725 секунды