温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
本文将针对微软(Microsoft)旗下的操作系统(Windows)及办公软件(Office)批量激活的原理及实现进行阐述。
一、密钥管理服务(KMS)
KMS 是用于在本地网络上激活 Microsoft 产品,无需连接到 Microsoft 的服务,可以激活物理计算机和虚拟机(但计算机数量必须达到或超过激活阈值,Server 系列为 5 台,Windows 系列为 25 台),KMS 客户端安装 KMS 客户端密钥(通用批量许可证密钥,GVLK)后通过使用 DNS 或静态配置找到 KMS 服务器,然后通过使用远程过程调用(RPC)与它联系并尝试激活它。
KMS 最大的优点是,当 KMS 创建后,局域网内计算机激活只会与 KMS 服务器联系,而不会与 Microsoft 服务器产生连接,这样对于无外网连接的计算机或者特别对安全有把控的计算机特别有用处。
二、KMS 代理
虽然 KMS 极大减少了计算机管理员的激活工作,但官方 KMS 服务还是有很多限制,为此市面上也出现了无限制的 KMS 服务代理,比如 py-kms、vlmcsd 等等。
1、py-kms 概述
py-kms 是一个用 python 编写的免费的开源 KMS 服务器模拟器,支持 KMS 协议版本 4、5 和 6,诞生的目的是确保合法副本的所有者可以不受限制地使用他们的软件,例如,如果您购买新的计算机或主板,并且由于硬件更改需要重新激活而不便从 Microsoft 服务器重新获取激活密钥等,因此 py-kms 既不需要激活密钥也不需要任何付款(但并不意味着允许运行非法的 Windows 副本)。
py-kms 支持激活以下产品:
- Windows Vista
- Windows 7
- Windows 8
- Windows 8.1
- Windows 10(1511/1607/1703/1709)
- Windows Server 2008
- Windows Server 2008 R2
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
- Microsoft Office 2010(VL 批量许可证)
- Microsoft Office 2013(VL 批量许可证)
- Microsoft Office 2016(VL 批量许可证)
注:MSDN 下载 Office 不是 VL 版本
2、py-kms 原理
在网络中的计算机上运行 py-kms(即 KMS 服务)--> 在客户端(即需要激活的计算机)上安装产品并输入 GVLK --> 配置客户端以使用 KMS 服务器 --> 激活
请注意,KMS 服务器必须是与客户端不同的计算机,且激活有效期为 180 天,要保持激活状态,客户端必须每 180 天至少连接一次 KMS 服务器以更新其激活状态,为此,应该保证网络上的客户端始终可以访问 KMS 服务器。
3、py-kms 安装
Ubuntu:
# apt-get install python-pip git
# pip install pytz argparse pysqlite //安装依赖环境
# git clone https://github.com/SystemRage/py-kms //从 GitHub 克隆 pykms
CentOS:
# yum -y install git
# yum -y install python-argparse python-pytz //安装依赖环境
# git clone https://github.com/SystemRage/py-kms //从github克隆pykms
py-kms 有两个版本,Python3 及 Python2,视实际需要选择(建议 Python3),比如 Pyhthon3 开启服务:
# python3 server.py
用法
① 启动服务器
python server.py [IPADDRESS] [PORT]
默认 IPADDRESS 为“0.0.0.0”(所有接口),默认端口为“1688”。
② 运行客户端(仅用于测试目的)
python client.py IPADDRESS [PORT]。
参数 IPADDRESS 始终是必需的,默认端口是“1688”。
③ 显示帮助页面
python server.py -h
python client.py -h
④ 生成随机的 HWID 类型
python server.py -w random
或
python randomHWID.py
⑤ 生成随机的 EPID 类型
python randomPID.py
3、py-kms 激活
开启客户端激活之前,应先把 py-kms 服务器的 1688 端口打开,如果觉得 IP 不好记还可以在 DNS 处绑定域名,然后启动 py-kms:
# python3 py-kms/py3-kms/server.py
此时不会有回显,执行 Check KMS 验证一下:
验证成功,下面执行客户端操作。
① Windows
进入 系统盘/windows/system32 目录,找到 cmd 点右键,左键单击“以管理员身份运行”:
根据系统版本安装密钥:
slmgr /ipk ipk DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ
设置 KMS 服务器为 py-kms 服务器地址(若是域名请确保客户端可以解析):
slmgr /skms kms.owenss.tech
激活:
slmgr /ato
② Office
进入 系统盘/windows/system32 目录,找到 cmd 点右键,左键单击“以管理员身份运行”:
进入 Office 安装目录:
cd C:\Program Files\Microsoft Office (x86)\Office16
位置可能依版本不同而不同,看看目录下有没有 ospp.vbs 即可确定。
设置 KMS 服务器为 py-kms 服务器地址(若是域名请确保客户端可以解析):
cscript ospp.vbs /sethst:kms.owenss.tech
激活:
cscript ospp.vbs /act
PS:如果在激活 Windows 后再安装 Office 可以实现自动激活 Office。
4、后台运行
上面讲到运行以下命令即可启动 py-kms 服务:
# python server.py
但这种方式一旦关闭命令行,服务随之停止,故可以考虑通过 supervisor 来守护进程:
# cp -r py-kms /usr/local/ #复制py-kms文件夹到 /usr/local 文件夹下
# yum -y install python-setuptools #安装 supervisor
# easy_install supervisor
# echo_supervisord_conf > /etc/supervisord.conf #生成supervisor的配置文件
# vim /etc/supervisord.conf
最尾巴加入:
[program:pykms]
command=python /usr/local/py-kms/server.py
autorestart=true
user=root
# supervisord #保存配置文件后,启动 supervisor
Supervisord is running as root and it is searching
# supervisorctl #当前守护的进程,其中有如下 pykms 就成功
pykms RUNNING pid 5110,uptime 0:33:22
>supervisor
5、Q&A
Q:激活时提示 “ERROR CODE: 0x80070005 ERROR DESCRIPTION: Run the following: cscript ospp.vbs /ddescr:0x80070005”
A:运行命令注意以管理员身份运行
。
你可能还需要:
参考文章:
1、《py-kms Manual》
2、《Windows GVLK 密钥》
3、《Office GVLK 密钥》
4、《如何在 Linux 服务器上搭建KMS激活服务》
KMS激活Windows/Office原理及搭建方法 - Welcome to Wan's world