65.9K
CodeProject 正在变化。 阅读更多。
Home

快速 WMI 网络探测

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2009年8月11日

CPOL

1分钟阅读

viewsIcon

16212

扫描网络中的 PC,并远程启动 notepad.exe,以及通过 PSEXEC 实现交互式命令行 shell。

引言

本文将解释如何使用 WMI - **Windows 管理工具** 扫描网络中的开放共享并启动远程进程。该脚本将尝试创建远程进程:notepad.exe 和使用 PSEXEC 在 ComputerName 上运行一个交互式命令行 shell。

背景

我一直在寻找扫描网络开放共享(例如 C$\Admin$ 等)的代码,但没有找到太多。因此,我决定编写这个简单的 VBScript 代码来探测 PC,以查看是否可用执行/写入权限。

使用代码

创建一个名为 wmi.vbs 的文件

strComputer=Wscript.Arguments(0)
sleep=3
Wscript.Echo strComputer
Set filesys = CreateObject("Scripting.FileSystemObject")
Set objSWbemServices = GetObject ("WinMgmts:Root\Cimv2")
Set colProcess = objSWbemServices.ExecQuery ("Select * From Win32_Process")
For Each objProcess In colProcess
  If InStr (objProcess.CommandLine, WScript.ScriptName) <> 0 Then
    pid=objProcess.ProcessId
  End If
Next
On Error Resume Next
Err.Clear
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd /c ping -n " & sleep & " 127.0.0.1>nul & _
             taskkill /PID " & pid & " /F" ,0,false
Set objWMIService = GetObject("winmgmts:" & _
                    "{impersonationLevel=impersonate}!\\" & _
                    strComputer & "\root\cimv2")
if  Err.Number <> 0  then
    Wscript.Echo Err.Description
else
    Wscript.Echo "ok"
    Set objWMIService = GetObject("winmgmts:\\" & _
                        strComputer & "\root\cimv2:Win32_Process")
    objWMIService.Create "notepad.exe", null, null, intProcessID
    WshShell.Run "psexec \\" & strComputer &" cmd"
End If
WshShell.Run "taskkill /IM ping.exe /T",0,true

然后,通过传递你的计算机名称来启动它

cscript.exe wmi.vbs ComputerName

关注点

使用 WMI 的一个问题是,它会在 GetObject 上“挂起”几秒钟到几分钟 - 如果有数千台 PC 需要扫描,这将非常慢。

为了克服 WMI 挂起的问题,该脚本将在指定秒数(sleep=3)后通过 TASKKILL 偷偷地终止自身。最终结果是扫描速度快,并且不需要创建线程或编写复杂的代码。但最重要的是,“挂起”现象大大减少了!

要测试该脚本,请打开命令提示符并输入

net view /domain

这将返回网络上的域列表。要获取特定域的 PC 列表,请输入

net view /domain:yourdomain

此时,保存输出结果并创建一个名为 wmi.bat 的批处理文件

cscript.exe C:\wmi.vbs COMPUTER1
cscript.exe C:\wmi.vbs COMPUTER2
cscript.exe C:\wmi.vbs COMPUTER3
...
cscript.exe C:\wmi.vbs COMPUTERN
© . All rights reserved.