知识科普
vlmcsd 是由 C 语言编写的一款 KMS 模拟器,它可以运行在几乎任何系统中,比如:Linux、Android、FreeBSD、Solaris、Minix、Mac OS、iOS、Windows。
战前准备
战斗开始
1.首先根据使用的设备选择相应的程序,这里我使用的 CentOS 7 64位服务器,所以找到 binaries\Linux\intel\glibc
目录中的 vlmcsd-x64-glibc
。
注意:这里的 x86 和 x64 一定要根据机器的配置来选择。
2.将 vlmcsd-x64-glibc
上传到机器的 /data
目录下,并改名为 vlmcsd
,再使用下面命令给 vlmcsd
加执行权限,然后尝试执行。
1 2
| chmod u+x vlmcsd ./vlmcsd
|
如果执行 vlmcsd
显示类似下面的结果,那么 1688
端口可能被占用:
1 2 3
| Warning: [::]:1688: Address already in use Warning: 0.0.0.0:1688: Address already in use Fatal: Could not listen on any socket.
|
3.使用 ps
命令来查看执行的进程,命令如下:
如果显示类似下面的结果,即为正常运行:
1 2
| root 16336 0.0 0.0 8624 120 ? Ss 11:01 0:00 ./vlmcsd root 16390 0.0 0.0 112660 976 pts/0 R+ 11:03 0:00 grep --color=auto vlmcsd
|
4.将 vlmcsd
添加到开机启动并记录相关日志,使用到的命令如下:
1 2
| echo "/data/vlmcsd -l /var/log/vlmcsd.log > /dev/null 2>&1" >> /etc/rc.local chmod +x /etc/rc.local
|
注意:/data/vlmcsd
为 vlmcsd 的位置,/var/log/vlmcsd.log
为日志保存的位置。
5.至此 vlmcsd 已经搭建完成,重启服务器测试一下 vlmcsd 进程是否启动即可。
6.如果在 Windows 环境下可以使用客户端测试,在 binaries\Windows\intel
目录找到 vlmcs-Windows-x64.exe
文件,将其拖到 CDM
命令行中,并添加以下命令测试:
注意:-v
是输出详细信息,-l 1
表示发送 Windows 10 Enterprise G
的激活请求,kms.bfdz.ink
是我搭建好的 KMS 服务器绑定的网址。
如果返回类似下面内容,则表示 KMS 服务器搭建成功:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Request Parameters ==================
Protocol version : 6.0 Client is a virtual machine : No Licensing status : 2 (OOB grace) Remaining time (0 = forever) : 43200 minutes Application ID : 55c92734-d682-4d71-983e-d6ec3f16059f (Windows) SKU ID (aka Activation ID) : e0b2d383-d112-413f-8a80-97f373a5820c (Windows 10 Enterprise G) KMS ID (aka KMS counted ID) : 7ba0bf23-d0f5-4072-91d9-d55af5a481b6 (Windows 10 China Government) Client machine ID : b979c2cb-3a81-45fc-b38a-995556160dd7 Previous client machine ID : 00000000-0000-0000-0000-000000000000 Client request timestamp (UTC) : 2017-11-04 03:25:27 Workstation name : www.amazon.org N count policy (minimum clients): 25
Connecting to :1688 ... successful
Performing RPC bind ... ... NDR64 ... BTFN ... NDR32 ... successful Sending activation request (KMS V6) 1 of 1
Response from KMS server ========================
Size of KMS Response : 260 (0x104) Protocol version : 6.0 KMS host extended PID : 05426-03858-014-927327-03-1068-9200.0000-3502016 KMS host Hardware ID : 3A1C049600B60076 Client machine ID : b979c2cb-3a81-45fc-b38a-995556160dd7 Client request timestamp (UTC) : 2017-11-04 03:25:27 KMS host current active clients : 50 Renewal interval policy : 10080 Activation interval policy : 120
|
7.使用 KMS 服务器一键激活,使用管理员模式命令提示符(可以右击左下角徽标找到)执行下面的命令即可自动激活:
1 2
| slmgr /skms kms.bfdz.ink slmgr /ato
|
如果无法自动激活,需要首先到微软官网 KMS Client Setup Keys 获取对应版本的 KEY,然后执行下面命令激活:
1 2 3
| slmgr /skms kms.bfdz.ink slmgr /ipk xxxxx-xxxxx-xxxxx-xxxxx slmgr /ato
|
注意:xxxxx-xxxxx-xxxxx-xxxxx
是在微软官网获取的 KEY
,如果微软官网没有找到要激活的版本,那么 KMS 服务器将无法激活该版本,如果提示 0x80070005
错误,那么是由于命令不是在 管理员模式命令提示符
下运行导致,kms.bfdz.ink
是我搭建好的 KMS 服务器绑定的网址。
如果不知道自己的系统是什么版本,可以使用以下命令查看:
8.为了方便激活,我这边准备了一个一键激活的批处理工具,只要保存下面的代码为 activate.bat
并以管理员身份运行即可:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @echo off
ver > C:\ver.txt findstr "6." C:\ver.txt >nul if %ERRORLEVEL% == 0 ( cscript /nologo %windir%/system32/slmgr.vbs -skms kms.vtrois.com:1688 sc query w32time | findstr RUNNING >null if %ERRORLEVEL% == 0 ( net start w32time ) w32tm /config /syncfromflags:manual /manualpeerlist:"ntp.vtrois.com" net stop w32time net start w32time for /l %%i in (1,1,10) do ( w32tm /resync | findstr successfully >null if %ERRORLEVEL% == 1 ( goto _break ) else ( C:\Windows\system32\timeout.exe /t 1 /nobreak >null ) cscript /nologo %windir%/system32/slmgr.vbs -ato if %ERRORLEVEL% == 0 ( goto _break ) ) ) :_break del C:\ver.txt
|
注意:这个批处理中有一个时间同步的功能,如果时间不同步,可能导致激活失败。
作者:Vtrois