我们会经常碰到Windows操作系统或者office激活的问题,大多数人都会网上找一些key或者KMS激活工具,用key的话会出现各种key都无效,用KMS的话害怕下载下来的有病毒,或者下载下来后会被电脑的杀毒软件给误杀。下面我们来介绍如何自己搭建一台属于我们自己的KMS服务。
KMS激活原理
在使用 KMS 主机的环境中,批量激活过程如下:
- 将 KMS 安装到服务器上
- 将 KMS 主机密钥安装到 KMS 主机,然后联系微软进行激活
- KMS 启用后,每天启动的时候会在 DNS 中主次一条 SRV 记录
- 客户端通过配置的注册条目或者 DNS 中的 KMS SRV 记录发现 KMS 主机
- 客户端向 KMS 服务器的 TCP/1688 发送 RPC 请求,请求中包含一个加密的计算机 ID。如果该计算机尚未激活,并且 KMS 主机没有响应,客户端 2 小时后重新发送 请求。如果计算机已激活,客户端在 7 天后发送一个新请求。
- KMS 服务器将客户端计算机 ID 添加到一个表格中,并将激活计数返回给客户端
- 客户端将激活计数值与授权策略对比,如果满足激活阀值条件,则进行激活。
环境要求
安装
$ cd /data
$ pip install pytz
$ git clone https://github.com/SystemRage/py-kms
$ cd py-kms/py3-kms
运行
KMS Server
# 查看当前的系统版本: $ wmic os get caption # 默认IPADDRESS为“0.0.0.0”,默认端口为“1688”。 $ python3 server.py [IPADDRESS] [PORT] # 要运行客户端(仅用于测试目的),请使用 $ python client.py IPADDRESS [PORT]。 参数IPADDRESS始终是必需的,而默认端口是“1688”,所以有效的命令是:python client.py 0.0.0.0 # 要显示帮助页面,请键入:python3 server.py -h和python3 client.py -h # 要生成一个随机的HWID类型:python3 randomHWID.py或直接在服务器上(带-w选项)python server.py -w random # 要从任何服务器获取HWID,请使用客户端,例如键入: python3 client.py 0.0.0.0 1688 -m Windows81 -v INFO # 要生成一个随机的EPID类型: python3 randomPID.py
如果你的防火墙默认 DROP,那么需要手动放行1688端口
CentOS / Redhat / Fedora
$ iptables -I INPUT -p tcp --dport 1688 -j ACCEPT
Debian / Ubuntu / Mint
# 如果有 ufw 的话 $ ufw allow 1688
KMS Client
激活windows(这里以Win2012 DataCenter为例)
# 查看当前的系统版本 cmd> wmic os get caption # 安装公钥 cmd> slmgr /ipk D2N9P-3P6X9-2R39C-7RTCD-MDVJX # 指定KMS服务器 cmd> slmgr /skms 你的KMS服务端主机的IP或者域名 # 请求KMS服务器进行激活 cmd> slmgr /ato # 显示详细的许可证信息 cmd> slmgr /xpr cmd> slmgr -dlv
激活Office
以 64 位的 Office2016 为例,进入 Office 目录
cmd> cd "C:\Program Files\Microsoft Office\Office16" cmd> cscript ospp.vbs /sethst:你的KMS服务端主机的IP或者域名 cmd> cscript ospp.vbs /act