Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Примерный ход авторизации майна (до версии 1.6.2, там все кардинально перепилили, но, я думаю, врятли там сложно адаптировать):
- ----------- ЛАУНЧЕР -----------------
- 1) Юзер вводит логин и пароль
- --> POST /auth/auth.php
- --> user=Username&passwd=Password&version=14
- <-- ok:a47e358832722c25
- Где a47... - сессионный токен.
- 2) Лаунчер запускает клиент, передавая ему имя юзера и токен. Таким образом, клиент пароля уже не знает
- ------------ КЛИЕНТ -----------------
- Юзер заходит на сервер. В процессе хендшейка с сервером на основании его публичного ключа, сессионного симметричного ключа и еще какой-то херни генерируется хеш. Допустим, у нас получился хеш "8b62ef83966595d2815493261ea2f051"
- Клиент посылает запрос вида:
- --> GET /auth/joinserver.php
- --> user=Username&sessionId=a47e358832722c25&serverId=8b62ef83966595d2815493261ea2f051
- <-- OK
- Сервер должен вернуть OK или описание ошибки, например, не подошел сессионный токен. Если вернулась ошибка - коннект прерывается. Клиент отправляет серверу пакет, что с его стороны авторизация закончилась и сервер может приступать к проверке.
- ------------ СЕРВЕР ---------------------
- Сервер посылает запрос вида:
- --> GET /auth/checkserver.php
- --> user=Username&serverId=8b62ef83966595d2815493261ea2f051
- <-- YES
- Если вернулась строка "YES" - клиент пропускается на сервер. Если не "YES" - то кикается с ошибкой "Failed to verify username". Таким образом, сервер не знает ни пароля, ни сессионного токена клиента.
- Имена параметров и форматы ответов могут быть другими, но суть, я думаю, ясна. При отключеном online-mode этот шаг пропускается. Для более подробной информации есть http://wiki.vg/Protocol_Encryption
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement