易语言远程控制技术教程.docx
- 文档编号:13790939
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:52
- 大小:1.73MB
易语言远程控制技术教程.docx
《易语言远程控制技术教程.docx》由会员分享,可在线阅读,更多相关《易语言远程控制技术教程.docx(52页珍藏版)》请在冰点文库上搜索。
易语言远程控制技术教程
易语言远程控制技术教程(总53页)
《易语言远程控制技术教程》
(2007年10月第一版)
前言
利用远程控制技术对企业管理,可加快我国经济建设的需要。
易语言以其易学易用功能完善的功能,从而为企业管理中的远程控制提供了基础的编程条件。
本教程从一个基本面说明了远程控制技术的编程环节,可能大家比较感兴趣的是双向通讯技术、自动上线技术、网络通讯协议、内存压缩图片技术、TELNET超级终端等技术,本教程均提供了例程。
高级的远程控制技术应用请大家继续学习WINSOCK,API应用,端口映射技术等。
对于破坏国家正常经济秩序的黑客行为,本书是严厉批评的。
由于黑客技术的发展,远程控制被少数人利用,对国民生产产生了不良的后果。
本教程不得不接触到远程控制这个方面,但仅以讨论的形式为大家介绍,并不进行细致的介绍,以让大家对此类黑客技术有所提防。
由于本教程中,某程序可能即包含了服务器组件,也包含了客户组件,因此如果用外部流行的“服务端/客户端”提法很容易混淆,因此本书将主动进行控制管理的一方称为:
“主控方”,编写的程序为:
“主控端”;将被动接受控制的一方称为:
“受控方”,编写的程序为:
“受控端”。
本教材个人可打印一份细看,各兄弟网站可自由转载而不用事先打招呼。
版权所有,不得批量印刷即可。
作者还要说的话:
本教程用了我两个月的时间写完,前期收集例程及写例程用了我更多的时间,特别辛苦。
远程控制是把双刃剑,可以好好利用,也可能造成不好的影响。
还好作者回头再看本教材后,感觉对于企业内部管理应用还是非常不错的,可以提高中国中小企业的管理水平,但不可能制作成类似于灰鸽子那样的破坏功能,本书没有提供这样的技术,也请大家自重,不要写破坏性的程序。
本书使用到大量的例程,足有200MB,还好,书中我基本都提供了下载链接,如果书中没有列出的例程,请大家跟贴指出来,我会补上。
我觉得最好的学习方法是先将这些例程收集全了,再一个一个打开看看,基本上就能明白了。
本书引用例程
我收集了一些例程,较多,足有100MB以上,因此只能将例程的地址提供给大家,有需要时大家再自己搜索下载。
1.易语言自带例程:
数据报例程,服务器/客户组件例程,远程服务例程等。
2.远程桌面
易语言论坛搜索,关键字:
远程桌面,作者:
王军
&ID=136950&replyID=&skin
&ID=110918&replyID=&skin
3.诺亚远程控制系统
论坛搜索关键字:
诺亚,诺亚远程
&ID=134465&replyID=&skin
4.让服务器控件真正分辨多客户,不用客户发送标识
&ID=38916&replyID=&skin
5.使用GDI+在内存转换图像格式-凌晨孤星
&ID=127301&replyID=&skin
6.冰河幻灵-鼠标录制程序
有几个例程,可搜索易语言论坛关键字:
鼠标录制,近在眼前
&ID=110632&replyID=&skin
第一课.远程控制原理
1.企业管理的需要
利用易语言的远程控制技术,可以对企业中的电脑进行非常方便的管理。
典型的类似软件如:
QQ的远程协助功能,微软的NETMEETING,PCANYWHERE,还有一些网吧等单位利用远程管理,自动更新客户机的桌面游戏链接,游戏文件大文件的自动更新。
有的企业可以远程管理员工的桌面,及时发布企业重要信息,大文件的传输,远程维修客户电脑等。
2.介绍相关管理工具
在企业管理中,实际上已有一些软件了,如:
腾讯的QQ,还有CC,以及一些有名的远程管理软件PCANYWHERE;黑客使用远程控制较有名的是:
冰河、灰鸽子,任我行等。
企业内部使用的还有一些如:
局域网寻呼机,内部聊天工具,易鸽子,聊天室等。
PCANYWHERE
冰河
灰鸽子
局域网寻呼机
易鸽子
3.组件简介
易语言中数据报组件采用了UDP原理的协议。
还有采用简单TCP/IP协议的组件,如:
服务器/客户组件。
保密通讯支持库将TCP/IP协议及安全套接字层/RSA加密技术,两用户之间通讯较好及稳定。
而远程服务支持库采用了TCP/IP协议,并且封装了多线程池,支持多用户、多任务、多线程、大文件的数据传输。
第二课.组件选择
下面对易语言中几种远程管理的组件对比介绍
1.数据报
数据报是一种不可靠、小数据量的网络数据交互方式。
如果传递的数据量过大,有可能会失败,最好不要超过127字节。
如需要大数据量或者可靠数据传送方式,请使用基于连接的其它网络组件。
数据报组件转输的协议是UDP,也就是说,他的发送量非常小,介绍中说最好不要超过127字节,但在网络稳定的情况下,可以发送200字节不成问题。
同时它也是一种不需要握手过程的通讯协议,即:
它可以广播发送,这个优势可以利用到局域网中向所有用户发送消息,广播发送的速度也非常快,无需等待。
也可以利用这个组件的广播机制,进行快速的连接服务端。
即程序中同时使用数据报和“服务器/客户”组件,这样通过数据报通知已下线的客户连接服务器。
同时,如果设计得好的话,可以让这个组件自己推举服务器,即查到IP地址中哪一台电脑的IP值最大,找到最大号的,这台就作为服务器使用,或启动“服务器/客户”组件,改由“服务器/客户”组件进行服务。
2.服务器/客户组件
服务器组件是基于连接的网络数据交换的服务方组件,用作在指定端口监视来自客户方的数据。
需要采用一台电脑作为服务器使用,其他电脑作为客户机,使用上较为方便,一次最大可发送4380个字节,超过这个字节数,必须使用分包的办法,在接收的用户处再还原包。
由于可扩展性非常差,即不支持多用户,多线程,大文件传输入,在用户数量多,数据量大的情况下会产生紊乱,不建议大家用于商业程序中。
3.网络通讯支持库
是服务器/客户组件的升级版。
包括了监听等功能。
同上,不建议大家用于商业程序中。
4.保密通讯支持库
本支持库实现在网络上保密通讯的目的。
由于一些机密数据在网上传输过程中可能会被一些别有用心的人截获破坏,以致对数据的拥有者造成经济上或者是物质上的损失,这样就要求数据在网络上传输的过程中不会被他人利用破坏。
本支持库的设计和实现就是为了完成在网络上保密通讯的目的,注意本支持库仅仅是完成对数据在传输的过程中的保护。
理论上,在用户的私钥不公开的情况下,该通讯方式是绝对安全的,即使算法的设计者也不能做出任何破坏。
本支持库使用也非常简单,在客户端和服务程序连接前,设置好相应密钥,在实际的使用过程中,用户不必关心加密解密的过程,正常发送和接收数据就可以了。
为了完全理解该支持库,建议使用者查阅有关“安全套接字层(SSL)”的原理,本支持库就是对该原理的实现。
这是一个较好的用于商业的组件,每次最大发送:
20480个字节,再大的文件需要自定义分包协议传输,保密性能好。
但存在的问题是,多用户机制,及多线程不支持。
因此只能作为点对点传输的工具编程,即当用户需要传送时,手工建立两个用户的连接,再进行传输,建议一些保密要求极为严格的商业程序使用本支持库。
如军方、政府。
5.远程服务支持库
该支持库提供对服务器端程序和客户端程序的支持。
客户端发出请求,服务器端接受到客户端的请求后,就会执行事先设置好的触发函数,在触发函数的方法中就可以分析用户端的请求,然后计算出结果发回给相应的客户端。
该支持库的服务器模型支持多用户多任务,内部采用多个线程池协调同步共同完成任务数据的发送接收。
本支持库一般可以使用在网络服务中间件,远程调用服务器,分布式计算等等程序的开发过程中。
这个支持库是本书重点推荐的一个支持库。
支持多用户,多任务,多线程,大文件传送。
支持库内部已将多用户计划任务作为线程池保护起来,直接传输完成为止。
应用上极为广泛,如:
远程监视控制,远程数据服务等。
这是个多线程的,使用了4个线程池。
建议你使用同步连接模式,这样,客户的每一次请求处理完成后才顺序执行下一个请求,会有一个顺序性。
如果你使用异步传输模式快速的发向服务器实际上每个发送来的信息都作为一个请求放到了请求列队中。
异步连接模式:
服务端不会按照发送来的顺序返回信息,造成不便。
接受-处理-返回
就这样一个流程,每个发送的请求都单独处理。
你发的又不是数据流,如果你不停的发,服务器就会不停的接收直到请求文本发送结束服务器才处理这个请求。
如果你快速的发很多数据造成服务器来不及时处理。
缓存大量的请求信息会造成问题。
但是呢,线程数量是能自己控制的,你改成99999,就看你的机器处理能力了。
如果你一定要大量的发送请求信息,处理过程很复杂服务器不能及时处理,就会让服务器跨掉。
实际上这样的话,服务器的性能达到极限,你还要考虑带宽是否充足哦。
同步连接-处理客户端主动的请求信息,主动的查询。
在有明确查询目的时候使用。
异步连接-被动等待服务器的信息并做出反应,被动的接收然后响应服务器。
在不确定什么时间查询,需要服务器主动联系客户端的时候使用。
“服务器.发送文本”第1个参数问题:
如果你给的是文本型,就默认是请求代码
如果你给的整数型,就默认是客户句柄
而“到数值”方法返回的是双精度小数型,因此必须用整数型,可以用“取整()”命令,或整数型的变量。
用以下代码试试:
服务器.发送文本(取整(到数值(列表框1.取项目文本(列表框1.现行选中项)))
千万不能用“到数值()”这样的单一命令放在第一个参数中,因为“到数值()”返回的是双精度小数型。
因此还要用“到整数(到数值(……))”这样的命令方式。
6.网络传送支持库
本支持库实现对多种协议断点续传下载与FTP上传的支持,并提供了丰富的设置方式。
当前版本支持HTTP,FTP,MMS多线程下载及断点续传,以及对RTSP协议的单线程下载及断点续传。
用户可以根据各自的主机及网络情况进行设置,本支持库可以运行在linux下.详细情况参见例程,注意:
当前版本使用了映射文件模式,并且是一次全部映射的方法。
所以最大传送不超过一次映射文件的长度。
这个支持库主要是应用于FTP,需要FTP服务器。
易语言中有现成的例程,在远程控制中,用于客户端的自动上线功能。
7.网络通讯支持库二
本支持库实现了对原始套接字和ARP协议的支持。
通过原始套接字,我们可以更加自如地控制多种协议,而且能够对网络底层的传输机制进行控制;ARP(地址解析协议),就是将网络层(IP层,也就是相当于ISOOSI的第三层)地址解析为数据连接层(MAC层,也就是相当于ISOOSI的第二层)的MAC地址。
这个支持库使用较为自由,但必须要熟悉相关的网络通讯协议,如果你对其中的协议都了解了,使用这个支持库就简单了。
8.表1:
网络通讯类支持库组件功能对比表
表1:
网络通讯类支持库组件功能对比表
使用组件
优点
缺点
性能比较
系统核心支持库:
服务器/客户
简单易用
传送量小
最大发送:
4380个字节
是否稳定:
一般
自动分包:
否,需要自定协议
最大连接客户数:
未统计
外网可用:
未测试
系统核心支持库:
数据报
极易使用
传送量小,
不稳定,
发送出去不检查
最大发送:
最好不要超过127个字节。
经试网络稳定时可发送200个汉字
是否稳定:
不稳定
自动分包:
否,需要自定协议
最大连接客户数:
未统计
外网可用:
未测试
网络通讯支持库:
网络服务器/网络客户端
较易使用,可监听
传送量小
最大发送:
20480个字节
是否稳定:
稳定
自动分包:
否,需要自定协议
最大连接客户数:
未统计
外网可用:
未测试
保密通讯支持库:
保密服务器/保密客户端
保密,小范围保密转送文件,RSA加解密方法
较繁琐,
多客户可能出错
最大发送:
20480个字节
是否稳定:
很稳定
自动分包:
否,需要自定协议
最大连接客户数:
未统计
外网可用:
未测试
远程服务支持库:
远程服务/请求客户端
支持多用户多任务,采用多个线程池协调同步
一个线程池占用四个线程,开多了也有问题
最大发送:
不限字节
是否稳定:
极稳定
自动分包:
自动分包
最大连接客户数:
未统计
外网可用:
未测试
网络通讯支持库二
较自由
需了解现有通讯协议
与协议有关
网络传送支持库
FTP,可断点续转
需要开FTP
与FTP协议有关
网络套接字通信支持库
非官方
与网络套接字协议有关
9.网络传送大文件丢包的原因
不外乎以下几个原因:
1.单用户分包问题:
小量字节发送以上组件完全没有问题,但如果通讯内容超过了最大发送的范围,就只能通过分包传送解决。
正确的方法是:
分包时就要制定一个转送的协议,简单地就是在每个包前面加个标记和序号,有的还加上MD5码以检查是否传送完整,整个多少包的信息等,然后在服务端组织收包的工作。
有的用户传送时只与一个用户通讯,并通过延时解决交叉传送互相影响的问题,不太科学。
延时相对就时间长,时间长不一定不好,就看你能不能有信心等下去了。
2.多用户分包问题:
第二个原因是用户多,即使分包了,也不一定能正常转送完整,还要回过头来进行检查是否丢包,如果有丢包就要回头重新传,最后合并为一个文件。
并发的用户乱传包,你受得了吗?
需要写程序实现多用户多线程序操作,工作量不小。
最好组件能自己建立线程池,自己组织收包的工作。
3.支持库有BUG,如:
有人说发一个包,接收方却收到两个包。
还有支持库运行时间长了,会有各种问题,开一天,开一个星期,开一个月长时间的测试看看。
总结:
实际上,易语言核心支持库中的三个组件只能学习用,或发一些简单的指令什么的可完全胜任,简单的制作个QQ登录什么的,到此为止吧。
网络通讯支持库也只是个没有组件界面的简单升级版而已,浪费编程人员很多时间。
如果要实战,那么单用户大文件传送请直接考虑保密通讯支持库,多用户大文件传送请直接考虑远程服务支持库。
不要多想了,立即行动吧。
第三课.组件构成
1.用例图1:
通讯类(易鸽子,局域网寻呼机,方舟千里眼)
2.用例图2:
聊天室类
3.用例图3:
远程控制
4.用例图4:
远程数据服务(数据库)
5.采用单对组件
基本上编程人员在确定自己选用哪一种组件后,就固定在程序中只使用这种组件,编程上就较为简单。
但一些受单一组件限制的功能就无法解决,复杂一些的功能可能也难以应用,如:
服务端必须先上线再让客户机上线,服务端上线后不允许掉线,服务端掉线后,客户端必须重启等。
这样在单一组件的模式下,总是很难完成一些“自动化”的任务。
如果用时钟总是去偿试连接,可能造成网络资源的占用。
有时就会产生反向连接的状态,即客户端使用的是服务器组件,而服务端使用的是客户组件,这在一些黑客软件中采用比较多,但
6.采用多种组件
在这里是将组件的类型扩大化了,实际上,采用了这样一种策略,即自动上线即采用了数据报,也采用了服务端/客户反向连接,以及远程服务反向连接,和FTP网络地址的方式。
最终的通讯还是使用远程服务支持库来实现。
即自动连接是由不同组件完成的,连接后的操作权交由远程服务来完成。
特别注意的是,这里用数据报进行了广播形式的激活,这种方法速度非常快,在局域网内非常有效,而用英特网的IP地址的方法将服务端的IP地址告诉客户机的方法非常适合英特网用户使用。
7.组件搭配
如果限定了在只在局域网内进行远程服务,那么采用:
数据报激活+服务器/客户反向激活+远程服务支持库提供服务比较好。
如果是在英特网的广域网上使用,可以采用FTP,及网页上存放服务端IP地址的方式,或远程序服务支持库反向激活的方式进行激活,激活后的权限交由远程程序支持库操作比较好。
8.表2:
有易语言源码的远程控制软件对比
功能列表
非雪之恋
远程控制
方舟
千里眼
诺亚
远程控制
蝶蝶不休
远程控制
好人好
远程协助
yok9金立
远程控制
云霄
远程精灵
连接方式
一种
三种
一种
一种
一种
一种
一种
连接密码
无
无
有
无
无
无
有
使用组件
服务器/客户(反向)
服务器/客户/数据报
服务器/客户(反向)
服务器/客户
服务器/客户
远程服务
并行同步
远程服务
并行异步
受控端隐藏进程
模块中引用DLL
不隐藏
模块中引用DLL
直接调用DLL
受控端开机启动
注册表方式
注册表方式
主控端生成受控端
有
有
自动上线
数据报
有
手工设置
有
有
远程卸载
有
自杀程序
有
指令集/指令发送
有
有,带参数
有,较多
有
文字聊天
类QQ
有
有
有
捕获屏幕/连续监控
九画面
小屏幕
有
连续/分包
有
有
监视墙
即时视频传输
有
即时语音聊天
TELNET超级终端
有
查看受控端系统信息
有
查看受控端文件系统
有
有
查看受控端注册表
有
查看受控端剪辑板
有
查看受控端进程
有
有
有
共享/上传下载文件
有
上传大文件
可以
下载大文件
可以
记录键盘
有
可以
记录鼠标操作
检查插入光盘/通知
检查插入U盘/通知
远程录像
远程控制鼠标动作
指令方式
有
发动肉鸡攻击
自动免杀
自动捆绑
FTP操作
界面
简单界面
QQ界面
界面漂亮
蝴蝶
界面太差
皮肤漂亮
还行
评语
入门级
值得学习
进阶级
部分学习
不容易
值得学习
功能较全
9.实用例程简介
非雪之恋远程控制
这是一个极简单的远程序控制系统,采用了常见的“服务器/客户”反向连接的方式。
一些常用的命令列在界面中,操作简单方便。
方舟千里眼
采用了两对“服务器/客户”组件互相连接,以及用数据报发布广播自动上线功能。
特点是采用“服务器/客户”实现了远程监控,及九画面监控墙的功能。
有类似于QQ聊天的窗口。
自动上线找用户,非常方便。
诺亚远程控制
类似于灰鸽子的界面,采用了常见的“服务器/客户”反向连接的方式。
实现了简单指令集的功能。
较为简单。
蝶蝶不休远程控制
采用了常见的“服务器/客户”正向连接的方式。
可学习的地方是对进程及键盘鼠标的监视功能。
好人好远程协助
采用了常见的“服务器/客户”正向连接的方式。
是参加易语言大奖赛未得奖的作品,主要是写得太乱了。
对远程注册表、进程管理、鼠标控制都有较好的支持。
yok9金立远程控制
采用远程服务支持库,并行同步发送数据。
主控端可生成受控端EXE文件。
最重要的是对TELNET超级终端的支持。
以及远程进程方面可以学习。
还带一个漂亮的皮肤。
云霄远程精灵
采用远程服务支持库,并行异步发送数据。
功能较为全面,如:
聊天工具也有,也可以查看受控端剪辑板,生成受控端EXE文件,远程注册表,进程管理、鼠标控制等。
第四课.通讯协议
1.指令简介
按形式分,可分为:
简单指令、复合指令、复杂指令
按内容分,可分为以下:
1)文本指令/多文本指令
2)指令文本+字节集
3)指令文本+字节集+指令文本
4)指令文本+字节集+间隔符号+字节集+间隔符号
2.指令应用
1)简单指令:
文本指令/多文本指令
发送一些简单的指令,如让客户机电脑重启,开启光驱等。
如果带有参数,后面可跟着其他指令文本,中间用分隔符分隔。
主要用于单个指令。
例如:
打开光驱
也可用于组合指令,或带有参数的。
例如:
“鼠标移动|30|20”
例程:
参见“诺亚远程”中的说明文档(诺亚指令集)。
2)指令文本+字节集
主要用于传输入文件,如数据库,配置文件,图片文件等。
前面的指令文本可用复合指令,可包含文件名的信息等。
大文件传输入时,在用远程服务支持库时可以直接采用这种方式。
在分包的情况下,也可以这样传送,但在指令文本处标记当前是哪一个包号,甚至将单个字节集的MD5码也放在指令文本中发送,以进行验证数据完整性。
也可以将整个字节集的MD5码进行数据完整性验证。
主要用于大文件整包发送。
例如:
“保存文件|”+文件名+“|”+文件字节集
或分包发送时代用。
例如:
“保存文件|”+文件名+“|包1|共10|”+MD5码+“|”+文件字节集
3)指令文本+字节集+指令文本
这里主要用于对传送字节有限制时,要将传送的文件的前后加上标记,这样用户端接收到之后,就可以还原文件了。
必要时,需要将整个字节集的MD5码放在指令文本中,以进行验证数据的完整性。
主要用于大文件分包发送时的指令。
例如:
“图片开始”+图片字节集+“图片结束”
“文件开始”+文件字节集+“文件结束”
例程:
指令文本+字节集+指令文本:
请参见诺亚远程中的传送接收图片部分。
4)指令文本+字节集+间隔符号+字节集+间隔符号
这里主要是多文件传送,如一个数据库还带有索引及备注库,这样最好是一次性地传送过去。
或其他特别的场合用上。
第五课.用户连接
1.连接方式
正向连接:
就是管理员使用的组件是服务器组件,用户端使用的是客户组件。
这时,客户组件需要知道服务器组件的IP地址,同时需要服务器组件先上线,以取得握手。
反向连接:
这是黑客一般使用的,即用户端使用的是服务器组件,而管理员使用的是客户组件,这样管理员可以非常方便地与用户连接。
一般来说,原理就是这样,采用何种连接方式都是可以的,主要在于编程人员怎样克服困难了。
如正向连接时必须服务器先上线,这个可以克服的,服务器后上线时,可以将IP地址放在网上或某台电脑上,用户可以定时去取,以自动激活上线。
或用数据报广播让客户端上线。
如反向连接时,不知被控端的IP地址,主控端需要扫描网络,以知道哪台被控端电脑上线了,这时可以通过被控端用户发送EMIAL或FTP消息通知主控端管理员有人上线了。
如反向连接时,不能直接广播,可以用循环命令,依次向受控端尝试连接。
2.登录口令
为安全起见,有时通讯组件的端口可能会被检查人员查到,或正好遇到某个端口号与其他软件重复,因此在握手连接时,需要加上用户名和口令,以示区别。
3.身份验证,MAC和硬盘码
每台电脑的IP地址及用户名都是可以换的,而且换起来非常方便。
为安全管理,IP地址应该绑定一些硬件才行,这样网卡的MAC地址是比较固定的,如果可能,也可以与硬盘码、硬盘序列号、CPU序列号、BOIS序列号绑字在一起。
同时要注意,如果绑定时取不到硬件号,一定要做好容错处理,可以默认一个固定的序列号。
第六课.远程监视
1.“服务器/客户”组件通讯模式
“服务器/客户”组件只能用于发送小于4380字节的通讯,因此对于超过4380字节的大图片,操作上就需要分包传输了。
例程参见:
诺亚远程中的图片传输部分。
2.内存压缩图片
使用“快
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 远程 控制 技术 教程