ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:213.81KB ,
资源ID:22578395      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22578395.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于CS模式的局域网监控系统客户端的设计与实现Word文件下载.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于CS模式的局域网监控系统客户端的设计与实现Word文件下载.docx

1、3 .1 系统流程图 33 .2 界面设计 43 .3 功能设计 64 实验结果 94 .1 发送信息 94 .2 屏幕抓取 9 遇到的问题及解决方法 9 软件的优点和缺点 10参考文献 11引 言(1) 背景当今社会,让学生如何正确使用网络正困扰着越来越多的老师,将学校网络接入互联网的意义已无需争辩,但有时不免产生许多令人头疼的问题:许多学生在上机课时泡在网上,或通过MSN、QQ和朋友聊天,或查看与学习不相关的网站,学习无效率可言;在公司里员工将公司当作网吧,工作也没效率,甚至于泄露公司的机密资料。为了避免这些状况发生,也为了更有效地监控局域网的工作状况,满足计算机局域网用户的各种需求,同时

2、因为De l phi 具有强大的网络功能,所以我们选择了基于De lphi的局域网监控软件的课题。(2) 远程控制的发展史及前景起初,使用远程控制软件,是为了让PC用户在离开办公室时能访问其台式PC硬盘中的信息,甚至可以通过其台式PC访问企业网络资源。今天,许多企业和增值分销商正在把远程控制能力作为有效的技术支持工具。很多网络管理员都采用这类软件对局域网进行管理,或者在家中更新自己网站的内容。这类软件对于出差在外的商务人员用处非常大,因为他们可以随时提取自己家里计算机中的数据和资料。远程控制软件在计算机远程教学和培训中也发挥了不少的作用,使身处异地的学生能够与老师进行实时交流,犹如坐在同一教室

3、一般。近年来,黑客技术不断成熟起来,对网络安全造成了极大的威胁。黑客的主要攻击手段之一,就是使用远程控制技术,渗透到对方的主机系统里,从而实现远程操作目标主机。其破坏力之大,是绝不容忽视的。随着网络技术的进一步发展,网络速度越来越快,家庭办公将成为未来的时尚,远程技术支持将逐渐占据技术支持的主流。远程教学和培训也将快速发展,企业规模将迅速扩大。所有这些发展都为远程控制软件提供了一个广阔的天地。(3) 已有的成果和先进技术如灰鸽子远程控制软件,对被控机器进行的操作包括:文件管理、获取系统信息、剪贴板查看、进程管理、窗口管理、键盘记录、服务管理、共享管理,提供MS-Dos s hel l,提供代理

4、服务, 注册表编辑,启动t e l net服务,捕获屏幕,视频监控,音频监控,发送音频,卸载灰鸽子可以说,用户在本地能看到的信息,使用灰鸽子远程监控都能看到。还有其他软件比如:Ne t f i ni t y 5. xLCCM2.51,引起广大用户反响的国内软件YAI 等,都是功能强大的远程控制软件。(4) 软件内容和采用的方法我们现在所研究的系统只是最基本的局域网的远程控制,其主要功能包括:自动搜索主机,监控受控端计算机的屏幕,发送信息,在本地操作受控计算机,关闭、重启受控计算机、锁定鼠标、黑屏等等。本软件的特点在于使用Wi nSock API函数和网络远程控制技术实现对局域网中多台计算机的管

5、理、维护和监控。(5) 软件的组成及运行环境本系统由服务器(监控端)程序和客户端(被控端)程序组成,只要客户机和服务器都连上网络(都支持TCP/I P协议)就可以工作。Cont r ol .exe装在服务器(监控端)上,监控端执行程序。Unde r cont r ol .exe装在客户端(被控端)上,被控端后台监控程序,运行时该界面自动隐藏。本软件在Wi ndow XP ,Del phi 6. 0 下运行通过。1 技术基础1 .1 远程控制我们所说的远程控制指局域网内的远程控制而言,远程控制是管理人员在主机通过网络,连接远程计算机,通过本地计算机对远程计算机进行管理和维护的行为,当操作者使用主

6、控端电脑控制被控端电脑时,就如同坐在被控端电脑的屏幕前一样,远程控制技术的工作方式采用CS(客户机服务器)模式,控制计算机与被控计算机连接成功后,通过网络的互联协议(TCPIP)进行远端控制。控制机好比一个超级用户,可以直接控制远端计算机。远程控制将被应用于家庭办公、远程教学、企业内部管理等领域。其控制的过程一般是先在主控端电脑上执行服务器程序,像一个普通的客户一样向被控端电脑中的客户端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控端电脑中的各种应用程序运行,我们称这种远程控制方式为基于远程服务的远程控制。1 .2 Wi ns oc

7、k APIWin32应用程序接口(API ) ,简称为Win32API,是用来编制控制Windows操作系统的编程接口,由一组包含在动态链接库中的函数和子程序组成,通过它们可以编程访问操作系统的功能。在该软件设计中涉及很多Windows底层操作,软件的主要功能皆由相应的Win32API函数来实现。网络编程技术是本软件设计中用到的主要技术之一。在Windows操作系统环境下应用程序通过编程接口访问TCPIP协议集的应用程序编程规范称之为WinSock API。Winsock API提供了一系列的系统调用,使用这些系统调用可以实现TCP、UDP、ICMP和IP等多种网络协议之间的通信;它采用客户机

8、/服务器的通信机制,使网络客户机方和服务器方通过各自的Socket接口形成个完整的套接字,如图1-1所示。在客户机与服务器之间建立通信信道,实现网络间的连接管理,并可进行数据交换。套接字是网络通信的基石,是支持TCPI P协议的网络通信的基本操作单元;可以将套接字看作不同主机间的进程进行双向通信的端点;一个套接字是通信的一端,在这一端上可以找到与其对应的一个名字;一个正在被使用的套接口都有它的类型和与其相关的进程;套接字存在于通信领域中。Delphi对原来的WindowsSocketAPI进行了一系列的封装,而本软件的通信就是用Tclientsocket控件和Tserversocket控件这1

9、两个控件来完成的。服务器 客户机S ocket()B ind()Listen()A ccept() C onnect()R ecv()S end()阻塞,等待客户数 建立连接请示数据处理服务请求应答数据库C lose()图1-1 socket接口示意图在windows系统中利用socket进行网络通信有两种主要方式:第一种是流方式(Streamsocket),也称面向连接方式(用于实现TCP协议),这种方式下,两个应用程序之间先要建立一种虚拟的连接,Streamsocket提供了一种可靠的面向连接的数据传输方法,数据无差错、无重复地发送,且按发送顺序进行接收;第二种是数据报方式(Datagra

10、msocket),又称无连接方式(用于实现UDP协议),在进行数据传送以前两端的程序不需要任何沟通,但没有提供可靠的、有次序的、无重复的保证,数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接受顺序混乱。本软件使用Stream socket实现数据传输。1 .3 编程工具Delphi集中了VisualC+和VisualBasic两者的优点:容易上手、功能强大,特别是在界面设计、网络编程等方面更有其独特的优势。所以选用Delphi作为开发工具。22 设计思想(客户端)本软件是由Delphi编写的,如图1-1所示,主要运用Delphi中的Tclient socket控件和Tser

11、versocket控件来实现客户端与服务器的连接,以及相互之间数据的发送和接收。2 .1 客户端(被控端)监听客户端(被控端)在某个地址的某个端口(如2058)监视对服务的请求,也就是说被控进程一直处于休眠状态,直到一个控制端对这个服务的地址提出连接请求,被控端如监听到控制端Socket 的连接请求时,被控程序被唤醒并且对控制端的请求做出适当的反应,即响应控制端Socket的请求而建立一个新的Socket句柄与控制端连接。2 .2 客户端(被控端)连接当客户端Socket接收到服务器Socket的连接请求后,就把客户端Socket的描述信息发给服务器一旦服务器确认了此描述,连接就建立了。(本软

12、件在被控端程序运行时socket控件的acti ve属性为true,所以只要接收到连接请求就自动连接上了)建立连接后客户端通过辨别服务器发过来的消息,分别进行响应不同的操作,也就实现了远程控制的功能。ServerSocket的属性设置: Active,属性设为true; Por t,是通信的端口,必须设置。在软件中设置为2058; ServerTypt,服务器端读写信息类型,设置为stNonBlocking表示异步读写信息,软件中采用这种方式。其它属性采用默认设置即可。3 客户端(被控端)设计过程3 .1 系统流程图图3-1为客户端(被控端)程序的系统流程图,为了达到远程控制的目的,就必须将被

13、控端软件隐蔽起来,所以被控端的程序只是后台监控程序,并且没有退出程序,也就是说程序一旦运行只有通过关闭进程的方法才能退出程序。控制端和被控端的socket连接起来后也就形成了一个通信通路,控制端发送一个命令,被控端通过socket的receivetext函数将命令从连接中接收出来放到字符串变量S中,再由S中不同的字符串来判断响应哪个事件,然后通过调用不同的API 函数来实现控制功能。3开 始欢迎界面3 .2 界面设计图3-1 系统流程图客户端的界面主要包括三个:启动时的欢迎界面,程序主界面和黑屏界面。3 .2 .1 启动时弹出的欢迎界面启动程序后,在主导界面出现之前,弹出的一个欢迎界面,停留数

14、秒后软件进入主导界面,这个画面的另外一个用处是在处理耗时进程时,为用户展示了一幅优美、舒心的图像,如图3-2。实现欢迎界面是在其他窗体之前最先弹出,在Undercontrol.dpr单元中begin后使友好界面窗体最先显示,其他窗体创建之后,为友好界面设置一个停留时间,方法4是调用Sleep(milliseconds)函数使程序的执行延时给定的时间值。函数功能是:暂停当前的进程mi l l i s econds毫秒。如软件中为s leep(3000),延迟3000毫秒后隐藏欢迎窗体,并释放其占用的内存资源,但是如果延迟时间较长的话程序看起来好像暂时死机,因为程序不能够响应延时期间发生的其他消息

15、。3 .2 .2 程序主界面图3-2 欢迎界面把一个seversocket控件放到form上,则应用程序就变成了一个TCP/IP客户端,设置Tserversocket的port属性指定的端口号和服务器port的端口号一致(本软件为2058),在窗体创建时把serversocket的Active属性设为true,则客户端(被控端)在启动后就会自动进入监视状态。为了达到远程控制的目的,就必须将被控端软件隐蔽起来,作为一个后台监控程序,所以其界面要隐藏,并且在任务栏、任务管理器中也不能显示。1) 实现在任务管理器中隐藏:在frmform窗体的oncreate事件(窗体创建)中调用ShowWindow

16、Async(Application.Handle,SW_HIDE)函数,它的功能类似于ShowWindow函数,控制可见性,第一个参数为窗口句柄,但它立即返回(不用等待目标程序返回隐藏信息)。并且它有一个副作用:从任务列表中移除目标窗口,将第二个参数设为hide。所以调用该函数可以实现在任务管理器(Ctrl+AltDel)中隐藏程序。2) 在任务栏里隐藏程序:将隐藏的应用程序窗口设为Tool Wi ndow来移走程序的任务条图标而避免它再次出现。Tool wi ndows永远不会有任务条图标。调用API5函数Ge t Wi ndowLong和Se t Wi ndowLong来使应用程序窗口成为

17、一个Tool Wi ndow。3) 实现界面最小化:只需在 f r mf or m窗体的oncr eat e 事件中使窗体的WindowState属性设为Wsminimized就可以了;通过上面三步的设置,客户端程序在运行时欢迎界面过后,程序主界面将不会显示在桌面、任务栏、任务管理器里,只会在后台运行。3 .2 .3 黑屏界面在客户端在执行响应黑屏事件时,会弹出黑屏界面,在执行解除黑屏时,关闭黑屏界面,它的功能是在主窗体里调用的。将其align属性设为alcli ent,其boderstyle风格设为bs none,使界面在处于最大化时整个窗体都是黑屏,并且是满屏的。3 .3 功能设计客户端通

18、过调用socket的Receivetext函数将收到的命令数据存放在字符串变量S中,然后根据S中得字符串的不同来响应不同的操作。Re cei vet ext 在Socket连接中读取字符串。该函数返回连接中已读取的字符串,它只能工作在非阻塞的方式下,要在阻塞方式下读取信息用Receivestream函数。如S:=Socket.ReceiveText;将收到的字符串指令放在变量S中。3 .3 .1 关机当客户端(被控端)接收到S中的字符串为closewindow时,则响应关机操作,先提升用户权限,然后通过调用InitiateSystemShutdown()函数来实现操作,再调用showmessa

19、ge()函数来显示关机的对话框。要提升用户权限,先调用OpenProcessToken()函数打开一个进程中相关联的访问标志:Ope nPr oces s Toke n ( Get Cur r ent Pr oces s , TOKEN_ADJ UST_PRI VILEGES,hToken);第一个参数Get CurrentProcess()函数的作用是得到本进程的句柄;TOKEN_ADJUST_PRIVILEGES对访问令牌改变特权;再调用LookupPr i vi l egeVa l ue(ni l,SeShutdownPrivilege,tkp.Privileges0.Luid)通过第二

20、个参数指定权限名字为关机权限,然后返回一个标识符;最后调用AdjustTokenPri vi leges(hToken, False,t kp, 0, ni l , r l ) 函数来修改指定访问标志的权限,设置权限能还是不能;tkp为新的权限信息。ExitWindowsEx(EWX_SHUTDOWN,0)函数可以关掉或是重启网络上和本地的任意一台指定的计算机,将第一个参数指定为EWX_SHUTDOWN实现关机功能。3 .3 .2 重启当客户端接收到S中的字符串为reswindows时,则响应重启操作,类似于关机6操作,先要调用上面三个函数提升权限,然后通过调用Exi t Wi ndows E

21、x( EWX_REBOOT,0)函数来实现操作(和关机参数不同,第一个参数为EWX_REBOOT来实现重启功能)。3 .3 .3 隐藏任务栏在Windows中,系统的任务栏本质上也是一个窗口,其窗口类名为“Shell_TrayWnd。当客户端接收到S中的字符串为notaskbar时,则响应隐藏任务栏的操作,首先调用API函数findwindow(shell_traywnd,nil);获取了任务栏窗口的句柄,然后调用showwindow(hwnd1,sw_hide)通过第二个参数指定其类型为hide,来实现对窗口的隐藏。3 .3 .4 显示任务栏当客户端(被控端)接收到S中的字符串为yestas

22、kbar时,则响应显示任务栏操作,和上面的一样,先调用f i ndwi ndow( s hel l _t r ay wnd , ni l ) ;来获得任务栏窗口的句柄,然后调用showwindow(hwnd1,sw_show);指定其类型为show,则任务栏就显示出来了。3 .3 .5 隐藏开始按钮当客户端接收到S中的字符串为nobut ton时,则响应隐藏开始按钮操作,先调用findwindow(shell_traywnd,nil)来获得任务栏窗口的句柄;然后调用getwindow( hwnd1,gw_child)函数来获得任务栏上最上面的窗口句柄,gw_child为源窗口上最上面的窗口(即

23、开始按钮);再调用getclassna me()为指定的窗口取得类名,最后调用showwindow(hwnd1,sw_hide)指定其类型为hide,开始按钮也就隐藏了。3 .3 .6 显示开始按钮当客户端接收到S中的字符串为yesbutton时,则响应显示开始按钮操作,先调用 f i ndwi ndow( 来获得任务栏窗口的句柄,然后调用getwindow(hwnd1,gw_chi l d)函数来获得任务栏上最上面的窗口句柄(即开始按钮),再调用getclassname()为指定的窗口取得类名,最后调用showwindow( hwnd1,sw_show)指定其类型为s how,开始按钮也就显

24、示了。3 .3 .7 隐藏桌面Wi ndows 桌面本身就是一个窗口,其窗口类名为Pr ogma n,当客户端接收到S中的字符串为node s ktop时,则响应隐藏桌面操作,同理:先调用FindWindow(Progman, ni l ) 来获取桌面窗口的句柄。然后调用ShowWindow(hDe s ktop,SW_HIDE)将其类型设为hi de,桌面就隐藏了。3 .3 .8 显示桌面7当客户端接收到S中的字符串为yes des ktop时,则响应显示桌面操作,先调用FindWindow(Progman,nil)来获取桌面窗口句柄;然后调用ShowWindow(hDesktop,SW_s

25、how)将其类型设为show,桌面窗口就显示出来了。3 .3 .9 黑屏当客户端(被控端)接收到S中的字符串为blacksrn时,则响应黑屏操作。要实现整个屏幕都是黑屏在响应黑屏的事件中使WindowSt ate的属性设为Wsmaximized就可以了。并且在处于黑屏状态时要使黑屏窗体是在桌面最前面显示的窗体,调用setforegroundwindow(appl ication. Handle)即可实现。3 .3 . 10 解除黑屏当客户端(被控端)接收到S中的字符串为noblacksrn时,则响应解除黑屏操作,直接将黑屏窗体关闭,调用其cl ose方法即可。3 .3 . 11 锁定鼠标当客户

26、端(被控端)接收到S中的字符串为nomouse时,则响应锁定鼠标操作,a :=r ect ( 0, 0, 5, 5);rect()函数用来设置移动区域,将范围设置在桌面左上角的正方形框中;然后用ClipCursor(a );将鼠标锁定在上面设置好的区域内。3 .3 . 12 解除锁定当客户端(被控端)接收到S中的字符串为yes mous e时,则响应解除锁定鼠标操作,直接调用ClipCursor(nil)将鼠标解除锁定。3 .3 . 13 抓取屏幕当客户端(被控端)接收到S中的字符串为get s creen时,则响应抓取屏幕的操作。包括抓取整个屏幕,并将图片存在被控端某一指定的位置,将图片转换

27、为J PG格式并将图片传送回控制端。1) 抓取屏幕要抓取的是被控机的整个桌面,所以将其整个屏幕s cr een的大小赋值给一个bitmap变量就可以,然后返回其句柄,调用getdc(0)函数,参数0指屏幕。2) 保存图片到文件中,myj ep. Save ToFi l e ( c: you. J pg) ;将图片保存到c盘下的you文件里。3)将抓取的图像传回控制端,:myjep.assign(image1.Picture.Bitmap);将image1抓取的BMP图像转成JPG格式,便于在互联网上传输;再调用savetostream()函数,myjep.SaveToStream(MyStream); 将JPG图像写入流中,传回到控制端。84 实验结果4 .1 发送信息服务器端(控制端)点击发送信息时,会在客户端(被控端)弹出个文本框来显示发送的内容,如图4- 1所示:服务器端发送的消息 客户端接收到的消息图 4 -1 发送与接收消息

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1