基于Qt的远程桌面集体监控系统的设计与实现

2022-08-17 08:40代晓峰
通信电源技术 2022年7期
关键词:被控端口命令

代晓峰

(中国医药集团联合工程有限公司,湖北 武汉 430077)

0 引 言

21世纪,计算机技术快速发展,信息化建设不断更新,局域网更新迭代并深入到更多领域中,但存在一个较为严重的问题,即网络管理。虽然很多木马程序或者远程软件可以实现局域网电脑屏幕的监控,但是木马属于病毒,企业或学校等机构的电脑上都存在一些较为机密的文件等,因此利用木马监控不可取。

1 系统分析

1.1 系统开发原理

远程桌面集体监控系统通常由两部分组成,一部分是主控端程序,另一部分是被控端程序。主控端程序安装于客户的电脑中,被控端程序安装于被控电脑中。被控端需要接收主控端的命令,并定期将信息发送到主控端的桌面中,使用者就可以通过自己的电脑来监控被控端的电脑。

1.2 系统运行概述

基于Qt的远程桌面集体监控系统在运行时,首先需要启动查看监控的计算机,并启动需要的用户数据报协议(User Datagram Protocol,UDP)端口,继而输入对应的命令进行读取。在该计算机成功链接到所需要监控的计算机端时,将会采用屏幕录制投影的方式不断传输计算机桌面的数据,进而可以让管理者通过用于监控的计算机进行投影查看[1]。

1.3 系统总体结构

该系统设计方案是使用Qt搭建客户机/服务器(Client/Server,C/S)框架,主要运用 Qt中的QUdpSocket类来实现UDP协议的编程,用Qt中的QTcpSocket类和QTcpServer类来实现传输控制协议(Transmission Control Protocol,TCP)的编程,运行中利用监视器将命令发送到被监视器配置的UDP端口[2]。该命令是控制命令,如果Monitor听到此UDP命令,它将打开TCP端口将连接请求发送出去,从而建立起独特的远程服务系统。监控终端会在远程控制功能的基础上发送远程控制指令,控制被监控终端的各应用程序。

2 系统功能模块设计

2.1 监控端的主要功能模块

消息输入、命令处理结果显示模块以及通信模块包含在监控终端。把用户界面所发生的事件实时传输到通信模块,这是消息输入模块负责的内容,然后通信模块再把实时的指令内容传送到被监控终端,由被监控终端执行操作后再将返回的成功或失败信息交给监控终端命令显示模块,根据信息的具体格式显示结果。

2.2 被监控端的主要功能模块

通信模块和命令处理模块包含在被监控端内。由于被监控端一直处于侦听的状态,因此当正常合法的连接请求被接收到时,被监控端就会打开UDP端口,然后及时打开命令接收线程。在顺利建立连接后,由被监控端发来的实时命令信息会由被监控端的通信模块进行接收,再由被监控端的命令处理模块进行处理,最后实时把结果发送回监控终端[3]。

3 程序流程及分析

3.1 被监控端启动流程

把客户端的程序安装到被监控端后,当程序运行时,UDP端口会被系统打开,若遭到相关防火程序和杀毒程序的制止,系统就会再去打开配置另外的UDP端口。如果都没能成功打开,就会导致启动的失败。相反,若成功打开相关端口,那么被打开的UDP会被系统按字传输,进一步打开命令接收线程,获得命令,同时处理一些得到的命令。此后,在启动项中把程序复制过去,并且把名字替换成Explorer.jar。

3.2 监控端启动流程

在将服务程序成功安装到监控终端后,首先被监控终端控制并启动运行的是窗口类,显示初始化图形,等待操作者输入IP地址。任意一个TCP端口会被监控终端开启并运行,再将初始化命令(格式为ordername:port)发送到使用者所输入IP地址配置的UDP端口中,其中ordername是命令名字,port是监控终端所要打开的TCP端口号[4]。监控终端会监听已经打开并运行的TCP端口,若超过连接时间,则会导致连接不成功。

3.3 命令接收和处理流程

当运行被监控终端的UDP端口后,系统开始监听被监控终端的UDP接口,若有相关命令就会被迅速读取,同时对命令的有效性进行判断,命令的格式为ordername: port。若是无效命令,系统就会重新回到端口继续读取命令;若是有效命令,则相对应的命令处理板块就会被选调去处理命令,将处理结束的命令结果发送到监控终端。

3.4 图形监视线程启动流程

监视方将打开任何TCP端口,将UDP命令通过TCP端口发送到被监视方的UDP端口。如果在规定的时间内响应,则读取需要的图像流并显示,没有在规定的时间内响应则提示“连接命令执行失败”。

3.5 远程控制流程

当被监视方收到监视方的UDP命令(控制:TCP端口)时,被监视方将获得监视方开放的TCP的端口号[5]。被监视方使用这个端口号连接到监视器侧的TCP端口,从TCP端口读取事件对象。如果是一个键盘事件,则从键盘重复该事件;如果是一个鼠标事件,则从鼠标重复该事件。如果连接断开,则控件终止;如果没有,则返回阅读事件。

4 系统功能实现

4.1 系统工作流程设计

系统使用Qt搭建客户机/服务器的总体结构,其分为服务器端和客户端程序。为确保从操作员终端到被操作终端的远程控制,必须在客户端和客户端之建立通信Socket(套接字)。进入监视状态,由客户机套接字发送连接请求,一旦服务器接收到请求,它就会设置另一条套接字来用于通信。如果一个客户端通过发送连接请求,在另一端进行建立,那么客户端和服务器之间的连接将变得更加灵活。如果客户机定期向服务器发送命令,服务器将接收屏幕图像,并进行压缩后发送给客户端。为了控制服务器,客户机接收信息并在监视窗口中显示服务器发送的图像。客户机响应键盘和鼠标事件并记录这些事件,同时在消息命令中存储各种信息[6]。客户端通过传输控制协议/网际协议(Transmission Control Protocol / Internet Protocol,TCP/IP)将事件信息发送给服务器端,转换为与屏幕对应的键盘、鼠标事件,从而实现远程监控。当客户端请求控制服务器上的硬盘数据文件时,直接响应文件操作请求。系统的工作流程如图1所示。

图1 系统工作流程

4.2 系统的实现

通过服务器IP连接实现远程桌面监控。本文通过Qt平台建立通信,支持多种协议,包括面向连接的流套接字和无连接的数据报套接字。在实施监控时,被控端需要将其桌面图像相关数据发送到主控制端,而图像数据往往较大。在实现远程桌面监控时,需要向被控端发送消息,告知被控端要执行何种操作,而这种消息对精度有更高的要求。综合考虑,选择了面向连接的模式,也就是流式套接字来进行网络通信,可以提供有序、稳定的双向数据通信。客户端程序界面如图2所示。

图2 客户端程序界面

主窗体的部分中,包括显示主窗体界面和进行窗口信息的处理,主要是与主窗体建立刷新、调整大小、时间显示和获取端口等有关的函数,下面列出窗口建立部分函数:

一旦服务器接收到客户机的计算机连接,就会创建一个Socket对象。当收到客户请求,成功创建客户端通信接口后便可以进行TCP/IP应用程序的相互通信,通信流程如图3所示。

图3 网络通信的流程

连接后,必须处理传输数据的内容和格式,如安装初始化服务器的屏幕网程序。发送命令的方法有两种,一种是更新桌面上显示的信息,另一种是提供不同的命令服务器。客户端有关网络的代码为:

4.3 屏幕监控的实现

控件终端用户单击屏幕监控,弹出监控界面。在控制端监控窗口中,实时显示被控端的桌面屏幕,反映桌面屏幕的变化,可以通过鼠标键盘在监控窗口中操作被控端的桌面屏幕,如同在远端计算机前操作一样[7]。流程如图4所示,屏幕监控代码中的关键函数如下:

图4 屏幕监控流程

根据服务器端捕获桌面屏幕的步骤,获取到的屏幕桌面需要在进行压缩后才能进行传输,客户端在接收到这些位图信息后,还要进行相应的解码,才能显示出被控制端的桌面屏幕。获取的屏幕信息代码为:

客户接收到图像数据,首先将其解压缩为BMP文件格式,然后再将其变为DIB格式。此外,可以直接显示DIB,也可以把DIB转换为DDB后显示DDB。

为了在客户端界面中显示屏幕窗口,屏幕需要缩放。由于位图记录了每个像素的颜色信息,可以说像素点的数量决定了图像的大小。如果要减少位图的显示,就必须丢失一些像素信息,容易导致失真。然而如果丢失的像素得到合理的控制,失真可以最小化。另外,显示屏屏幕左上角的坐标为(0,0),屏幕右下角的坐标为(65535,65535)。采用差分比较法进行比较,首先将实际屏幕大小除以客户窗口的大小,然后乘以当前鼠标坐标,得到鼠标在被控制计算机上的相应坐标。被控端的更新流程如图5所示。

图5 被控制端屏幕更新流程

如果终端控件直接控制终端,则以不同值的形式将与鼠标指针相关联的不同事件传递给控制点,然后将相应的鼠标发送到控制端。此事件链接到可控端的坐标,通过鼠标事件函数执行。控制端用于主入口该图显示了一个窗口,其中信息(key information)等根据主网格端将代码的值传递给控制端,然后使用keybd函数。如果客户端使用远程屏幕图像,系统将通过取消标记捕获当前图像。然后将鼠标的位置坐标和按键经过网络发送给服务器,服务器会模拟鼠标操作。

客户端不仅可以直接对被控制端的屏幕进行操作,还可以对服务器用户硬盘数据文件进行查看,下载或者删除用户的所有文件。服务器端收到来自客户端的操作指令后,对文件进行相应的处理,然后返回发送给客户端。

5 结 论

在基于Qt的远程桌面集体监控系统设计过程中,远程监控系统使用C/S结构,由服务器与客户端构成。服务器安装在被监控机器上,通过数据采集模块获取被监控机器上屏幕的点阵数据,进行传输。基于Qt的远程桌面集体监控系统在功能内容上实现了对所需监控计算机的监控,可以帮助企业进行职工管理,同时可以帮助教师进行学生学习情况的监督。

猜你喜欢
被控端口命令
华为交换机端口Hybrid 模式的应用
管理Windows10的PowerShell命令行使用记录
一种有源二端口网络参数计算方法
一种端口故障的解决方案
港警在“修例风波”中拘捕近万人
疫情就是命令 防控就是责任
隔离型三端口变换器的H∞鲁棒控制
解析Windows10的内部命令
宝箱4