VBScript script file này có nguy hiểm không

File đầu tiên:
On Error Resume Next


Dim Args, WshShell, BtnCode, strText, strTitle, nSecondsToWait, nType


Set Args=WScript.Arguments
Set WshShell=WScript.CreateObject("WScript.Shell")


If Args.Count<4 Or Args.Count>5 Then WScript.Quit(255)
strText=Args(0)
strTitle=Args(1)
If Args.Count=5 Then nSecondsToWait=Args(4) Else nSecondsToWait=0


nType=0
Select Case UCase( Left(Args(2), 1) )
case "W" nType=16
case "Q" nType=32
case "E" nType=48
case "I" nType=64
End Select


Select Case UCase( Args(3) )
case "OK" nType=nType+0
case "OKCANCEL" nType=nType+1
case "ABORTRETRYIGNORE" nType=nType+2
case "YESNOCANCEL" nType=nType+3
case "YESNO" nType=nType+4
case "RETRYCANCEL" nType=nType+5
End Select


WScript.Quit( WshShell.Popup(strText, nSecondsToWait, strTitle, nType) )

File thứ hai:
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
CONST wshOK =0
CONST VALUE_ICON_WARNING =16
CONST wshYesNoDialog =4
CONST VALUE_ICON_QUESTIONMARK =32
CONST VALUE_ICON_INFORMATION =64
CONST HKEY_LOCAL_MACHINE =&H80000002
CONST KEY_SET_VALUE =&H0002
CONST KEY_QUERY_VALUE =&H0001
CONST REG_SZ =1
CONST OfficeAppId = "59a52881-a989-479d-af46-f275c6370663"
CONST STR_SYS32PATH = ":\Windows\System32\"
CONST REG_SPP = "SOFTWARE\Microsoft\OfficeSoftwareProtectionPlatform"
'////////////////////////////////////////////////////////////////////////////////////////
CONST MSG_NOREGRIGHTS = "Insufficient rights to perform operation."
CONST MSG_ISCMD_ELEVATED = "Ensure cmd.exe is elevated (right click > run as administrator)."
CONST MSG_CREDENTIALFAILURE = "Connection failed with passed credentials."
CONST MSG_FILENOTFOUND = "File not found: "
CONST MSG_CREDENTIALERR = "Passing credentials not supported for this option."
CONST MSG_SEPERATE = "---------------------------------------------------------"
CONST MSG_PROCESSING = " "
CONST MSG_EXIT = " "
CONST MSG_UNSUPPORTED = "Unsupported command passed."
CONST MSG_SUCCESS = "Successfully applied setting."
CONST MSG_ACTATTEMPT = "Installed product key detected - attempting to activate the following product:"
CONST MSG_TOKACTATTEMPT = "Installed product key detected - attempting to token activate the following product:"
CONST MSG_NOKEYSINSTALLED = "<No installed product keys detected>"
CONST MSG_UNINSTALLKEYSUCCESS = "<Product key uninstall successful>"
CONST MSG_ACTSUCCESS = "<Product activation successful>"
CONST MSG_OFFLINEACTSUCCESS = "<Offline product activation successful>"
CONST MSG_KEYINSTALLSUCCESS = "<Product key installation successful>"
CONST MSG_PARTIALKEY = "Last 5 characters of installed product key: "
CONST MSG_UNINSTALLKEY = "Uninstalling product key for: "
CONST MSG_UNRECOGFILE = "Unrecognized file. Office 2010 licenses have an .xrm-ms file extension."
CONST MSG_INSTALLLICENSE = "Installing Office 2010 license: "
CONST MSG_INSTALLLICSUCCESS = "Office 2010 license installed successfully."
CONST MSG_SEARCHEVENTSKMS = "Searching for KMS activation events on machine: "
CONST MSG_SEARCHEVENTSRET = "Searching for Internet activation failure events on machine: "
CONST MSG_NOEVENTSSKMS = "No KMS activation events found on machine: "
CONST MSG_NOEVENTSRET = "No failure events found on machine: "
CONST MSG_OSPPSVC_NOINSTALL = "Error: The Software Protection Platform service is not installed."
CONST MSG_OSPPSVC_NORUN = "Error: The Software Protection Platform service is not running."
CONST MSG_ERRPARTIALKEY = "The last 5 characters of an installed product key are required to run this option. Run the /dstatus option to display the partial product key."
CONST MSG_KEYNOTFOUND = "<Product key not found>"
CONST MSG_CMID = "Client Machine ID (CMID): "
CONST MSG_NOLICENSEFOUND = "<No licenses found>"
CONST MSG_REMILID = "Removed Token-based Activation License with License ID (ILID): "
CONST MSG_NOTFOUNDILID = "License not found with License ID (ILID): "
'////////////////////////////////////////////////////////////////////////////////////////
CONST MSG_SKUID = "SKU ID: "
CONST MSG_LICENSENAME = "LICENSE NAME: "
CONST MSG_DESCRIPTION = "LICENSE DESCRIPTION: "
CONST MSG_LICSTATUS = "LICENSE STATUS: "
CONST MSG_LICENSED = " ---LICENSED--- "
CONST MSG_UNLICENSED = " ---UNLICENSED--- "
CONST MSG_OOBGRACE = " ---OOB_GRACE--- "
CONST MSG_OOTGRACE = " ---OOT_GRACE--- "
CONST MSG_NONGENGRACE = " ---NON_GENUINE_GRACE--- "
CONST MSG_NOTIFICATION = " ---NOTIFICATIONS--- "
CONST MSG_EXTENDEDGRACE = " ---EXTENDED GRACE--- "
CONST MSG_LICUNKNOWN = " ---UNKNOWN--- "
CONST MSG_REMAINGRACE = "REMAINING GRACE: "
CONST MSG_ERRCODE = "ERROR CODE: "
CONST MSG_ERRDESC = "ERROR DESCRIPTION: "
CONST MSG_ERRUNKNOWN = "An unknown error occurred."
CONST MSG_ERRCODEVALUE = "An error code must start with '0x'. Example: 0xC004F009"
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
On Error Resume Next


Set WshShell = WSCript.CreateObject("WSCript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objNetwork = WSCript.CreateObject("WSCript.Network")


Dim globalResource, globalErr, foundSlUi, strSluiPath, strLocal, objWMI, objWMI1, wmiErr, productinstances, strValue
globalResource = ""
globalErr = ""
foundSlUi = False


currentDir = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\"))


Select Case WSCript.Arguments.Count
Case 0
verifyFileExists currentDir & "ospp.htm"
showIePopUp currentDir & "ospp.htm"
WScript.Quit
Case 1
var1 = WSCript.Arguments(0)
Case 2
var1 = WSCript.Arguments(0)
var2 = WSCript.Arguments(1)
Case 3
var1 = WSCript.Arguments(0)
var2 = WSCript.Arguments(1)
var3 = WSCript.Arguments(2)
Case 4
var1 = WSCript.Arguments(0)
var2 = WSCript.Arguments(1)
var3 = WSCript.Arguments(2)
var4 = WSCript.Arguments(3)
Case Else
End Select
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Call Main(var1,var2,var3,var4)
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Sub Main(strCommand,strMachine,strUser,strPassword)


On Error Resume Next


getEngine()
pProcessing()


getSlui()
strLocal = objNetwork.ComputerName
strCommand = LCase(strCommand)


Select Case strCommand
Case "/act", "/dstatus", "/dstatusall", "/dinstid", "/dtokils", _
"/remhst", "/stokflag", "/ctokflag", "/dcmid", "/dtokcerts"
connectWMI strMachine,strUser,strPassword,""
performLicAction strCommand,"",""
Case "/dhistoryacterr", "/dhistorykms"
connectWMI strMachine,strUser,strPassword,""
performLicAction strCommand,"",strMachine
Case "/puserops", "/duserops"
connectWMI strMachine,strUser,strPassword,"reg"
performRegAction strCommand
Case "/osppsvcrestart", "/osppsvcauto"
connectWMI strMachine,strUser,strPassword,""
performServiceAction strCommand
Case "/help", "help", "?", "/?", "/?"
verifyFileExists currentDir & "ospp.htm"
showIePopUp currentDir & "ospp.htm"
quitExit()
Case "/regmof"
registerMof "osppwmi.mof"
Case Else
pos = InStr(strCommand,":")
If pos <> 8 Then
globalPopFailure MSG_UNSUPPORTED,True
End If

getCommand = Left(strCommand,7)
Select Case getCommand
Case "/inpkey", "/unpkey", "/inslic", "/actcid", "/sethst", "/setprt", "/ddescr", "/rtokil", "/tokact"
strValue = Replace(strCommand,getCommand & ":","")
If strValue = "" Then
globalPopFailure MSG_UNSUPPORTED & " A value is required for: " & strCommand,True
End If

If getCommand = "/ddescr" Then
If Left(strValue,2) = "0x" Then
getDescription strValue,""
Else
WScript.Echo MSG_ERRCODEVALUE
quitExit()
End If
Else
connectWMI strMachine,strUser,strPassword,""
performLicAction getCommand,strValue,""
End If
Case Else
globalPopFailure MSG_UNSUPPORTED,True
End Select
End Select


End Sub
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function showIePopUp(strPath)


On Error Resume Next


Set objExplorer = CreateObject("InternetExplorer.Application")
With objExplorer
.Navigate strPath
.ToolBar = 0
.StatusBar = 0
.Width = 1000
.Height = 593
.Left = 1
.Top = 1
.Visible = 1
End With

End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function getEngine()


strEngine = LCase(Right(WScript.FullName,12))
If strEngine <> "\cscript.exe" Then
WshShell.Popup "Unable to perform operation. " & WSCript.ScriptName & " requires the cscript engine." & _
vbCr & "Command line example: cscript ospp.vbs ?", _
,WSCript.ScriptName, VALUE_ICON_WARNING
WScript.Quit
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function WMIDateStringToDate(dtmEventDate)


WMIDateStringToDate = CDate(Mid(dtmEventDate, 5, 2) & "/" & _
Mid(dtmEventDate, 7, 2) & "/" & Left(dtmEventDate, 4) _
& " " & Mid (dtmEventDate, 9, 2) & ":" & _
Mid(dtmEventDate, 11, 2) & ":" & Mid(dtmEventDate, _
13, 2))


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function getDescription(strSearch,cType)


If foundSlUi <> True Then
If cType <> "wmi" Then
globalPopFailure "slui.exe not found.",True
quitExit()
End If
Else
Set objScriptExec = WshShell.Exec (strSluiPath & " 0x2a " & strSearch)
readOut = objScriptExec.StdOut.ReadAll
quitExit()
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function checkRegRights(wmiObject,strKeyPath)


On Error Resume next


wmiObject.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_SET_VALUE, _
bHasAccessRight


If bHasAccessRight = True Then
'Success
Else
globalPopFailure MSG_NOREGRIGHTS & vbCr & MSG_ISCMD_ELEVATED,True
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function quitExit()


Set WshShell = Nothing
Set objFSO = Nothing
Set objNetwork = Nothing
Set objWMI = Nothing


WScript.Echo MSG_SEPERATE
WScript.Echo MSG_EXIT
WSCript.Quit


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function verifyFileExists(file)


If Not objFSO.FileExists(file) Then
If file = currentDir & "slerror.xml" Then
WScript.Echo "[" & MSG_FILENOTFOUND & file & " Unable to display error description.]"
ElseIf file = currentDir & "ospp.htm" Then
globalPopFailure MSG_FILENOTFOUND & vbCr & file,False
quitExit()
Else
globalPopFailure MSG_FILENOTFOUND & vbCr & file,True
End If
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function registerMof(strFile)


For Each Drv In objFSO.Drives
If Drv.DriveType=2 Then
If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "wbem\mofcomp.exe") Then
foundComp = True
strMofExePath = Drv.DriveLetter & STR_SYS32PATH & "wbem\mofcomp.exe"
If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "wbem\" & strFile) Then
foundMof = True
strOWmi = Drv.DriveLetter & STR_SYS32PATH & "wbem\" & strFile
Set objScriptExec = WshShell.Exec (strMofExePath & " " & strOWmi)
readOut = objScriptExec.StdOut.ReadAll
WScript.Echo readOut
quitExit()
End If
End If
End If
Next


If foundComp <> True Then
globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,":","") & "wbem\mofcomp.exe",True
Else
If foundMof <> True Then
globalPopFailure MSG_FILENOTFOUND & Replace(STR_SYS32PATH,":","") & "wbem\osppwmi.mof",True
End If
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function pProcessing()


WScript.Echo MSG_PROCESSING
WScript.Echo MSG_SEPERATE

End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function getSlui()


For Each Drv In objFSO.Drives
If Drv.DriveType=2 Then
If objFSO.FileExists(Drv.DriveLetter & STR_SYS32PATH & "slui.exe") Then
strSluiPath = Drv.DriveLetter & STR_SYS32PATH & "slui.exe"
foundSlUi = True
Exit For
End If
End If
Next


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function InstallKMSLicense(objSPP,licFile)


WScript.Echo MSG_INSTALLLICENSE & licFile


LicenseData = ReadAllTextFile(licFile)
sppErrHandle()


objSpp.InstallLicense(LicenseData)
sppErrHandle()

End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
' Returns the encoding for a givven file.
' Possible return values: ascii, unicode, unicodeFFFE (big-endian), utf-8
Function GetFileEncoding(strFileName)
Dim strData
Dim strEncoding


Set oStream = CreateObject("ADODB.Stream")


oStream.Type = 1 'adTypeBinary
oStream.Open
oStream.LoadFromFile(strFileName)


' Default encoding is ascii
strEncoding = "ascii"


strData = BinaryToString(oStream.Read(2))


' Check for little endian (x86) unicode preamble
If (Len(strData) = 2) and strData = (Chr(255) + Chr(254)) Then
strEncoding = "unicode"
Else
oStream.Position = 0
strData = BinaryToString(oStream.Read(3))


' Check for utf-8 preamble
If (Len(strData) >= 3) and strData = (Chr(239) + Chr(187) + Chr(191)) Then
strEncoding = "utf-8"
End If
End If


oStream.Close


GetFileEncoding = strEncoding

End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
' Converts binary data (VT_UI1 | VT_ARRAY) to a string (BSTR)
Function BinaryToString(dataBinary)
Dim i
Dim str


For i = 1 To LenB(dataBinary)
str = str & Chr(AscB(MidB(dataBinary, i, 1)))
Next


BinaryToString = str

End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
' Returns string containing the whole text file data.
' Supports ascii, unicode (little-endian) and utf-8 encoding.
Function ReadAllTextFile(strFileName)
Dim strData
Set oStream = CreateObject("ADODB.Stream")


oStream.Type = 2 'adTypeText
oStream.Open
oStream.Charset = GetFileEncoding(strFileName)
oStream.LoadFromFile(strFileName)


strData = oStream.ReadText(-1) 'adReadAll


oStream.Close


ReadAllTextFile = strData

End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function sppErrHandle(strCommand)


globalErr = Hex(Err.Number)


Select Case Err.Number
Case 0
'Success
Select Case strCommand
Case "/act","/tokact"
WScript.Echo MSG_ACTSUCCESS
Case "/inpkey"
WScript.Echo MSG_KEYINSTALLSUCCESS
quitExit()
Case "/inslic"
WScript.Echo MSG_INSTALLLICSUCCESS
quitExit()
Case "/sethst","/setprt","/remhst","/stokflag","/ctokflag"
WScript.Echo MSG_SUCCESS
quitExit()
Case "/rtokil"
WScript.Echo MSG_REMILID & UCase(strValue)
quitExit()
Case "/unpkey"
WScript.Echo MSG_UNINSTALLKEYSUCCESS
quitExit()
Case Else
End Select
Case Else
verifyFileExists currentDir & "slerror.xml"
getResource("err" & "0x" & globalErr)
If globalResource = "" Then
If Len(globalErr) <> "8" Then
WScript.Echo MSG_ERRDESC & MSG_ERRUNKNOWN
Else
If foundSlUi = True Then
WScript.Echo MSG_ERRCODE & "0x" & globalErr
WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:0x" & globalErr
Else
WScript.Echo MSG_ERRCODE & "0x" & globalErr
End If
End If
Else
WScript.Echo MSG_ERRCODE & "0x" & globalErr
Wscript.Echo MSG_ERRDESC & globalResource
End If

If strCommand = "/dtokcerts" Or strCommand = "/ignore" Then
quitExit()
End If
End Select


If globalErr = "C004F074" Then
WScript.Echo "To view the activation event history run: cscript " & WScript.ScriptName & " /dhistorykms"
End If


globalResource = ""
globalErr = ""
Err.Clear


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function ErrHandle()


globalErr = Hex(Err.Number)
sppErrHandle()


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function wmiErrHandle()


Select Case Err.Number
Case 0
'Successs
Case 424
globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & MSG_CREDENTIALFAILURE,True
Case Else
If Err.Description <> "" Then
globalPopFailure MSG_ERRCODE & Err.Number & vbCr & MSG_ERRDESC & Err.Description,True
Else
globalPopFailure "An error occurred while making the connection." & vbCr & MSG_ERRCODE & Err.Number,True
End If
End Select


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function setRegValue(wmiObject,opsValue,strValueName)


On Error Resume Next


Err.Clear()
strKeyPath = REG_SPP


Select Case strValueName
Case "UserOperations"
wmiObject.CreateKey HKEY_LOCAL_MACHINE,strKeyPath
wmiObject.SetDWORDValue HKEY_LOCAL_MACHINE,_
strKeyPath,strValueName,opsValue
Case Else
End Select


wmiErrHandle()
WScript.Echo MSG_SUCCESS
quitExit()


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function getResource(resource)


On Error Resume Next
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.load(currentDir & "slerror.xml")
Set ElemList = xmlDoc.getElementsByTagName(resource)
resValue = ElemList.item(0).text
globalResource = resValue


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function globalPopSuccess(strSuccess,boolQuit)


If boolQuit = True Then
WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION
quitExit()
Else
WshShell.Popup strSuccess,,WScript.ScriptName, wshOK + VALUE_ICON_INFORMATION
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function globalPopFailure(strFailure,boolQuit)


If boolQuit = True Then
WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING
quitExit()
Else
WshShell.Popup strFailure,,WScript.ScriptName, wshOK + VALUE_ICON_WARNING
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function connectWMI(strMachine,strUser,strPassword,ctype)


On Error Resume Next


If ctype = "" Then
If strMachine = "" Or LCase(strMachine) = LCase(strLocal) Then
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Else
If strUser = "" And strPassword = "" Then
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strMachine & "\root\cimv2")
Else
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMI = objSWbemLocator.ConnectServer _
(strMachine, "\root\cimv2", strUser, strPassword)
wmiErr = CStr(Hex(Err.Number))
If Len(wmiErr) = "8" Then
getDescription "0x" & wmiErr,"wmi"
End If
objWMI.Security_.ImpersonationLevel = 3
End If
End If
Else
If strUser <> "" Then
globalPopFailure MSG_CREDENTIALERR,True
End If


If strMachine = "" Or LCase(strMachine) = LCase(strLocal) Then
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & "." & "\root\default:StdRegProv")

Set objWMI1 = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Else
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strMachine & "\root\default:StdRegProv")

Set objWMI1 = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strMachine & "\root\cimv2")
End If
End If


wmiErrHandle()


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Private Function TkaGetSigner()


On Error Resume Next


Set TkaGetSigner = WScript.CreateObject("OSPPWMI.OSppWmiTokenActivationSigner")
If Hex(Err.Number) = "80020009" Then
globalPopFailure MSG_ERRCODE & "0x" & Hex(Err.Number) & vbCr & MSG_ERRDESC & Err.Description,True
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function TkaPrintCertificate(strThumbprint)


arrParams = Split(strThumbprint, "|")
WScript.Echo "Thumbprint: " & arrParams(0)
WScript.Echo "Subject: " & arrParams(1)
WScript.Echo "Issuer: " & arrParams(2)
vf = FormatDateTime(CDate(arrParams(3)), vbShortDate)
WScript.Echo "Valid From: " & vf
vt = FormatDateTime(CDate(arrParams(4)), vbShortDate)
WScript.Echo "Valid To: " & vt
WScript.Echo MSG_SEPERATE

End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function ExecuteQuery(strSelect,strWhere,strClass)

Err.Clear

If strWhere = "" Then
Set productinstances = objWMI.ExecQuery("SELECT " & strSelect & " FROM " & strClass)
Else
Set productinstances = objWMI.ExecQuery("SELECT " & strSelect & " FROM " & strClass & " WHERE " & strWhere)
End If

sppErrHandle ""


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function performLicAction(strCommand,strValue,strMachine)


On Error Resume Next


If strCommand = "/dhistorykms" Or strCommand = "/dhistoryacterr" Then
verifyFileExists currentDir & "slerror.xml"
If strCommand = "/dhistorykms" Then
'12288 = KMS Activation event id
eventCode = "12288"
strSrcEvents = MSG_SEARCHEVENTSKMS
strNoEvents = MSG_NOEVENTSSKMS
Else
'8200 = Internet Activation event id
eventCode = "8200"
strSrcEvents = MSG_SEARCHEVENTSRET
strNoEvents = MSG_NOEVENTSRET
End If

If strMachine <> "" Then
WScript.Echo strSrcEvents & strMachine
Else
WScript.Echo strSrcEvents & strLocal
End If

WScript.Echo "Event ID: " & eventCode
WScript.Echo vbCr
Set objEvents = objWMI.ExecQuery _
("Select * from Win32_NTLogEvent Where Logfile = 'Application' and " _
& "EventCode = '" & eventCode & "'")
If objEvents.Count > 0 Then
For each objEvent in objEvents
If strCommand = "/dhistoryacterr" Then
i = i + 1
dtmEventDate = objEvent.TimeWritten
strTimeWritten = WMIDateStringToDate(dtmEventDate)
WScript.Echo "Coordinated Universal Time Written: " & strTimeWritten
strReplCrs = Replace(objEvent.Message,vbCrLf,"")
WScript.Echo "MESSAGE: " & strReplCrs
strhr10 = Right(strReplCrs,10)
getResource("err" & strhr10)
If globalResource = "" Then
If foundSlUi = True Then
WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:" & strhr10
Else
WScript.Echo MSG_ERRDESC & "Not available."
End If
Else
Wscript.Echo MSG_ERRDESC & globalResource
End If
WScript.Echo MSG_SEPERATE
Else
strhr10 = Mid(objEvent.Message,90,10)
strReplCrs = Replace(objEvent.Message,vbCrLf,"")
If Right(strReplCrs,2) = " 5" Then
strReplStrs = Replace(strReplCrs,"The client has sent an activation request to the key management service machine.Info:","")
dtmEventDate = objEvent.TimeWritten
strTimeWritten = WMIDateStringToDate(dtmEventDate)
WScript.Echo "Coordinated Universal Time Written: " & strTimeWritten
intColon = InStr(strReplStrs,":")
strErrHost = Left(strReplStrs,intColon)
strErrHost = Trim(strErrHost)
strErrHost = Replace(strErrHost,":","")
WScript.Echo "ERROR/HOST: " & strErrHost
Select Case strhr10
Case "0x00000000"
WScript.Echo MSG_ERRDESC & "N/A"
Case Else
getResource("err" & strhr10)
If globalResource = "" Then
If foundSlUi = True Then
WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:" & strhr10
Else
WScript.Echo MSG_ERRDESC & "Not available."
End If
Else
Wscript.Echo MSG_ERRDESC & globalResource
End If
End Select
WScript.Echo MSG_SEPERATE
End If
End If
Next
Else
WScript.Echo MSG_SEPERATE
If strMachine <> "" Then
WScript.Echo strNoEvents & strMachine
Else
WScript.Echo strNoEvents & strLocal
End If
WScript.Echo MSG_SEPERATE
End If
quitExit()
End If


Set colListOfServices = objWMI.ExecQuery _
("Select * from Win32_Service ")
For Each objService in colListOfServices
If objService.Name = "osppsvc" Then
installed = True
If LCASE(objService.State) = "running" Then
running = True
End If
Exit For
End If
Next

If installed <> True Then
globalPopFailure MSG_OSPPSVC_NOINSTALL,True
End If


If running <> True Then
Set colOperatingSystems = objWMI.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
strOsVersion = Left(objOperatingSystem.Version,3)
Exit For
Next

Select Case strOsVersion
Case "5.0", "5.1", "5.2"
globalPopFailure MSG_OSPPSVC_NORUN & vbcr & "Current State: " & objService.State & vbCr & "Run: cscript ospp.vbs /osppsvcrestart",True
Case Else
End Select
End If

Select Case strCommand
Case "/inpkey", "/dcmid", "/inslic", "/sethst", "/setprt", "/remhst", "/stokflag", "/ctokflag"
For Each objService in objWMI.InstancesOf("OfficeSoftwareProtectionService")
Set objOspp = objService
Exit For
Next
Case Else
End Select


sppErrHandle ""


If strCommand = "/inpkey" Then
i = i + 1
Err.Clear
objOspp.InstallProductKey(strValue)
SppErrHandle(strCommand)
ElseIf strCommand = "/dcmid" Then
If objOspp.ClientMachineID <> "" Or objOspp.ClientMachineID <> Null Then
WScript.Echo MSG_CMID & objOspp.ClientMachineID
Else
WScript.Echo MSG_CMID & "Not found."
End If
quitExit()
ElseIf strCommand = "/inslic" Then
i = i + 1
If Right(strValue,7) = ".xrm-ms" Then
verifyFileExists strValue
WScript.Echo MSG_INSTALLLICENSE & strValue
Else
globalPopFailure MSG_UNRECOGFILE,True
End If
LicenseData = ReadAllTextFile(strValue)
objOSpp.InstallLicense(LicenseData)
SppErrHandle(strCommand)
ElseIf strCommand = "/sethst" Then
i = i + 1
objOspp.SetKeyManagementServiceMachine(strValue)
SppErrHandle(strCommand)
ElseIf strCommand = "/setprt" Then
i = i + 1
objOspp.SetKeyManagementServicePort(strValue)
SppErrHandle(strCommand)
ElseIf strCommand = "/remhst" Then
i = i + 1
objOspp.ClearKeyManagementServiceMachine()
sppErrHandle ""
objOspp.ClearKeyManagementServicePort()
SppErrHandle(strCommand)
ElseIf strCommand = "/stokflag" Then
i = i + 1
objOspp.DisableKeyManagementServiceActivation(True)
SppErrHandle(strCommand)
ElseIf strCommand = "/ctokflag" Then
i = i + 1
objOspp.DisableKeyManagementServiceActivation(False)
SppErrHandle(strCommand)
ElseIf strCommand = "/dtokils" Then
Err.Clear
Set objWmiDate = CreateObject("WBemScripting.SWbemDateTime")
ExecuteQuery "ILID, ILVID, AuthorizationStatus, ExpirationDate, Description, AdditionalInfo","","OfficeSoftwareProtectionTokenActivationLicense"

For Each instance in productinstances
sppErrHandle ""
i = i + 1
WScript.Echo "License ID (ILID): " & instance.ILID
WScript.Echo "Version ID (ILvID): " & instance.ILVID
If Not IsNull(instance.ExpirationDate) Then
objWmiDate.Value = instance.ExpirationDate
If (objWmiDate.GetFileTime(false) <> 0) Then
WScript.Echo "Expiry Date: " & objWmiDate.GetVarDate
End If
End If
If Not IsNull(instance.AdditionalInfo) Then
WScript.Echo "Additional Info: " & instance.AdditionalInfo
End If
If Not IsNull(instance.AuthorizationStatus) And instance.AuthorizationStatus <> 0 Then
globalErr = CStr(Hex(instance.AuthorizationStatus))
sppErrHandle()
Else
WScript.Echo "Description: " & instance.Description
End If
WScript.Echo MSG_SEPERATE
Next
If i = 0 Then
WScript.Echo MSG_NOLICENSEFOUND
End If
quitExit()
ElseIf strCommand = "/rtokil" Then
Err.Clear
ExecuteQuery "ILID, ID","","OfficeSoftwareProtectionTokenActivationLicense"

For Each instance in productinstances
sppErrHandle ""
i = i + 1
If LCase(strValue) = LCase(instance.ILID) Then
instance.Uninstall
SppErrHandle(strCommand)
Else
WScript.Echo MSG_NOTFOUNDILID & strValue & " Run /dtokils to display the ILID for installed licenses."
End If
Next
If i = 0 Then
WScript.Echo MSG_NOLICENSEFOUND
End If
quitExit()
ElseIf strCommand = "/dtokcerts" Then
Err.Clear
Set objSigner = TkaGetSigner()
sppErrHandle(strCommand)
ExecuteQuery "ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon ","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL " & "AND LicenseIsAddon = FALSE","OfficeSoftwareProtectionProduct"

For each instance in productinstances
i = i + 1
sppErrHandle ""
iRet = instance.GetTokenActivationGrants(arrGrants)
If Err.Number = 0 Then
arrThumbprints = objSigner.GetCertificateThumbprints(arrGrants)
If Err.Number = 0 Then
For Each strThumbprint in arrThumbprints
TkaPrintCertificate strThumbprint
Next
Else
sppErrHandle ""
End If
Else
sppErrHandle ""
End If
WScript.Echo MSG_SEPERATE
Err.Clear
Next
ElseIf strCommand = "/tokact" Then
Err.Clear
Set objSigner = TkaGetSigner()
sppErrHandle "/ignore"
pos1 = InStr(strValue,":")
If pos1 = 0 Then
'PIN not passed
strThumbprint = strValue
Else
'PIN passed
strThumbprint = Left(strValue,pos1 - 1)
strPin = Replace(strValue,strThumbprint & ":","")
End If

ExecuteQuery "ID, Name, ApplicationId, PartialProductKey, Description, LicenseIsAddon ","ApplicationId = '" & OfficeAppId & "' " & "AND PartialProductKey <> NULL " & "AND LicenseIsAddon = FALSE","OfficeSoftwareProtectionProduct"

For each instance in productinstances
i = i + 1
sppErrHandle ""
WScript.Echo MSG_TOKACTATTEMPT
WScript.Echo MSG_SKUID & instance.ID
WScript.Echo MSG_LICENSENAME & instance.Name
WScript.Echo MSG_DESCRIPTION & instance.Description
WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
iRet = instance.GenerateTokenActivationChallenge(strChallenge)
If Err.Number = 0 Then
strAuthInfo1 = objSigner.Sign(strChallenge, strThumbprint, strPin, strAuthInfo2)
If Err.Number = 0 Then
iRet = instance.DepositTokenActivationResponse(strChallenge, strAuthInfo1, strAuthInfo2)
SppErrHandle(strCommand)
Else
sppErrHandle ""
End If
Else
sppErrHandle ""
End If
WScript.Echo MSG_SEPERATE
Next
Else
Err.Clear
If strCommand = "/dstatus" or strCommand = "/dstatusall" Then
ExecuteQuery "ID, ApplicationId, PartialProductKey, Description, Name, LicenseStatus, LicenseStatusReason, ProductKeyID, GracePeriodRemaining","","OfficeSoftwareProtectionProduct"
ElseIf strCommand = "/act" Then
ExecuteQuery "ID, ApplicationId, PartialProductKey, Description, Name","PartialProductKey <> null","OfficeSoftwareProtectionProduct"
ElseIf strCommand = "/unpkey" Then
ExecuteQuery "ID, ApplicationId, PartialProductKey, Name, ProductKeyID","","OfficeSoftwareProtectionProduct"
ElseIf strCommand = "/dinstid" Or strCommand = "/actcid" Then
ExecuteQuery "ID, ApplicationId, PartialProductKey, Name, OfflineInstallationId","PartialProductKey <> null","OfficeSoftwareProtectionProduct"
End If

For Each instance in productinstances
sppErrHandle ""
If (LCase(instance.ApplicationId) = OfficeAppId) Then
If instance.PartialProductKey <> "" Then
i = i + 1
End If
Select Case strCommand
Case "/act"
WScript.Echo MSG_ACTATTEMPT
WScript.Echo MSG_SKUID & instance.ID
WScript.Echo MSG_LICENSENAME & instance.Name
WScript.Echo MSG_DESCRIPTION & instance.Description
WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
instance.Activate
SppErrHandle(strCommand)
WScript.Echo MSG_SEPERATE
Case "/unpkey"
If Len(strValue) <> "5" Then
globalPopFailure MSG_ERRPARTIALKEY,True
End If
If UCase(strValue) = instance.PartialProductKey Then
y = y + 1
WScript.Echo MSG_UNINSTALLKEY & instance.Name
instance.UninstallProductKey(instance.ProductKeyID)
SppErrHandle(strCommand)
End If
Case "/dinstid"
WScript.Echo "Installation ID for: " & instance.Name & ": " & instance.OfflineInstallationId
WScript.Echo MSG_SEPERATE
Case "/actcid"
instance.DepositOfflineConfirmationId instance.OfflineInstallationId, strValue
If Err.Number = 0 Then
If telsuccess <> True Then
WScript.Echo MSG_LICENSENAME & instance.Name
WScript.Echo MSG_OFFLINEACTSUCCESS
telsuccess = True
End If
Else
WScript.Echo MSG_LICENSENAME & instance.Name
sppErrHandle ""
End If
WScript.Echo MSG_SEPERATE
Case "/dstatus", "/dstatusall"
getInstalled = False
verifyFileExists currentDir & "slerror.xml"
licSr = Hex(instance.LicenseStatusReason)
If strCommand = "/dstatusall" Then
getInstalled = True
WScript.Echo MSG_SKUID & instance.ID
WScript.Echo MSG_LICENSENAME & instance.Name
WScript.Echo MSG_DESCRIPTION & instance.Description
Else
If instance.ProductKeyID <> "" Then
getInstalled = True
WScript.Echo MSG_SKUID & instance.ID
WScript.Echo MSG_LICENSENAME & instance.Name
WScript.Echo MSG_DESCRIPTION & instance.Description
End If
End If

If getInstalled = True Then
Select Case instance.LicenseStatus
Case 0
WScript.Echo MSG_LICSTATUS & MSG_UNLICENSED
Case 1
WScript.Echo MSG_LICSTATUS & MSG_LICENSED
If licSr = 0 Then
WScript.Echo MSG_ERRCODE & licSr & " as licensed"
End If
Case 2
WScript.Echo MSG_LICSTATUS & MSG_OOBGRACE
Case 3
WScript.Echo MSG_LICSTATUS & MSG_OOTGRACE
Case 4
WScript.Echo MSG_LICSTATUS & MSG_NONGENGRACE
Case 5
WScript.Echo MSG_LICSTATUS & MSG_NOTIFICATION
Case 6
WScript.Echo MSG_LICSTATUS & MSG_EXTENDEDGRACE
Case Else
WScript.Echo MSG_LICSTATUS & MSG_LICUNKNOWN
End Select

If licSr <> "0" Then
WScript.Echo MSG_ERRCODE & "0x" & licSr
getResource("err" & "0x" & licSr)
If globalResource = "" Then
If foundSlUi <> True Then
WScript.Echo MSG_ERRDESC & "Not available."
Else
WScript.Echo MSG_ERRDESC & "Run the following: cscript ospp.vbs /ddescr:0x" & licSr
End if
Else
WScript.Echo MSG_ERRDESC & globalResource
End If
End If

If instance.PartialProductKey <> "" Then
WScript.Echo MSG_PARTIALKEY & instance.PartialProductKey
End If

If instance.GracePeriodRemaining <> 0 Then
dGrace = instance.GracePeriodRemaining / 60 / 24
WScript.Echo MSG_REMAINGRACE & Round(dGrace) & " days " & " (" & instance.GracePeriodRemaining & " minute(s) before expiring" & ")"
End If
WScript.Echo MSG_SEPERATE
End If
Case Else
End Select
End If
Next
End If


If strCommand = "/unpkey" And y = 0 Then
WScript.Echo MSG_KEYNOTFOUND
quitExit()
End If


If i = 0 Then
WScript.Echo MSG_NOKEYSINSTALLED
WScript.Echo MSG_SEPERATE
End If
quitExit()


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function performRegAction(strCommand)


On Error Resume Next


Set colListOfServices = objWMI1.ExecQuery _
("Select * from Win32_Service ")
For Each objService in colListOfServices
If objService.Name = "osppsvc" Then
installed = True
Exit For
End If
Next

If installed <> True Then
globalPopFailure MSG_OSPPSVC_NOINSTALL,True
End If


checkRegRights objWMI,REG_SPP


Select Case strCommand
Case "/puserops"
setRegValue objWMI,"1","UserOperations"
Case "/duserops"
setRegValue objWMI,"0","UserOperations"
End Select


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////
Function performServiceAction(strCommand)


On Error Resume Next


Set colListOfServices = objWMI.ExecQuery _
("Select * from Win32_Service ")
For Each objService in colListOfServices
If objService.Name = "osppsvc" Then
installed = True
Exit For
End If
Next

If installed <> True Then
globalPopFailure MSG_OSPPSVC_NOINSTALL,True
End If


Set objService = Nothing
Set colListOfServices = Nothing


If strCommand = "/osppsvcauto" Then
Set colListOfServices = objWMI.ExecQuery _
("Select * from Win32_Service where StartMode = 'Manual' or StartMode = 'Disabled'")
For Each objService in colListOfServices
If LCase(objService.Name) = "osppsvc" Then
foundOsppNonAuto = True
objService.Change , , , , "Automatic"
WScript.Sleep(15000)
Exit For
End If
Next
If foundOsppNonAuto <> True Then
WScript.Echo "Service startup type already set to automatic: Office Software Protection Platform"
quitExit()
End If

Set objService = Nothing
Set colListOfServices = Nothing
Set colListOfServices = objWMI.ExecQuery _
("Select * from Win32_Service where StartMode = 'Auto'")
For Each objService in colListOfServices
If LCase(objService.Name) = "osppsvc" Then
foundOsppAuto = True
WScript.Echo "Successfully set service startup to automatic:" & objService.DisplayName
quitExit()
End If
Next

If foundOsppAuto <> True Then
WScript.Echo "Unsuccessful setting service startup to automatic. " & MSG_ISCMD_ELEVATED
quitExit()
End If
Else
Set colListOfServices = objWMI.ExecQuery _
("Select * from Win32_Service ")
For Each objService in colListOfServices
If LCase(objService.Name) = "osppsvc" Then
Select Case LCase(objService.State)
Case "running"
objService.StopService()
WScript.Sleep(15000)
objService.StartService()
WScript.Sleep(15000)
Case Else
objService.StartService()
WScript.Sleep(15000)
End Select
Exit For
End If
Next

Set objService = Nothing
Set colListOfServices = Nothing
Set colListOfServices = objWMI.ExecQuery _
("Select * from Win32_Service ")
For Each objService in colListOfServices
If LCase(objService.Name) = "osppsvc" Then
If LCase(objService.State) = "running" Then
WScript.Echo "Successfully restarted: " & objService.DisplayName
quitExit()
Else
WScript.Echo "Unsuccessful restart: " & objService.DisplayName & ". Status: " _
& objService.State & ". " & MSG_ISCMD_ELEVATED
quitExit()
End If
Exit For
End If
Next
End If


End Function
'////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////////////////////////////////////////


Là newbie nên xin mọi người giúp đỡ.:studying:
 

0406

✩✩✩✩
lạ nhỉ. chắc nguy hiểm lắm đó :feel_good:
 

Thống kê

Chủ đề
100,988
Bài viết
467,966
Thành viên
339,952
Thành viên mới nhất
Sàn gỗ Sài Gòn
Top