Introduction
KMS(Key Management Service)是微软密钥管理服务,是在Windows Vista之后的产品中的一种新型产品激活机制。 诞生之后微软批量版软件不再能用序列号永久激活,而是需要定期连接 KMS 服务器,通常是180天。
搭建自己的KMS服务器可以提供免费甚至自主可控的激活,而避免激活工具可能包含病毒,享受原版系统。 XP可以直接序列号激活,Win7可以用OEM-SLIC2.1激活,Win10及Office则不能用以上方式完美激活,在TSforge但生前,伪造KMS成为最佳选项。
Dependence
微软官方原版镜像
- Windows 10/11 在官网提供镜像下载,且有MAS镜像
- MSDN,我告诉你 https://msdn.itellyou.cn/ 长期免费分享所有者自订的MSDN,需要P2P下载
- 利用学生身份可以尝试参与微软学生计划以更可靠的获得原版镜像的校验码
KMS工具包
- My Digital Life 论坛发起了伪造KMS的项目
- 这里推荐博主审计过的几个可靠实现:
- C版本 https://github.com/Wind4/vlmcsd
- python版本 https://github.com/SystemRage/py-kms
- python版本fork继承(将GUI改为WebUI) https://github.com/Py-KMS-Organization/py-kms
密钥
- 如果安装文件就是批量版一般自带一个VLK
- 如果是官网下的普通版本则需要搜一个VLK,任意皆可,这里给出参考
- Win7: FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
- Win10: W269N-WFGWX-YVC9B-4J6C9-T83GX
- Office2016: XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99
- Office2019: NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP
Process
准备KMS服务器
- 服务器可以是一台正经服务器,也可以是路由器或虚拟机,只要有待激活机器可到达的IP和端口即可
- 推荐使用 VirtualBox 或 VMware 安装 Ubuntu 虚拟机
部署KMS服务
下载KMS工具包(任选一个)
将KMS工具包复制到KMS服务器
- 真实服务器可用 RDP 或 Fileilla
- 虚拟机可用共享文件夹甚至直接拖拽
- 如果只复制需要的文件别忘了附属的DLL文件
启动KMS服务
- C版本根据操作系统和CPU选择相应可执行文件
- 如 binaries/Linux/intel/static/vlmcsd-x64-musl-static 不需要root权限
- 不报错即成功,否则请检查端口占用
- 服务会后台运行,注销可解除,但结束进程好像难以停止
- python版本的执行
python3 pykms_Server.py- Ubuntu18.04 开始自带默认 Python3, 也有 Python2 需要用
whereis查找 - logging 可能不能正确打印日志,不报错可认为正常
- 服务会随进程运行,结束进程即停止服务并解除端口占用
- Ubuntu18.04 开始自带默认 Python3, 也有 Python2 需要用
安装原版系统并激活
- 先正确安装Windows,可不输入密钥或输入任意VLK
- 连接网络
- 用管理员权限运行cmd或powershell
|
|
- /ato可能需要几分种,成功激活会提示,py-kms也会打印提示
- /xpr显示激活状态,剩余多少天
安装批量版Office并激活
- 首先正常安装Office的批量版
- Office2016 VLK: XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99
- 用管理员权限运行 cmd 或 powershell
|
|
- 其中 csript.exe 在
C:\Windows\system32, ospp.vbs 在MS Office 安装目录(例如C:\Program Files\Microsoft Office\Office16)
Hint
- vlmcsd-x64-musl-static中vlmcsd的字母d
- win7本机激活Office2016,IP应避开 127.0.0.1 和 localhost ,可选 127.0.0.2 等
- Anaconda 的 python 如果出问题,试试操作系统的 python3
- Win10 目前不能本机激活
- Win7 旗舰版尚未发现KMS激活方法
- py-kms 对于 21H2 和 Office2021 及以后需要自行补丁,在pykms_Base.py的164添加。
1 2 3 4 5# Get a name for SkuId, AppId. kmsdb = kmsDB2Dict() 164+ appName, skuName = str(applicationId), str(skuId) appitems = kmsdb[2] for appitem in appitems: