记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

Vbs脚本执行不同版本的Office激活任务(MAK激活)

2015-09-07 10:00

我们都知道微软部分产品可以使用不同的激活方式,对于企业内部的用户来说,会针对Office和windows os部署对应的kms服务进行激活,但是对于但是对于企业外部的用户来说,一般使用mak的激活方式,MAK的key是有数量限制的,用一个会少一个,所以我们建议少用,当然有人会说,将kms服务器的1688发布到外网不就可以对于外部的用户使用了么,这么敏感的信息发布到外网肯定不好,所以一般会使用Mak激活方式,使用mak的话,我们不能给用户远程来输入key,所以只能通过对应的vbs程序让用户自己执行。但是如果给用户的话,我们就无法控制,如果对激活程序不做特殊限制的话,那样就容易造成信息遗漏给企业造成不必要的损失,所以我们就定义激活程序绑定功能;在激活脚本中定义用户的mac地址,只要mac地址匹配了才能执行该对应的激活流程。需要注意的是我们首先需要从客户手里获取需要激活服务的机器Mac地址,然后在激活程序中定义该Mac地址才能执行后续代码的执行任务,匹配mac地址后,再获取用户office版本及安装路径,最后执行相关的office版本的mak key导入及激活流程。最后我们需要说明一下,因为用vbs脚本定义的激活程序,最后需要发送给用户自行执行,所以我们为了信息外漏,需要使用vbs2exe工具将激活程序转换格式为exe,这样用户就无法查看里面的相关信息了。具体见下:

一、首先是脚本分析:

如果对于office来说,我们都知道,目前使用最多的是office2010和office2013,而且在安装不同的系统版本的路径也是不一样的,所以我们为了保证能够执行成功;我们需要定义一个函数变量来判断office的安装路径及版本

因为我们安装的是office2013版本,所以获取到的版本号为15.0

如果是office2010版本,获取的版本号为14.0

代码:
SET wordApp=CreateObject("Word.Application.8")
msgbox wordApp.Version
msgbox wordApp.Path


我们代码获取office的版本及路径


然后同时获取到的office安装路径


然后我们定义需要对指定的mac地址做激活,所以我们也同样需要定义一个函数变量,来获取本地的mac地址
Set mc = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
For Each mo In mc
If mo.IPEnabled = True Then
'TracePrint "本机网卡MAC地址是: " & mo.MacAddress
GetMAC = mo.MacAddress
Exit For
End If
Next
msgbox getmac


执行代码


准备好前面两步就基本上好了,接下来我们只需要将两个函数变量整合判断;

将获取到的mac地址跟vbs脚本中指定的代码进行匹配,然后通过获取到的office版本及路径来判断执行mak key的导入及激活;

注:第一行GetMAC()  "MAC Address" 的话就是不等于的意思,任何机器都可以执行激活
如果将修改为=(等号)就是匹配的意思,只要MAC地址等于获取的MAC才能激活


if GetMAC() = "44:37-e6:20-f8:03" Then
SET Wshell=CreateObject("Wscript.Shell")
SET wordApp=CreateObject("Word.Application.8")
msgbox "mac address:" & GetMAC() & Chr(13) & "office version:" & wordApp.Version & Chr(13) & "office setup path:" & wordApp.Path
if wordApp.Version = "14.0" then
msgbox "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx "
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey: xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",0,True
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /act"
else
msgbox "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey: xxxxx-xxxxx-xxxx-xxxxx-xxxxx "
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /inpkey:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",0,True
Wshell.Run "cscript """ & wordApp.Path & "\ospp.vbs"" /act"
end if
msgbox "Active Success"
Else
msgbox "Active Failed"
End If
Function GetMAC()
GetMAC = ""
Dim mc,mo
Set mc = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
For Each mo In mc
If mo.IPEnabled = True Then
'TracePrint "本机网卡MAC地址是: " & mo.MacAddress
GetMAC = mo.MacAddress
Exit For
End If
Next
Set mc = nothing
End Function



接下来我们测试以下代码运行结果:

我们再次使用的是office2013的进行测试


单击确认执行下一步;开始导入mak key


Active Success

查看office状态


最后我们同事提到了一个问题说如果用户没有看见提示信息的话,会一直点,这样会给用户造成代码没有执行的假象,所以想在后行后给用户一个提示,所以再次修改代码

注:因为我们最终发送给用户的话会将一些Msgbox的信息注释,所以用户最后只会看见一个执行成功的显示;
CreateObject("Wscript.Shell").Popup "三秒钟关闭", 3, "MsgBox", 64


根据以上显示我们就可以替换需要显示的内容及自动退出的时间


待3秒提示完成后自动继续向下执行


继续完成Active的任务


我们最后再说一下,为了保险起见将vbs脚本通过工具转换成exe,这样就大大提高了安全


运行程序,运行打开---选择需要编译的vbs文件


打开vbs文件后,单机项目---编译


提示保存路径及格式默认为exe


保存后执行也正常


如果需要vbs2exe的转换工具需要下载附件,将扩展名从txt修改为7.z压缩模式,然后解压即可
知识来源: www.2cto.com/Article/201509/441017.html

阅读:72362 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“Vbs脚本执行不同版本的Office激活任务(MAK激活)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云