-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprotocol-old.txt
More file actions
162 lines (93 loc) · 6 KB
/
protocol-old.txt
File metadata and controls
162 lines (93 loc) · 6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
Система протоколов является трёхуровневой.
Протокол первого уровня (cspyp1) обеспечивает базовое соединение
клиентов и администраторов к серверу, а так же пересылку команд между
администратором-клиентом, и наоборот.
Протокол второго уровня (cspyp2) работает поверх протокола первого
уровня. Он обеспечивает получение информации о поддерживаемых режимах,
а так же соединение по одному из режимов (списки режимов в описании).
Протоколы третьего уровня. Несколько протоколов (по одному протоколу
для каждого из режимов). Обеспечивают функциональность, требуемую режимом
Например, для консольного режима один протокол третьего уровня, для
графического режима - другой (например, на основе VNC), для аудио -
третий, и т. п.
// --------------------------------------------------
Протокол первого уровня: (cspyp1)
При установке соединения клиент посылает информацию о себе в следующем виде:
cspycli:1:184a9ef35b31ea490dd3131313131332:
cspycli протокол
1 версия протокола
184a9... md5 - уникальный идентиффикатор клиента
В случае неудачи, соедиенение разорвётся.
Администратор посылает следующую информацию:
cspyadm:1:admin:admin:
В случае неудачи, соединение разорвётся.
Администратор может посылать следующие запросы:
l:
- получить список всех подключенных клиентов
Сервер должен ответить:
l:1;md51;2;md52;3;md53...:
где 1, 2, 3 - уникальные номера (сокеты) клиентов
md51, md52, md53 - уникальные идентиффикаторы клиентов
t:5:15:someInformation:
- отправить какую-то информацию клиенту
5 - номер клиента
15 - длина сообщения
Сервер может прислать:
f:5:18:resonseInformation:
- пришла какая-то информация от клиента
5 - номер клиента
18 - длина сообщения
Те же самые команды используются клиентом. Но с ограничениями.
Клиент не может первым послать команду администратору. Клиент
не может посылать команды другому клиенту.
В случае дисконнекта клиент или администратор должен
послать на сервер команду:
d:
При отключении клиента сервер посылает всем
администраторам новый список клиентов
Сервер может посылать неактивным клиентам команду:
p:
На неё клиент должен ответить:
p:
Если клиент не отвечает, сервер считает что клиент
разъединился.
// --------------------------------------------------
Протокол второго уровня: (cspyp2)
Администратор может посылать клиенту следующие запросы:
Запросы:
l:
- перечислить поддерживаемые режимы (протоколы 3-го уровня)
Клиент должен ответить:
m:1;2;4:
a:1:
- активировать режим 1
Клиент должен начать передавать данные, требуемые режимом 1
d:1:
- отключить режим 1
Клиент должен перестать передавать данные режима 1
1:32:data....:
передача данных режима (протокола) 1
длина данных: 32
В таком же формате данные передаются обратно
// --------------------------------------------------
Серия протоколов третьего уровня
Каждому режиму соответствует свой протокол. У каждого протокола
есть уникальный номер.
Список протоколов и их номеров:
1) консольный доступ (cmd/bash/etc)
2) графический доступ (vnc-like)
3) файловый доступ
4) доступ к медиаустройствам (микрофон, камера)
5) прокси доступ (возможность администратору использовать клиента как прокси)
6) редирект трафика (возможность открытие порта у клиента и перенаправление трафика на администратора)
7 и выше) прочие режимы
// --------------------------------------------------
Консольный протокол третьего уровня (cspyp3-1)
Администратор может отправить клиенту любую консольную команду,
поддерживаемую удалённой системой.
Например:
ls
В качестве обозночения конца команды используется \n
В ответ клиент посылает администратору результат работы
заданной команды.