打印本文 关闭窗口 | |
利用139端口来远程重起NT服务器 | |
作者:陈鹏 文章来源:eNet 点击数 更新时间:2009/9/11 23:24:12 文章录入:陈鹏 责任编辑:陈鹏 | |
|
|
最近很多朋友问我:NT的机器如果远程管理软件坏了,怎么重起呢?其实,如果服务器的139端口开着,重起是很简单的,步骤如下:
1、net use \\xxx.xxx.xxx.xxx\ipc$ password /user:username 建立一个IPC会话
2、net use H: \\xxx.xxx.xxx.xxx\c$ 将对方的C盘映射为自己的H盘
3、copy con h:\reboot.bat iisreset /reboot CTRL+Z 在对方的C盘上生成了一个能重启计算机的文件
4、net time \\xxx.xxx.xxx.xxx 得到对方的时间
5、at \\xxx.xxx.xxx.xxx 重起的时间 c:\reboot.bat 重起的时间等于对方的时间加几分钟
6、at \\xxx.xxx.xxx.xxx 看看任务加上没有
7、等...... 上面的第三步是only for WIN2K的,如果是NT,你需要用一个特定的重起程序,我们可以自己编写一个reboot.exe来取代reboot.bat,原理很简单,代码如下: #include "stdio.h" #include "windows.h" int main() { //定义重起的时候发送给所有用户的消息 LPSTR msg="Reboot Tool By Lion Hook\nhttp://www.xici.net"; //尝试用最简单的API函数重起 if(ExitWindowsEx(EWX_REBOOT, 0))return TRUE; if(ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0))return TRUE; //因为上面的重起不成功,所以需要调整本进程的特权 HANDLE hToken; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY, &hToken)) return FALSE; //获取重起的特权SE_SHUTDOWN_NAME LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); //判断是NT内核还是9x内核,选择用不同的方式 if(!(GetVersion() & 0x80000000)) InitiateSystemShutdown(NULL, msg, 20, TRUE, TRUE); else if (!ExitWindowsEx(EWX_REBOOT, 0)) if(!ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0)) return FALSE; return TRUE; } 【责任编辑 彭凡】 |
|
打印本文 关闭窗口 |