远程屏幕监视



开发环境和功能分析
远程屏幕监视作为我自主编写的远程控制软件的一个模块,我将其独立分割出来发布测试,软件要求能实现分屏同时监视远程主机。大体的开发环境是:
操作系统:Windows XP SP1
开发所用计算机配置:512M内存+P42.4G CPU+800MHZ系统总线
环境:Borland C++ Builder 6.0+SUIStyle控件
至于功能需求分析,我们一点一点看,这或许是专业开发人员和普通自学程序员之间最大的差距,一起来学习、探讨一下吧!
1.为实现数据的网络传输,软件采用C/S(客户端/服务器)数据传输模式。从遵循计算机道德的角度出发,在该设计过程中,不打算编写具有木马特征的独立的服务端,而将软件集客户端(Client)和服务端(Server)于一体。软件基本定位是:远程辅助类工具软件。

Socket:咳……其实你可以花5分钟时间将客户端(Client)和服务端(Server)分离,并加入自启动的功能,如果够狠的话,再加入关联文件的功能,这不是一个截屏木马?

2.服务端(Server)实现:采用C++ Builder的Socket Server控件来实现服务端的数据传输功能。主要功能:监听本地计算机的指定端口,截获本机屏幕信息,拷贝屏幕区域到自定义的位图变量。

Socket:为了达到提高传输效率,服务端根据在连接过程中所获得的转换参数将位图转换成JPGE格式后存入缓存区,在与远程客户端连接的前提下,将缓存区数据流发送至客户端(Client)。
3.客户端(Client)实现:利用Winsock API函数来定义用于本软件网络数据传输的Sockets。功能实现:向远程主机服务端(Server)提出连接申请,并在此过程中将JPGE转换参数发送给服务端(Server)。在获得连接的前提下,不断接受远程服务端(Server)所发送至的包含远程主机屏幕信息的JPGE的数据流,并实时将所接受的图像在本软件的客户区域(Client Region)上重绘,从而实现在本地计算机实时监视远程计算机屏幕的目的。

详细功能设计
上面大体分析了功能和需要,下一步一起来看看如何进行详细的功能设计。
1.客户端(Client)
(1)客户端与服务端之间网络畅通状况的检测。编写Ping模块,此模块发送一个ICMP echo request(ICMP协议回显请求)至目标主机,如果获得回显,则向目标主机发送连接请求。
(2)客户端(Client)与服务端(Server)之间的数据传输。利用Winsock API函数来定义用于本软件数据传输的Sockets。具体过程为:连接远程主机->返回有效SOCKET(使用Connect_Server())->向SOCKET写字符串(使用Write_Socket())->向远程主机的指定端口发送字符串提供转换参数(使用SendMsg())->动态分配端口,并与SOCKET绑定->返回该SOCKET(使用BindSocket())->向远程主机的指定端口发送请求(使用SendStream())->从远程主机的指定端口接收数据流(使用RecvStream())。
(3)图像重绘:使用Image控件将从远程主机发送到的JPGE图像显示。

2.服务端(Server)
(1)服务端(Server&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值