Российское содружество даунгрейдеров
Авторизация
DMconnect
Ознакомительный документ
Автор: Сухарь Сухаревич
DMC: PredoK_CyXaR
Помощь: BitByByte, Octavian.
Санкт-Петербург
1998
Оглавление
Первые этапы работы в DMconnect
Работа с протоколом DMconnect состоит из нескольких этапов: Авторизация, Выбор подсервера, Вход на подсервер, Общение на подсервере в реальном времени, Закрытие соединения (завершающий этап, подразумевает выход из списка пользователей "на линии"). В этом документе мы рассмотрим только два первых этапа - "до авторизации" и саму авторизацию.
Сразу после запуска клиента DMconnect, мы получаем сообщение Enter command (/login /register): (с двоеточием). Это сообщение как бы подталкивает нас к началу авторизации или регистрации новой учётной записи на сервере. Рассмотрим процесс "вне" (можно назвать нулевым этапом, т. е. этапом до авторизации).
HEX |
Вид в UTF-8 |
Синтаксис |
Описание |
2F 6C 6F 67 69 6E |
/login |
LOGIN ; PASSWORD |
Авторизация пользователя в уже зарегистрированную учётную запись |
2F 72 65 67 69 73 74 65 72 |
/register |
LOGIN ; PASSWORD |
Регистрация новой учётной записи на сервере |
Впрочем, синтакис у обоих команд одинаковый, но назначение совершенно разное (см. столбец "Описание"). Обратите внимание на то, что начинающий HEX-символ здесь - 2F, как и у обычных команд на прочих этапах. Если отправить серверу какую-либо другую команду, то сервер ответит:
45 6E 74 65 72 20 63 6F 6D 6D 61 6E 64 20 28 2F 6C 6F 67 69 6E 20 2F 72 65 67 69 73 74 65 72 29 3A Enter command (/login /register):
Это же он отправляет при подключении (см. раздел выше). Допустим, мы разобрались с командами. Следующий ответ нас ожидает при отправке "чистого" /login:
Usage: /login <username> <password> ("подсказка" сервера о правильном синтаксисе команды) 55 73 61 67 65 3A 20 2F 6C 6F 67 69 6E 20 3C 75 73 65 72 6E 61 6D 65 3E 20 3C 70 61 73 73 77 6F 72 64 3E (эта же строка в HEX)
Обратите внимание на символ 3A: он часто встречается в ответах сервера (см. предыдущий документ). Что будет при попытке авторизации с неправильным именем учётной записи или паролем, см. ниже:
49 6E 76 61 6C 69 64 20 75 73 65 72 6E 61 6D 65 20 6F 72 20 70 61 73 73 77 6F 72 64 2E (переход \n) 45 6E 74 65 72 20 63 6F 6D 6D 61 6E 64 20 28 2F 6C 6F 67 69 6E 20 2F 72 65 67 69 73 74 65 72 29 3A
Строка 45 6E 74 ... в данном примере идентична строке Enter command (/login /register):, т. е. пользователь снова оказывается на "нулевом этапе". Допустим, мы указали правильное имя учётной записи и пароль, но другой пользователь уже в сети с этого имени:
54 68 69 73 20 75 73 65 72 6E 61 6D 65 20 69 73 20 61 6C 72 65 61 64 79 20 69 6E 20 75 73 65 2E (переход на нулевой этап с \n) 45 6E 74 65 72 20 63 6F 6D 6D 61 6E 64 20 28 2F 6C 6F 67 69 6E 20 2F 72 65 67 69 73 74 65 72 29 3A
С процедурой команды /login на этом всё - перейдём к /register. Сервер ответит так на "чистый" /register:
Usage: /register <username> <password> (сервер подсказывает синтаксис) 55 73 61 67 65 3A 20 2F 72 65 67 69 73 74 65 72 20 3C 75 73 65 72 6E 61 6D 65 3E 20 3C 70 61 73 73 77 6F 72 64 3E (эта же строка в HEX)
Начинающий префикс ответа тут идентичен префиксу ответа /login - 55 73 61 67 65 3A. Сервер ответит так, если мы введём уже существующее имя пользователя:
Username already taken. Try another. (сервер сообщает о том, что имя пользователя уже занято) 55 73 65 72 6E 61 6D 65 20 61 6C 72 65 61 64 79 20 74 61 6B 65 6E 2E 20 54 72 79 20 61 6E 6F 74 68 65 72 2E (эта же строка в HEX)
В случае, если все условия регистрации соблюдены, ответ будет таковым:
Registration successful. Please log in. (сообщение сервера об успешной регистрации) 52 65 67 69 73 74 72 61 74 69 6F 6E 20 73 75 63 63 65 73 73 66 75 6C 2E 20 50 6C 65 61 73 65 20 6C 6F 67 20 69 6E 2E (эта же строка в HEX)
Отметим также, что после любого из этих ответов, пользователь вновь переходит на "нулевой этап". После успешного выполнения /login, пользователь переходит на этап "Авторизация".
Пользователь переходит на этот этап, если выполнение команды /login прошло успешно. Посмотрим, как это выглядит:
Login successful. (переход \n и задержка 0.2-0.3 сек.) Available servers: SERVER, SERVER ... (переход \n без задержки) Select a server using /join_server <server_name>. (переход \n)
Посмотрим на те же строки, но в HEX:
4C 6F 67 69 6E 20 73 75 63 63 65 73 73 66 75 6C 2E 41 76 61 69 6C 61 62 6C 65 20 73 65 72 76 65 72 73 3A 20 53 65 6C 65 63 74 20 61 20 73 65 72 76 65 72 20 75 73 69 6E 67 20 2F 6A 6F 69 6E 5F 73 65 72 76 65 72 20 3C 73 65 72 76 65 72 5F 6E 61 6D 65 3E 2E
Обратите внимание на символы 3A 20 во второй строке. Это - разделяющие символы, которые используются только здесь, а также в ответе на команду для запроса списка пользователей - /members.
На этом сама процедура авторизации подходит к концу, пользователь должен зайти на подсеврер /join_server ... и начинать общаться. Обратите внимание, что даже на этом этапе доступны не все команды, например, /members. При попытке отправить эту команду, ответ будет следующим:
Please log in and join a server first. (сервер говорит, что нам сначала нужно зайти на подсервер, прежде чем выполнить данную команду) 50 6C 65 61 73 65 20 6C 6F 67 20 69 6E 20 61 6E 64 20 6A 6F 69 6E 20 61 20 73 65 72 76 65 72 20 66 69 72 73 74 2E (эта же строка в HEX)
Впрочем, вот полный список доступных на данном этапе команд:
HEX |
Наименование |
Описание |
2F 70 ... |
/pm |
Отправка личного сообщения пользователю |
2F 6C ... |
/list_servers |
Получить список подсерверов, доступных пользователю |
2F 6A ... |
/join_server |
Войти на подсервер |
2F 63 ... |
/create_server |
Создать собственный подсервер |
2F 68 ... |
/help |
Запрос серверу на получение информации о командах |
Рассказывать про все эти команды подробнее сейчас не имеет смысла, об этом вы сможете прочитать в документации по этапу 3 и 4.
Надеемся, документ помог вам ознакомиться с процедурой авторизации и её этапами в DMconnect. Спасибо за внимание!