Телефон: +7 (383)-235-94-57

ПРОГРАММА УДАЛЕННОГО АДМИНИСТРИРОВАНИЯ

Опубликовано в журнале: Инженерные решения №4(5)

Автор(ы): Гришаева Светлана Сергеевна, Кобылянский Валерий Григорьевич

Рубрика журнала: Вопросы развития информационных технологий

Статус статьи: Опубликована 18 июня

DOI статьи: 10.32743/2658-6479.2019.4.5.121

Библиографическое описание

Гришаева С.С., Кобылянский В.Г. ПРОГРАММА УДАЛЕННОГО АДМИНИСТРИРОВАНИЯ // Инженерные решения: эл.научный журнал. –2019 – №4(5). URL: https://journaltech.ru/archive/5/121 (дата обращения: 13.11.2019). DOI: 10.32743/2658-6479.2019.4.5.121

Гришаева Светлана Сергеевна

студент ФПМИ НГТУ,

РФ, г. Новосибирск

Кобылянский Валерий Григорьевич

канд. техн. наук, доц. НГТУ,

РФ, г. Новосибирск

 

SOFTWARE FOR REMOTE ADMINISTRATION

 

Svetlana Grishaeva

student, department of theoretical and applied Informatics, Novosibirsk State Technical University,

Russia, Novosibirsk

Valery Kobylyansky

candidate of technical sciences, associate professor of Novosibirsk  State Technical University,

Russia, Novosibirsk

 

АННОТАЦИЯ

В работе описаны архитектура и принципы функционирования разработанной программы удаленного администрирования компьютеров локальной сети. Программа предназначена для использования в учебном процессе подготовки IT-специалистов и не требует предварительной инсталляции.

ABSTRACT

The paper describes the architecture and operation principles of the developed program for remote administration of computers of the local network. The program is intended for educational process of training IT-specialists and does not require pre-installation.

 

Ключевые слова: удаленное администрирование, удаленный доступ, архитектура клиент-сервер, сокет, асинхронный обмен данными, cериализация.

Keywords: remote administration, remote access, client-server architecture, socket, asynchronous data exchange, serialization.

 

В настоящее время все более актуальной становится задача удаленного управления компьютерами. Удаленно работают администраторы, обслуживающие большое число рабочих мест, сотрудники службы технической поддержки, программисты и другие категории пользователей. Примерами популярных программ удаленного управления являются TeamViewer, AmmyyAdmin, Radmin [1].

Общие принципы функционирования всех программ приблизительно одинаковы. В их составе имеются два модуля – сервер и клиент, причем серверный модуль загружается на удаленный компьютер, а клиентский работает на компьютере администратора. Клиент подключается к серверу путем указания IP-адреса или уникального идентификатора удаленного компьютера [3].

Для взаимодействия с клиентом сервер может работать через собственный порт или использовать порты, выделенные для других программ. Например, программа TeamViewer обычно использует выделенный порт 5938 для протоколов TCP и UDP, но может работать через TCP-порты 443 или 80, предназначенные для браузеров, использующих протоколы HTTPS и HTTP соответственно.

Недостатками указанных программ являются:

  • отсутствие описания алгоритмов работы, что затрудняет их использование в учебных целях;
  • применение для организации удаленного доступа собственных корпоративных серверов, через которые проходит весь передаваемый сетевой трафик и которые расположены за пределами РФ.

Последний недостаток можно исключить, используя отечественные продукты RMS и АССИСТЕНТ.

Авторами разработана программа удаленного доступа к компьютерам локальной сети Remote Administration Software (RAS), предназначенная для сетевых администраторов, а также для использования в качестве рабочего полигона в процессе обучения студентов. В программе реализованы следующие функции управления удаленным компьютером:

  • подключение по заданному IP-адресу;
  • просмотр рабочего стола;
  • запуск исполняемых файлов;
  • редактирование файлов и каталогов;
  • получение полной информации об операционной системе и технических характеристиках пользовательской машины;
  • вызов командной строки;
  • вызов файлового менеджера, который позволяет передавать файлы на удаленный компьютер и скачивать с него файлы;
  • вызов диспетчера задач, управляющего запущенными процессами и приложениями;
  • отправка сообщений, имитирующих стандартные окна сообщений W

В качестве языка программирования использован язык C#, среда разработки – Microsoft Visual Studio 2017. Программа работает на основе технологии «клиент-сервер» с использованием асинхронных сокетов, применение которых позволяет избежать приостановки программы, характерной для синхронных сокетов при проведении обмена данными между сервером и клиентом [2].

Программа имеет собственную систему обеспечения безопасности, устанавливающую определенный набор прав клиента на выполнение запросов к серверу.

Алгоритмы работы сервера

После запуска сервер создает основной сокет на основе класса Socket, в котором указывается семейство адресов, тип и название протокола обмена данными. В программе для обеспечения надежной передачи данных без потерь используется протокол TCP. После создания сокет связывается с IP-адресом и номером порта, после чего переводится в режим прослушивания. 

Далее в бесконечном цикле принимаются поступающие подключения путем вызова метода  BeginAccept, который принимает следующие  параметры: делегат AsyncCallback, указывающий на callback-метод приема, и объект типа IAsyncResult, используемый для передачи сведений о состоянии в callback-метод AcceptCallback. Из AcceptCallback вызывает метод EndAccept, который завершает выполнение асинхронной операции приема подключения и возвращает сокет подключившегося клиента, который будет в дальнейшем использоваться для приема его запросов.

Асинхронные операции выполняются в отдельном потоке, поэтому для предотвращения возможного зацикливания вводится дополнительная переменная типа ManualResetEvent, которая позволяет блокировать дальнейшие действия в методах до тех пор, пока не получит сигнал о завершении выполнения операции приема подключения.   

Для чтения данных из клиентского сокета необходимо создать объект состояния, который передает значения от одного асинхронного вызова к другому. В приведенном ниже примере реализуется такой объект для получения данных от удаленного клиента, содержащий поля для сокета клиента, буфера для получения данных и MemoryStream для создания потока данных, отправленного клиентом. Добавление этих полей в объект состояния позволяет сохранять их значения между вызовами чтения данных из сокета клиента.

Часть метода AcceptCallback после вызова метода EndAccept сначала инициализирует экземпляр класса StateObject, а затем вызывает метод BeginReceive, чтобы начать чтение данных из сокета клиента в асинхронном режиме. BeginReceive вызывает callback-метод чтения ReceiveCallback, который читает последовательность байтов из сокета по частям до тех пор, пока не будет прочитан весь объём переданных данных, и вызывает асинхронную операцию отправки сообщения клиенту.

Алгоритмы работы клиента

При запуске клиентской программы создается сокет, для которого указывается семейство адресов, тип и название протокола обмена данными. Затем создается объект класса IPEndPoint с заданным IP-адресом сервера и номером порта и  вызывается метод BeginConnect, принимающий три аргумента: объект класса IPEndPoint, имя метода завершения операции и инициализированный объект типа StateObject. Callback-метод операции подключения ConnectCallback вызывает метод EndConnect, который завершит операцию. Функции отправки данных на сервер и приема сообщений аналогичны соответствующим функциям сервера.

Взаимодействие сервера и клиента

После того, как соединение установлено, сервер в цикле асинхронно оправляет скриншоты экрана клиенту и асинхронно принимает запросы от клиента. Сервер также получает от клиента запросы на выполнение различных операций (запуск исполняемых файлов, получение системной информации и т.д.), при необходимости организуя диалог с клиентом, и отправляет результаты выполнения этих запросов.

Запрос представляет собой объект типа Message, структура которого представлена ниже.

Данная структура содержит поля для типа сообщения, скриншота в виде последовательности байтов, положения курсора мыши, размера экрана, системной информации, имени файлов, списка активных процессов.

Для передачи в сеть объектов типа Message в программе использована бинарная сериализация, под которой понимается процесс преобразования объекта в поток байтов, обратный процесс называется десериализацией. Механизм сериализации реализован на основе библиотеки System.Runtime.Serialization.Formatters.Binary.

На рис. 1 и рис. 2 приведены интерфейсы клиентского приложения и системы безопасности.

При нажатии правой кнопки мыши отображается контекстное меню, в котором пользователю предлагается выбрать операции над удаленным компьютером: просмотр системной информации, обмен файлами с помощью файлового менеджера, управление процессами, удаленная командная строка и т. д.

 

Рисунок 1. Интерфейс клиентского приложения

 

Рисунок 2. Интерфейс системы безопасности

 

Заключение

Разработанная программа реализует основной набор функций, характерный для всех коммерческих программ удаленного управления компьютерами локальной сети, имеет открытый исходный код и может использоваться в учебном процессе в качестве рабочего полигона. Программа не требует предварительной инсталляции и может запускаться с любых носителей информации.

В таблице 1 приведены сравнительные характеристики разработанной программы и её аналогов.

Таблица 1.

Сравнительные характеристики программ удаленного доступа

Параметр

Radmin

Team

Viewer

Ammyy

Admin

RAS

Просмотр вида удаленного рабочего стола

+

+

+

+

Передача файлов

+

+

+

+

Передача звука

+

+

+

-

Многоклиентный режим

+

+

+

-

Получение системной информации

-

-

-

+

Запуск исполняемых файлов

+

+

+

+

Диспетчер задач

+

+

-

+

Командная строка

-

-

-

+

Шифрование данных

+ (AES)

+

 (AESI)

+

 (AES-256, RSA)

-

Своя система безопасности

+

+

-

+

Фильтрация IP

+

+

-

+

Отправка сообщений

+

+

-

+

 

Список литературы:

  1. Гришаева С.С. Обзор систем удаленного доступа. // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LXXVII междунар. студ. науч.-практ. конф. № 5(76). Науч. рук. Кобылянский В. Г. URL: https://sibac.info/archive/technic/5(76).pdf (дата обращения: 04.06.2019).
  2. Кульгин М. Технологии корпоративных сетей: Энциклопедия. Мн.:Питер, 2000. — 704 с.
  3. Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы. Мн.: Питер, - 672 с.