Visual C++网络编程技术-电子教案-延霞 08

上传人:E**** 文档编号:89404548 上传时间:2019-05-24 格式:PPT 页数:19 大小:650KB
返回 下载 相关 举报
Visual C++网络编程技术-电子教案-延霞 08_第1页
第1页 / 共19页
Visual C++网络编程技术-电子教案-延霞 08_第2页
第2页 / 共19页
Visual C++网络编程技术-电子教案-延霞 08_第3页
第3页 / 共19页
Visual C++网络编程技术-电子教案-延霞 08_第4页
第4页 / 共19页
Visual C++网络编程技术-电子教案-延霞 08_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《Visual C++网络编程技术-电子教案-延霞 08》由会员分享,可在线阅读,更多相关《Visual C++网络编程技术-电子教案-延霞 08(19页珍藏版)》请在金锄头文库上搜索。

1、,远程关机和开机,授课教师:,网络编程,导入,在局域网管理软件中,一个最常用的功能就是远程关机和开机功能。一个管理员通常管理几十台电脑,当需要开机或关机时,如果一台一台的操作就太麻烦了,因此通常机房管理软件中都配备了远程开机或关机的功能,管理员只需在一台计算机上操作,就可以控制所有计算机开机、关机或者重启。本章,我们就来介绍一下怎样用C+编程实现远程关机和远程唤醒计算机的功能。,本章要点,远程关机shutdown 用木马程序实现远程关机 远程唤醒计算机,远程关机shutdown,shutdown命令 在Windows XP中,新增了一条命令行工具“shutdown”,其作用是“关闭或重新启动本

2、地或远程计算机”。利用它,我们不但可以关闭或重新启动计算机,还可以实现定时关机、远程关机。 例如,在30秒内关闭计算机名为RANRAN的机器命令是: shutdown s m RANRAN -t 30,为什么出现“拒绝访问”的情况?,要在客户计算机(被远程关闭的计算机)中赋予guest用户远程关机的权限。可利用Windows “组策略”或“管理工具”中的“本地安全策略”来实现。,代码详解InitiateSystemShutdown(),实现关闭或重启计算机的功能。如果函数调用成功,则返回值为TRUE;否则,返回值为FALSE。 BOOL InitiateSystemShutdown( LPTS

3、TR lpMachineName, LPTSTR lpMessage, DWORD dwTimeout, BOOL bForceAppsClosed, BOOL bRebootAfterShutdown ); 参数lpMachineName:指定以MULL终止的用来指定要关机的网络名称的字符串。如果为NULL,则该函数关掉本地计算机。 参数lpMessage:指向一个要显示在关机对话框中的消息的字符串。 参数 dwTimeout:指定对话框应该显示的延迟时间(按秒计)。 参数bForceAppsClosed:指定对变化未做保存的应用程序是否被强制关闭。如果这个参数为TRUE,则应用程序被关闭。

4、如果参数为FALSE,则显示一个对话框以提示用户关闭这些应用程序。 参数bRebootAfterShutdown:指定计算机关机之后是否立即重启。如果参数为TRUE,则计算机重启。如果参数为FALSE,则系统将所有高速缓存刷新到磁盘上,清除屏幕,并且显示一条消息,指示关掉电源是安全的。,设置进程访问权限,调用InitiateSystemShutdown()函数关闭远程计算机需要先获得SE_SHUTDOWN_ NAME权限。 涉及到的函数: OpenProcessToken() LookupPrivilegevalue() AdjustTokenPrivileges(),代码详解OpenProc

5、essToken()函数,此函数可以得到当前进程的访问令牌的句柄 BOOL OpenProcessToken( HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle ); 参数ProcessHandle:是要修改访问权限的进程句柄; 参数DesiredAccess:指定要进行的操作类型,如要修改令牌,需要指定本参数为TOKEN_ADJUST_PRIVILEGES。 参数TokenHandle:是返回的访问令牌指针;,代码详解AdjustTokenPrivileges()函数,调用此函数可以对这个访问令牌进行修改 BOOL

6、AdjustTokenPrivileges( HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength ); 参数TokenHandle:是访问令牌的句柄。 参数DisableAllPrivileges:决定是进行权限修改还是除能(Disable)所有权限。 参数NewState:指明要修改的权限 参数BufferLength:是结构PreviousState

7、的长度。 参数PreviousState:存放修改前的访问权限的信息,可空。 参数ReturnLength:为实际PreviousState结构返回的大小。,代码详解 LookupPrivilegevalue()函数,获得一个权限对应的LUID值 BOOL LookupPrivilegevalue( LPCTSTR lpSystemName, LPCTSTR lpName, PLUID lpLuid ); 参数lpSystemName:是系统的名称,如果是本地系统只要指明为NULL。 参数lpName:是指明了权限的名称 参数lpLuid:是返回LUID的指针。,远程关机木马,一个简单的木马程

8、序分为两个部分,一个是控制端程序,一个是木马程序。 木马程序接到控制端发来的关机命令,在本机执行关机动作,就实现了远程关机,代码详解ExitWindowEx()函数,ExitWindowsEx函数可以用来关闭系统 BOOL ExitWindowEx(UINT uFlags, DWORD dwReserved); 参数uFlags:用来指定关闭的类型,它的值有以下几种: EWX_FORCE:强制结束程序,可以在紧急情况下使用该类型,但可能会导致数据丢失。 EWX_LOGOFF:关闭所有进程,然后退出用户登陆。类似windows下的注销先项。 EWX_POWEROFF:关闭系统并关闭计算电源。 E

9、WX_REBOOT:关闭计算机并重新启动计算机。 EWX_SHUTDOWN:安全的关闭计算机。 参数dwReserved:为将来开发保留的数值,设为0即可。,代码详解获取操作系统版本信息,OSVERSIONINFO OsInfo; OsInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx( OsInfo中就存放着系统版本的信息,远程唤醒,远程唤醒,主要是通过向目标主机发送特殊格式的数据包(俗称魔术包)来实现的。 计算机关闭的时候,网卡可以仍然处于打开状态,并准备接收消息,也就是魔术包(Magic Packet)。 网卡一旦接收

10、到魔术包,就会试图启动计算机。 魔术包必须包含特定的字节顺序,它能够封装在任何封包(IPx、IP或者其他)中。 此功能依赖于硬件性能。,支持远程唤醒功能的硬件条件,主板和网卡必须都支持远程唤醒功能(目前一般的主板都支持这个功能) 需要在CMOS中作相应的设置。要将CMOS设置中的“Power Management Setup”的“Wake Up On LAN”或“Resume by LAN”项设置为“Enable”或“On” 必须要使用ATX电源。,程序界面,要想使用远程唤醒功能,首先必须知道要唤醒机器的MAC (Medium Access Control)地址,MAC地址由用户输入。,魔术包的结构,6字节的头部。这个头部仅是6字节的Oxff。 16X6字节数据。要产生这些数据,必须重复远程计算机的MAC地址16次,课堂练习题,在Windows XP中,新增了一条命令行工具,其作用是“关闭或重新启动本地或远程计算机”,这条命令行工具是 。 要修改一个进程的访问令牌,首先要获得进程访问令牌的句柄,这可以通过 函数得到。 要想使用远程唤醒功能,首先必须知道要唤醒机器的 。 远程唤醒需要向LAN中发送一个特定的封包,以便远程计算机能够接收到它,并且启动,该封包称为 。,Thank You !,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号