计算机远程控制程序设计毕业论文.doc_第1页
计算机远程控制程序设计毕业论文.doc_第2页
计算机远程控制程序设计毕业论文.doc_第3页
计算机远程控制程序设计毕业论文.doc_第4页
计算机远程控制程序设计毕业论文.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西南科技大学本科生毕业论文 计算机远程控制程序设计毕业论文目 录第1章 前言51.1 概述51.2 远程控制的基本原理61.2.1 远程控制软件的基本模式71.2.2 远程控制常用软件71.3 论文选题及研究方案81.4 主要工作量91.5 研究内容101.5.1 主要研究内容101.5.2 主要技术要求10第2章 远程控制程序的设计思路112.1 关机、重启子程序112.2 读取计算机信息子程序122.3 增加帐户子程序132.4 截图子程序132.5 键盘记录子程序152.6 主程序调用152.7 本章小结16第3章 远程控制程序的设计173.1 子程序设计173.1.1 计算机关机、重启程序设计173.1.2 读取计算机信息程序设计173.1.3 增加账户程序设计203.1.4 截图程序设计243.1.5 键盘记录程序设计263.2 主程序设计27结 论29致 谢30参考文献31第1章 前言1.1 概述 随着计算机网络的迅速普及,人类社会已经越来越离不开网络,网络使人类社会淡化了国家的限制。各国社会的经济、政治、文化等各个方面都开始倚重于网络方便迅速的信息传递方式。网络有着巨大的资源与强大的计算能力,这些也属于一种能量,其威力无法估量。网络当初建立时是基于各个节点相互信任的前提,但是事实上,使用网络节点的人相互之间并不是可以相互信任的。人类社会中存在窥探者、破坏者、盗窃者,网络上也有,而且在网络上做这些事情要更容易。网络蕴涵着强大的力量,这些力量又被不同的人或组织控制,于是有了力量冲突,这种力量的冲突是人类基本社会冲突在网络上的延伸,具有相同的性质。我们可以称这种冲突为网络战争,因为它确实和战争有很多共同点。信息社会中,信息己成为人类宝贵的资源。近年来Internet正以惊人的速度在全球发展,Internet技术己经广泛渗透到各个领域。信息是战略资源,信息是决策之源,是控制战场的灵魂,信息决定火力和机动力。信息可以极大扩充军队智力和神经(指挥)系统的协调性,军事信息化是一次全面深层次的革命。近年来,一些军事强国为了在信息化战场上夺取“制网权”优势,大胜采用网络对抗技术,实施各种攻防手段。海湾战争中,美军首次把网络攻击手段应用于实战。战前,美军就在伊拉克进口的一批计算机散件中预置了带病毒芯片。战争开始不久。伊拉克移个防空指挥网络即遭受病毒感染,组织指挥陷入混乱。几乎丧失了防空作战能力。俄军在强化网络战中十分重视“先机制敌”和实施主动性攻击。据悉,目前俄专家正加紧研制“远即离无线注人病毒武器”,对战略指挥控制系统产生直接威胁。这都是应用对抗技术的体现,但日前的网络攻防并没有充分利用好。因而我们势必深人研究网络战中的对抗技术,使其分类系统化、明朗化才能讲求实用。因此我国要从战略高度重视信息战的问题,必须认识到未来战争将主要是信息战。信息战将以覆盖全球的计算机网络为主战场,以攻击对方的信息系统为主要手段,运用高精尖的计算机技术,不仅破坏军事指挥和武器控制系统,而且会使其金融、交通、商业、医疗、电力等涉及国民经济命脉的诸多系统遭到破坏,从而不费一枪一炮达到攻城夺地的目的。网络战必将成为未来信息战场新的作战样式。首先,网络技术的广泛应用,使得网络成为新的争夺空间。在信息时代里,网络正在成为联结个人和社会,现在和未来的纽带,各种各样的计算机网络都将成为一个国家的战略资源和战略命脉,一旦重要的网络陷入瘫痪,整个国家安全就面临着崩溃的危险,使“制网络权”的争夺与对抗不可避免。同时,随着网络技术在军事领域的快速发展,军队对计算机网络的依赖越来越大,网络与作战的联系也愈来愈紧密,网络成为新的战场空间。其次,网络的特殊战略作用,促使网络对抗与争夺向网络战方向发展。和常规作战中选择打击对象一样,网络攻击也是把对敌方的战略目标作为首要进攻对象。能否有效地摧毁敌重要网络系统,以便迅速达成一定的战略目的,就成为敌对双方进行全面网络争夺和对抗的焦点,这种对抗与争夺必然促使网络战成为新的作战样式登上战争舞台。木马技术就是一种军民两用的网络攻击技术,由于木马本身的技术优势因而得到了广泛的应用,利用木马技术渗透到敌方系统内部,建立一个稳固的内部攻击点,为以后的攻击提供一个畅通无阻的安全通道,再由里及外,内外结合,往往可以收到更好的攻击效果。综上所述,网络战引起很多国家的普遍重视,网络攻击技术也相应的得到了长足的发展,目前,存在多种网络攻击技术,木马技术就是其中之一,研究开发先进的木马攻击技术使得在将来的网络战中抢占先机,立于不败之地具有重要的意义。木马理论上基于服务器/客户端网络模型,但是这种模型不利于控制系统的隐藏。本文构建了一个强大的基于P2P网络模型的木马系统,它在Internet上通过控制系统和受控计算机建立一个完整的P2P网络,通过这个网络可以获取网络的计算资源,并且可以对这些资源进行隐蔽控制,从而可以有效完成各种特殊的任务。而木马最近本的功能就是计算机远程控制,正式我们需要研究的方向。1.2 远程控制的基本原理远程控制是指在计算机网络上由一台主机(主控端)远距离控制另一台主机(驻留端) 的技术。当操作者使用主控端主机控制被控端主机时,就如同坐在被控端主机的屏幕前操作一样,可以启动被控端主机中的应用程序,可以使用文件资料,甚至可以利用被控端主机的各种外部设备。但是值得注意的是:主控端所做的一切控制操作如打开应用程序、上网浏览以及下载等都是在被控主机的计算下完成的;主控端主机只是将键盘和鼠标的指令传送给远程被控主机。网络中的远程控制技术早于DOS时代就已提出,只不过当时由于网络应用范围不广,网络用户在这方面没有较大的要求,因此这项技术没有得到较大的发展。但是,随着计算机网络的广泛应用以及用户在应用中的需要,远程操作及控制技术越来越引起人们的关注。远程控制一般支持的网络方式:LAN、WAN、拨号方式、互联网方式。1.2.1 远程控制软件的基本模式远程控制一般支持局域网、广域网、无线网、拨号方式、宽带接入等方式,还可以支持直接连接,即通过串口、并口、红外端口来对远程主机进行控制。传统的远程控制软件一般使用TCPIP、NETBEUI、NETBIOS、IPXSPX等协议来实现远程控制,也可以通过BS模式或浏览器中间件服务器结构,即Web页面以Java技术来控制远程电脑,从而达到远程控制不同操作系统的目的。远程控制实现机制:客户端将键盘和鼠标的操作信息实时传送给服务器端,由服务器端软件仿真为本地的键盘和鼠标操作,同时实时捕捉服务器端电脑的屏幕画面,通过网络回传到客户端。远程控制软件通常由两部分组成:一部分是客户端(控制端)程序Client,另一部分是驻留端(受控端)程序Server,建成CS模式。使用前需要在控制端运行客户端程序,在受控端运行服务器程序。然后由控制端向受控端发出信号,建立一个特殊的远程服务。再通过这个服务,使用各种远程控制功能发送远程控制命令,控制受控端电脑中的各种应用程序运行,这种远程控制方式称为基于远程服务的远程控制。1.2.2 远程控制常用软件各类远程控制软件种类繁多,可以运行在不同的工作平台,在屏幕截取,鼠标键盘控制上各有特色常用的控制软件有如下几种:PCAnywhere:是点对点通信软件,可以远程监控、管理、调试,有卓越的自我保护功能和加密工具,功能强大,是远程控制软件的首选,适合于技术支持和企业内部部署。RemotelyAnywhere:基于Web客户端连接,操作简单,拥有用户所需要的全部网络管理工具,适于服务器管理。冰河:可支持局域网Modem上网宽带上网等多种方式,功能强大,容易被黑客利用,被许多杀毒软件列为查杀对象。QuiekIP:客户机可同时控制多个服务器,反之亦然。适用于多种场合。VNC:免费跨平台的开放源码软件。在Windows环境下,远程控制有以下2种实现方法:1)Windows XP远程控制的实现“远程协助”和“远程桌面”是Windows XP系统提供的远程控制的方法。使用“远程协助”进行远程控制必须由主控双方协同才能够进行,通过MSN Messenger向联系人发出协助要求,在获得对方同意后,即可进行远程协助。2)Windows 2000 Server远程控制的实现在服务器上安装配置好与客户端连接所需的协议,如IPX、TCPIP、NETBEUI等,在安装“路由和远程访问”服务后,即可以配置运行Windows 2000 Server的远程访问服务器。Windows 2000 Server提供了拨号网络和VPN两种方式的远程访问。1.3 论文选题及研究方案本次论文的主要要求就是计算机远程控制程序设计驻留端程序设计,即CS中的Server端程序设计,要求实现一定的功能。如:计算机的关机、重启,获取计算机信息,增加帐户,截图、键盘记录等功能。本远程控制程序是采用模块化设计的方法,将整个程序划分为主控制程序、重启控制子程序、关机控制子程序、计算机信息获取子程序、增加帐户子程序、截图子程序、键盘记录子程序等模块,通过这样的划分,我们可以清晰的构建出程序的流程图,可以方便程序的分块编写。本次设计主要是编写一个程序,其主要功能是通过接收客户端的命令,实现控制,只需要编写关于驻留端的程序,实现控制即可,不用设计关于控制端的程序设计以及网络的对话,所以只需要构建出关于程序的控制的部分。所以本次设计首要任务就是使用子程序实现要求的控制功能,如关机,重启等,分别用子程序实现;其次才是编写一个主程序实现调用,构成一个完整的远程控制程序;由于不需要网络通讯,就不需要使用远程命令代码控制,仅仅使用一个命令行在本机上实现控制功能即可。本次设计是使用Microsoft Visual C+ 6.0进行设计,在Microsoft Visual C+ 6.0中有专门基于Windows控制的Windows API程序,可以简单的实现功能,所以在本次设计中主要使用的就是Windows API编程。1.4 主要工作量本次设计基本参照上述的研究方案进行,其具体工作量的统计如表1-1所示。学习编写内容工作量(h)目的查阅相关文献、资料240熟悉VC编程学习关于Windows API编程80学习使用Windows API实现功能关机、重启程序研究40编程实现计算机关机、重启获取计算机信息程序研究40编程实现计算机信息获取增加帐户程序研究40编程实现增加帐户截图程序研究80编程实现程序截图键盘记录程序研究80编程实现键盘记录程序调用研究80主程序调用子程序实现功能表1-1 主要工作量统计表1.5 研究内容1.5.1 主要研究内容基于设计的要求,我选择了使用Windows XP下的Microsoft Visual C+ 6.0作为开发工具,主要使用其中的Windows API函数来实现上述功能。1)开发关于计算机关机的子程序2)开发关于计算机重启的子程序3)开发关于获取计算机信息的子程序4)开发关于增加帐户的子程序5)开发关于截图的子程序6)开发关于键盘记录的子程序7)开发程序调用的主程序1.5.2 主要技术要求(1)实现程序预期的主要功能;(2)实现调用过程;(3)可以通过简单修改主程可以实现从客户端调用主程序命令实现远程控制 第2章 远程控制程序的设计思路本次设计采用分步设计的方法,首先单独实现子程序功能,通过对子程序修改设计,再总体编写主程序,实现调用。本章重点介绍设计各个子程序的主要思路。2.1 关机、重启子程序在本次程序设计中,首先查阅了基于Windows API的函数接口编程实例,学习了关于系统system函数集,使用此函数可以实现计算机的关机与重启,也可以实现文件的删除等功能,主要使用Windows命令行命令来控制。分别写入两个子程序,方便最后组合的主程序调用。子程序流程图如图2-1。图2-1 关机、重启子程序流程图 2.2 读取计算机信息子程序在Windows API中,可以获取与管理Windows 系统信息包括系统基本信息、时间信息、注册表。其中系统信息的获取主要包括系统目录、Windows安装目录、用户名、计算机名、域名等。在这个子程序设计过程中,主要使用的就是Windows API函数来获取其中我们需要的信息,如安装目录、用户名、计算机名等。获取了这些信息,才有助于我们的远程控制,以及以后的后续操作。读取了计算机基本信息后输出到D:get.txt。在调试功能实现以后,讲程序改编为子程序,方便以后主程序的调用。流程图如图2-2.函数如下:获取系统版本:GetVersionEx;获取计算机硬件信息:GetSystemInfo;获取安装目录:GetSystemDirectory;获取用户名:GetUserName;获取计算机名:GetComputerName; 图2-2读取计算机信息子程序流程图2.3 增加帐户子程序在上一个子程序设计中,已经读取了计算机名以及用户名,为了方便以后的控制,在驻留端计算机上增加一个属于自己的专用超级用户是必须的,我们假定增加的超级帐户名:admin;密码:admin,在Windows API中依然有关于计算机帐户添加的函数,调用增加即可。程序流程图如图2-3.函数如下:创建帐户:NetUserAdd;将用户添加到用户组:NetGroupAddUser; 图2-3增加帐户子程序流程图2.4 截图子程序截取屏幕的流程:截取屏幕输出一般需要经过以下步骤。1) 使用字符串“DISPLAY”为参数,调用CreateDC,得到类型为“显示”的DC。2) 调用CreateCompatibleDC创建一个内存DC。3) 得到需要截取的屏幕区域,比如调用GetDeviceCaps获取屏幕大小,GetWindowRect获取窗口区域等。4) 调用CreateCompatibleBitmap创建BITMAP。5) 调用SelectObject,将创建的BITMAP选择入内存DC,并将返回值使用另外一个BITMAP对象句柄来保存,SelectObject的返回值表示了DC中呗替换的图形对象。6) 调用BitBlt函数将源DC(显示类型的DC)指定位块 (bit-block)的颜色数据转移到目的DC(内存)中。7) 将之前保存的旧的BITMAP对象再调用SelectObject选择回内存DC中,这样从显示的内存DC中BitBlt到内存DC中的位块颜色数据就被替换掉,SelectObject的返回值即是从屏幕中得到的位图对象(HBITMAP类型)。由于在我们程序设计的要求中,不需要调整截图的大小,只需要全屏幕截图之后保存就可以了,所以比较简单,不用调整获取区域。在截图完成后由内存输出到D:jietu.bmp。程序流程图如图2-4。 如图2-4截图子程序流程图2.5 键盘记录子程序在Windows API中,GetKey函数是记录键盘输入的信息,在键盘记录子程序的,使用GetKey函数,记录输出的信息,之后转换为我们平常看到的字符输出,输出到D: log.txt,中间主要的程序就是替换输入的信息和输出的信息转换,以及Shift和Caps Lock按键之后的字符转换。程序流程图如图2-5。图2-5键盘记录子程序流程图2.6 主程序调用主程序中主要的功能就是在检测到输入的命令之后,分别调用子程序实现功能,在输入的过程中,根据命令调用子程序完成后返回进入待机状态,等待下一步命令,主程序中的命令输入可以与网络控制命令结合,直接实现远程控制,在本次设计中,只需要做出控制端程序,为了模拟控制,所以直接本地控制,如需要加上远程控制只需要与远程客户端程序添加调用程序即可。流程图如图2-6 图2-6 主程序流程图2.7 本章小结本章主要是讨论本次设计中的有关功能实现流程,通过对程序子程序的规划、设计,实现了对远程控制程序基本功能。对各个子程序的功能实现的流程进行了分析,最后对使用主程序调用子程序实现功能。如果需要使用网络命令调用函数实现功能,只需要使用客户端程序调用代码修改即可。第3章 远程控制程序的设计3.1 子程序设计本次设计的主要功能是使用Windows API的函数实现的,其中主程序的调用在实际的设计中是可以与控制端程序联合设计,本次设计中只是为了方便功能的实现加入显示调用,子程序实现的功能(如截图的保存,键盘记录等)主要是保存在D盘目录下,方便以后的使用。3.1.1 计算机关机、重启程序设计使用VC中的system函数主要功能就是发出一个DOS命令,其中的函数变量即为DOC中的命令,system函数已经被收录在标准C库中,由于C+全面兼容了标准C库,所以在这儿就可以直接调用system函数实现可以用DOC命令行程序实现关于计算机的基本操作,如:关机、重启等。函数如下:system(shutdown -s -t 0); /shutdown s 为关机命令,-t为时间设置,默认为30秒,在此我们设置为0秒,即立刻关机system(shutdown r -t 0); /shutdown r 为重启命令,-t为时间设置,默认为30秒,在此我们设置为0秒,即立刻重启上述两条功能实现调用了同一个函数,很简单,在此不做过多讨论。3.1.2 读取计算机信息程序设计以下的子程序设计基本上都是使用的Windows API函数实现的,首先是计算机基本信息的获取,计算机版本、用户名、计算机名的获取,在Windows API中有特定的的函数读取这些信息。1)计算机版本的获取:可以使用GetVersionEx函数获取系统版本信息,函数原型如下:BOOL GetVersionEx(LPOSVERSIONINFO lpVersionInfo);参数lpVersionInfo:输入、输出参数,此参数为OSVERSIONINFO或者OSVERSIONINFOEX结构的指针,用于存储获取的系统版本信息。这两个结构的第一个成员都是dwOSVersionInfoSize,如果使用OSVERSIONINFO结构那么将此成员设置为sizeof(OSVERSIONINFO)如果使用OSVERSIONINFOEX结构,那么设置此成员为sizeof(OSVERSIONINFOEX)。返回值BOOL类型,表示是否成功。使用GetLastError函数获取错误代码。2)用户名、计算机名:获取当前登录用户使用API函数GetUserName,获取计算机名使用API函数GetComputer Name,获取特定格式的计算机名使用API函数GetComputerNameEx,设置计算机名使用API函数SetComputerName和SetComputerNameEX。GetUserName获取当前登录的用户名,函数定义如下:BOOL GetUserName(LPTSTR lpBuffer,LPDWORD nSize);参数 lpBuffer:输出参数,指向保存登录用户名的内存缓冲区。其大小最好不小于(UNLEN+1), UNLEN 定义在Lmcons.h中。 nSize:输入、输出参数,指向表示lpBuffer的大小(字符数)的DWORD型变量。如果小于所需要的大小,那么lpnSize返回需要的大小,函数返回失败。 GetComputerName获取当前计算机名,函数的定义如下:BOOL GetComputerName(LPTSTR lpBuffer,LPDWORD lpnSize);参数lpBuffer:输出参数,指向保存计算机名的内存缓冲区,其大小最好不小于(MAX COMPU TERNAME一LENGTH+1)。lpnSize:输入、输出参数,指向表示lpBuffer的大小(字符数)的DWORD型变量。如果小于所需要的大小,那么lpnSize返回需要的大小,函数返回失败。返回值BOOL型,表示是否成功。使用GetLastError获取错误信息。部分程序代码如下:void ShowInfo()/获取计算机版本信息if(over.dwMajorVersion=5)if(over.dwMajorVersion=0)lstrcat(szVersionInfo,”Windows 2000”);else if(over.dwMajorVersion=1)lstrcat(szVersionInfo,”Windows XP”);else if(over.dwMajorVersion=2)lstrcat(szVersionInfo,” Windows Server 2003”);else if(over.dwMajorVersion=6)lstrcat(szVersionInfo,”Windows Vista”);else iflstrcat(szVersionInfo,”Windows NT 4.0 或者其他”);/获取计算机名以及用户名DWORD dwComputerNameLen=MAX_COMPUTERNAME_LENGTH+1;DWORD dwUserNameLen=UNLEN+1;TCHAR szComputerNameMAX_COMPUTERNAME_LENGTH+1;TCHAR szUserNameUNLEN+1;COMPUTER_NAME_FORMAT conf;GetComputerName(szComputerName, &dwComputerNameLen);GetUserName(szUserName, &dwUserNameLen);图3-1 获取计算机信息结果截图3.1.3 增加账户程序设计程序的设计要求中是添加一个用户,本程序定义的是添加用户名为admin,密码为admin的超级账户。1)增加用户:在Windows API中,创建新用户的函数是NetUserAdd API,函数原型如下:NET_API_STATUS NetUserAdd(LMSTR servername,DWORD level,LPBYTE buf,LPDWORD parm_err);servername参数是需要添加用户的主机名,如果是本机则设置为NULL。level参数决定了buf参数的结构,设置为1、2、3、4分别表示buf参数所指向的内容为USER_INFO_1、USER_INF0_2、USER_INFO_3、USER_INF0_4。这4个结构都包括了用户的相关信息,只是所包括的信息的丰富程度不同。以USER_INFO_1为例,包括用户的一些基本信息,用户名、密码、密码期限、优先级、用户HOME路径、描述等。typedef struct _USER_INFO_1LPWSTR usril_name;LPWSTR usril_password;DWORD usril_password_age;DWORD usril_priv;LPWSTR usril_home_dir;LPWSTR usril_comment;DWORD usril_flags;LPWSTR usril_script_path;USER_INFO_1,*PUSER_INFO_1,*LPUSER_INFO_1;2)将用户增加到administrator组中NetGroupAddUser的功能分别是将用户添加到用户组,函数原型如下:NET_API_STATUS NetGroupAddUser(LPCWSTR servername,LPCWSTR GroupName,LPCWSTR username);level参数也是指定buf参数的类型。buf参数类型包括GROUP_INFO_1、GROUPINF02、GROUP_INF0_3、GROUPINF0_4。部分程序代码如下:Int AddUser( LPWSTR NULL,LPWSTR admin,LPWSTR admin)/参数为:主机名(本机设置为NULL);用户名;密码USER_INFO_1 ui;DWORD dwLevel = 1;DWORD dwError = 0;NET_API_STATUS nStatus;/填充USER_INFO_1ui.usri1_name = admin;/用户名ui.usri1_password=admin;/密码ui.usri1_priv=USER_PRIV_USER;/级别ui.usri1_home_dir=NULL;ui.usri1_comment=NULL;ui.usri1_flags=UF_SCRIPT;ui.usri1_script_path=MULL;/调用NetUserAdd,增加用户nStatus=NetUserAdd(NULL,dwLevel,(LPBYTE)&ui,&dwError);图3-2 增加帐户前管理界面截图图3-3 增加帐户后管理界面截图3.1.4 截图程序设计在Windows环境中,设备上下文(DC)及基于设备上下文的绘图操作是用户界面的核心。在Windows API的帮助下程序可以很简单地得到设备上下文的实例,并通过这个设备上下文实例来获取屏幕图像。/常量定义#define PALVERSION 0x300#define CAP_SHOW_MODE_STRTCH 1#define CAP_SHOW_MODE_NOSTRTCH 0/全局变量HBITMAP ghBitmap=NULL;RECT rectShow;/修改此处可以更改截取不同窗口,null为全屏LPSTR szCaptureWindowName =NULL;DWORD WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdSshow)ghBitmap=ScreenCapture(“D: jietu.bmp”,NULL);HBITMAP ScreenCapture (LPSTR filename,/截图保存路径 LPRECT lpRect)/截图区域u,为NULL时截全屏HDC hdc=CreateDC(“DISPLAY”,NULL,NULL,NULL);int screenw=GetDeviceCaps(hdc,HORZRES);int screenh=GetDeviceCaps(hdc,VERIRES;HDC hmdc=CreateCompatibleDC(hdc);HBITMAP hbm=CreateCompatibleBitmap(hdc,screenw-screenh);SelectObject(hmdc,hbm);BitBlt(hmdc,0,0,screenw,screenh,hdc,0,0,SRCCOPy);图3-4 截图程序捕获桌面以及存放的位置3.1.5 键盘记录程序设计首先要分析主控端如何模拟获取操作者的操作。本文采用如下的数据结构来记录一次操作者的操作,这些数据结构定义在系统的头文件中。typedef struct tagINPUTDWORD type;unionKEYDBINPUT ki;HARDWAREINPUT hi;);)INPUT,*PINPUT;在上述的数据结构中, KEYDBINUT为键盘输入的数据。string Filename = D:log.txt;/最后通过此命令输出到文件,路径为D: log.txt如果需要远程控制,输出信息到远程计算机,则可以使用Windows API中的函数SendUserlnput实现,函数结构如下:BOOL SendUserlnput(INPUT *input,UINT number)把操作信息传输到被控端。被控端在接收到主控端传来的输人信息后,直接调用WinAPl函数Sendlnput送给系统处理。图3-5 键盘记录结果截图3.2 主程序设计本次设计的主要工作都已经在子程序中完成了,最后的主程序最要的功能就是为了实现子程序的调用,分别输入不同的命令,调用不同的子程序,实现计算机的控制,可以与控制端的网络命令一同实现计算机的远程控制。只需要使用简单if判断语句就可以实现。主程序控制命令如下:11计算机关机;12计算机重启;21读取计算机信息;31增加admin账户;41屏幕截图;51键盘记录。图3-5 主程序界面选择窗口结 论通过本次课题的探索与研究,我们设计出了一个模拟的计算机远程控制驻留端程序,主要的方向就是计算机控制以及计算机记录方面,通过本地的控制可以实现功能,但是与远程计算机连接的控制方面融合不多,需要以后继续研究。本次的程序设计主要包括了计算机关机、重启、信息读取、add账户、截图、键盘记录等子程序,在主程序中我们通调用将各个子程序连接起来,共同实现计算机的控制,形成了一个完成的程序。通过该程序,我们可以在界面上输入不同的命令是计算机实现不同的功能,以及得到计算机的信息等功能。本次设计的远程控制程序驻留端主要能实现如下功能:a) 通过键盘输入命令可以实现计算机的关机;b) 通过键盘输入命令可以实现计算机的关机;c) 通过键盘输入命令可以实现计算机信息的读取,结果输出到D:get.txt;d) 通过键盘输入命令可以在计算机administrator组中加入admin账户;e) 通过键盘输入命令可以实现计算机屏幕截图,结果输出到D:jietu.bmp;f) 通过键盘输入命令可以实现计算机键盘输入数据记录,结果输出到D: log.txt;致 谢四年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。四年的求学生涯在师长、亲友的大力支持下,走得辛苦却也收获满囊,在论文即将付梓之际,思绪万千,心情久久不能平静。 伟人、名人为我所崇拜,可是我更急切地要把我的敬意和赞美献给一位平凡的人,我的导师XXX老师。我不是您最出色的学生,而您却是我最尊敬的老师。您治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村”。 感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意! 同时也感谢学院为我提供良好的做毕业设计的环境。 最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。 参考文献1 胡建伟,汤建龙,杨绍全.网络对抗原理M.西安电子科技大学出版社,2004:236-268.2 邓丽,董渊,张瑞丰.C+语言程序设计(第三版)M.清华大学出版社,2004:324-358.3 James F.Kurose,Keith W.Ross.计算机网络 自顶向下方法M.机械工业出版社,2009:596-607.4 单春,网络攻击中的特洛伊木马及其防范手段J.辽宁师范太学学报(自然科学版).V01,23 No,34-39,2000.5 岳兵,霍宝锋,谢冰,赵云霞,刘伯莹.网络入侵行为模式研究M.天津大学学报,V01,36 No,25-29,2003.6 杨守君.黑客技术与网络安全M.北京:中国对外翻译出版公司,2000: 68-128.7 卢勇焕.黑客与安全M.中国青年出版社,2001:6-19.8 张汉亭.计算机病毒与反病毒技术M.清华大学出版社,199::110-126.9 张键.防毒杀毒M.电子工业出版社,1999:406-409.10 蔺聪.基于木马的黑客攻击技术J. 期刊论文.电脑知识与技术,2008(8):5-10.11 罗泽军.通信管理系统的安全性研究J.学位论文硕士,2006:15-16.12 周凯.计算机网络常见攻击技术及其防范研究J.期刊论文.科技信息,2008(35):19-23.13 陈庆忠.木马程序设计J.学位论文学士,2010:134-176.14 范文庆.周彬彬,安靖,精通Windows API函数,接口,编程实例M.人民邮电出版社,2009:307-356.15 宋彦儒,周翔.计算机远程控制系统设计J.学位论文,2008:1-6.16 Jeff Prosise.MTC Windows程序设计M.清华大学出版社,2001:307-349.17 丁寒舒,敬荣,汪渊.计算机远程控制研究J.期刊论文,2010:68-79.附录API函数表WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接 WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接 WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称 WNetGetLastError 获取网络错误的扩展错误信息 WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口 GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置 GetMessageTime 取得消息队列中上一条消息处理完毕时的时间 PostMessage 将一条消息投递到指定窗口的消息队列 PostThreadMessage 将一条消息投递给应用程序 RegisterWindowMessage 获取分配给一个字串标识符的消息编号 ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口 SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台 CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件 DeviceIoControl 对设备执行指定的操作 DosDateTimeToFileTime 将DOS日期和时间值转换成一个 win32 FILETIME 值 FileTimeToDosDateTime 将一个 win32 FILETIME 值转换成DOS日期和时间值 FileTimeToLocalFileTime 将一个FILETIME结构转换成本地时间 FileTimeToSystemTime 根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 FindClose 关闭由FindFirstFile函数创建的一个搜索句柄 FindFirstFile 根据文件名查找文件 FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件 FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区 FlushViewOfFile 将写入文件映射缓冲区的所有数据都刷新到磁盘 GetBinaryType 判断文件是否可以执行 GetCompressedFileSize 判断一个压缩文件在磁盘上实际占据的字节数 GetCurrentDirectory 在一个缓冲区中装载当前目录 GetDiskFreeSpace 获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 GetDiskFreeSpaceEx 获取与一个磁盘的组织以及剩余空间容量有关的信息 GetDriveType 判断一个磁盘驱动器的类型 GetExpandedName 取得一个压缩文件的全名 GetFileAttributes 判断指定文件的属性 GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制 GetFileSize 判断文件长度 GetFileTime 取得指定文件的时间信息 GetFileType 在给出文件句柄的前提下,判断文件类型 GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息 GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 GetFullPathName 获取指定文件的完整路径名 GetLogicalDrives 判断系统中存在哪些逻辑驱动器字母 GetLogicalDriveStrings 获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径 GetOverlappedResult 判断一个重叠操作当前的状态 GetPrivateProfileInt 为初始化文件(.ini文件)中指定的条目获取一个整数值 GetPrivateProfileSection 获取指定小节(在.ini文件中)所有项名和值的一个列表 GetPrivateProfileString 为初始化文件中指定的条目取得字串 GetProfileInt 取得win.ini初始化文件中指定条目的一个整数值 GetProfileSection 获取指定小节(在win.ini文件中)所有项名和值的一个列表 GetProfileString 为win.ini初始化文件中指定的条目取得字串 GetShortPathName 获取指定文件的短路径名 GetSystemDirectory 取得Windows系统目录(即System目录)的完整路径名 GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用 GetTempPath 获取为临时文件指定的路径 GetVolumeInformation 获取与一个磁盘卷有关的信息 GetWindowsDirectory 获取Windows目录的完整路径名 hread 参考lread hwrite 参考lwrite函数 lclose 关闭指定的文件 lcreat 创建一个文件 llseek 设置文件中进行读写的当前位置 LockFile 锁定文件的某一部分,使其不与其他应用程序共享 LockFileEx 与LockFile相似,只是它提供了更多的功能 lopen 以二进制模式打开指定的文件 lread 将文件中的数据读入内存缓冲区 lwrite 将数据从内存缓冲区写入一个文件 LZClose

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论