Skip to content

Instantly share code, notes, and snippets.

@getjump
Created May 25, 2016 12:03
Show Gist options
  • Select an option

  • Save getjump/57409c80433363ceb107e172dfd40c69 to your computer and use it in GitHub Desktop.

Select an option

Save getjump/57409c80433363ceb107e172dfd40c69 to your computer and use it in GitHub Desktop.
Panagea Protocol Client/Server
Протокол будет составлен из минимальных частей, которые будут наращиваться с каждой версией, слоёв.
0 слой - базовая единица для поддержания подключения между клиентом/сервером.
Подключение через классическое TCP Keep-Alive соединение.
Сериализация будет иметь следующий вид:
{
MessageHeader
MessageBody
}
Где, MessageHeader - содержит информацию о типе данных перемещаемых в Body, а так-же различную полезную информацию. Любой запрос/ответ строго регламентирован, и может содержать только то что описано.
Например, в header - может содержаться псевдо-параметр hash, который будет соотвествовать, например, строке, которая соотвествует необходимому конструктору для данных в Body.
Любой верхний слой, может вызывать методы нижних слоёв, обратно неверно.
На 0 слое необходимо реализовать:
1. Метод обмена ключами для начала сеанса шифрования траффика { -> RequestEncryptionHandshake, ResponseEncryptionData }
2. Саппорт-методы, вроде ping { -> NullResponse }
3. Запрос перехода на следующий слой { -> RequestNextLayer }
1 слой, уже предполагается, что перед использованием любых методов, используются Middleware - шифрование с 0-вого слоя.
1. Запрос на переход на i - слой -> { -> RequestLayer[layer] }
2. Передача fingerprint'а клиентского оборудования -> { -> RequestClientFingerprint }
3. Синхронизация времени { -> RequestTimeSynchronize }
2 слой:
1. Авторизация, возвращает сессию, которая верна, пока не будет явно уничтожена { -> RequestAuthorization[login, password], ResponseAuthorization }
3 слой:
1. Подгрузка необходимых дополнительных модулей в клиент, например Runtime Code Execution и т.д.
2. Выполнение запрашиваемых сервером процедур, как например, передать модулю ModuleName, данные
4 слой:
1. Получение необходимых данных, например подписок на хаки
2. Использование серверных обновлений для всех данных (внутри абстракция, над любым типом данных)
5 слой:
1. Запрос получения основных дллок хаков
Внутри длл, будет вшита отдельная предгенерированная сессия
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment