0x01 前言
我一直想尝试使用windows 2016,以便测试其中的新功能,但无奈找不到激活方法,直至今天我才重新想起这个新的服务器系统。
我无意中发现一个打包好的KMS服务可以用于激活,该激活途径可以激活包括windows Vista与之后的所有windows操作系统,同时支持激活office 2010、2013和2016。
激活的镜像版本仅限批量授权版本,即VL版。
但需要注意的是,该方法不可用于商业用途!仅能用于实验性质的激活,如果有需要,请购买正版密钥。
在这里要推荐Office 365:
请注意!切勿将该服务在公网公开或用于商业用途,否则将有可能触犯法律。
0x02 准备
我这里使用centos作为基础系统,我使用的是由luodaoyi打包的docker镜像,因此还需要安装docker。以下是项目地址:
首先升级centos到最新版:
[root@kmspico ~]# yum update -y
然后安装docker并启动:
#安装 [root@kmspico ~]# yum install docker -y #设为开机启动 [root@kmspico ~]# systemctl enable docker #立即启动 [root@kmspico ~]# systemctl start docker
准备好docker后,先来搜索相关的镜像:
[root@kmspico ~]# docker search kms-server | grep luodaoyi docker.io docker.io/luodaoyi/kms-server kms server 14 [OK]
然后是pull到本地:
[root@kmspico kms-server]# docker pull luodaoyi/kms-server Using default tag: latest Trying to pull repository docker.io/luodaoyi/kms-server ... latest: Pulling from docker.io/luodaoyi/kms-server 88286f41530e: Pull complete 594d7a6fa71d: Pull complete Digest: sha256:4dbfe5c8409185cfd9aaa909887579d3953cd49329cb6531416a5cf031a6146c
0x03 运行
通过以下命令查询本地的docker镜像:
[root@kmspico ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/luodaoyi/kms-server latest 4f86d964ac52 3 weeks ago 4.09 MB
通过以下命令以守护模式启动该镜像:
[root@kmspico kms-server]# docker run -d docker.io/luodaoyi/kms-server 4be42484b6b0c14efd7df23fdc198b2a6f83e08229a1891ae1f6910851aed044
启动成功后会抛出CONTAINER ID,可以通过以下命令查看正在运行的容器:
[root@kmspico ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4be42484b6b0 docker.io/luodaoyi/kms-server "/bin/sh -c 'vlmcsdmu" 4 minutes ago Up 4 minutes 1688/tcp serene_carson
从上面的信息可以看出,该容器正在监听TCP 1688这个端口。可是当你检查系统端口监听的相关信息时却没有1688这个端口的相关信息:
[root@kmspico ~]# netstat -anp | grep 1688
再检查iptbales可以发现相关信息:
Chain POSTROUTING (policy ACCEPT 1225 packets, 73548 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0 0 0 MASQUERADE tcp -- * * 172.17.0.2 172.17.0.2 tcp dpt:1688
在iptables NAT表POSTROUTING链中可以发现docker是使用iptables做端口映射的,并不是使用socker监听端口。
那我就可以使用iptables将该端口往外映射,对外提供服务。首先查看我目前使用的网卡名称:
[root@kmspico ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:b6:b5:a0 brd ff:ff:ff:ff:ff:ff inet 10.1.1.123/24 brd 10.1.1.255 scope global dynamic ens160 valid_lft 5591sec preferred_lft 5591sec 3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 02:42:c8:df:62:d9 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever 11: vethf556937@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP link/ether 9a:b1:ef:a0:db:fb brd ff:ff:ff:ff:ff:ff link-netnsid 0
ens160就是我的网卡名称,那么iptables的转发命令如下:
iptables -t nat -A PREROUTING -i ens160 -p tcp --dport 1688 -j DNAT --to 172.17.0.2:1688
完成后记得保存并重新加载iptables:
#保存 [root@kmspico ~]# service iptables save #重新加载 [root@kmspico ~]# service iptables reload
最后,如果需要停止该docker镜像,请运行以下命令:
[root@kmspico ~]# docker stop 4be42484b6b0c14efd7df23fdc198b2a6f83e08229a1891ae1f6910851aed044 serene_carson [root@kmspico ~]# docker stop 4be42484b6b0c14efd7df23fdc198b2a6f83e08229a1891ae1f6910851aed044
输入docker stop后按两下TAB键,找到相关的ID,复制到命令行中即可。
0x04 激活
windows会以180天为一个周期,循环询问KMS服务器以激活自身,所以请为你的KMS服务器配置一个固定IP或域名。
以管理员权限打开CMD窗口,并输入以下命令:
slmgr /skms 10.1.1.123
请将上面命令中的IP地址替换为你实际的IP或域名。
然后使用以下命令强制系统立即尝试激活:
slmgr /ato
通过以下命令可以查看KMS相关的日志:
[root@kmspico ~]# docker logs 4be42484b6b0c14efd7df23fdc198b2a6f83e08229a1891ae1f6910851aed044 2017-10-15 06:17:24: Listening on 0.0.0.0:1688 2017-10-15 06:17:24: vlmcsd 1111, built 2017-06-17 00:53:17 UTC started successfully 2017-10-15 06:49:43: IPv4 connection accepted: 10.1.1.124:49742. 2017-10-15 06:49:43: KMS v6.0 request from WIN-9A1DUCF4A0A for Windows Server 2016 Datacenter 2017-10-15 06:49:43: Sending ePID (randomized at program start): 06401-00206-522-593075-03-1045-9600.0000-0962017 2017-10-15 06:50:13: IPv4 connection closed: 10.1.1.124:49742.
至此,激活过程全部结束。到系统属性中可以检查激活的相关情况:
0x05 批量授权版本
在激活之前要确认系统版本是否为批量授权版本,也就是VL版。如果从MSDN i tell you这个站点中下载镜像,建议选择VL版,如:
文件名:cn_windows_10_multi-edition_vl_version_1709_updated_sept_2017_x64_dvd_100090774.iso 文件名:cn_windows_7_professional_with_sp1_vl_build_x64_dvd_u_677816.iso
文件名中带有VL字符的版本。
如果下载了非批量授权版本也没关系,只需要手动导入KMS Client Setup Key也可以使用KMS进行批量激活。不同版本的系统有不同的GVLK key,具体可以从微软官网找到:
找到相应的KMS Client Setup Key后使用管理员权限打开CMD窗口,执行以下命令即可导入KMS Client Setup Key至系统:
slmgr /ipk [your KMS Client Setup Key] #如Windows Server 2016 Datacenter slmgr /ipk CB7KF-BWN84-R7R2Y-793K2-8XDDG
请根据实际情况进行导入操作。如果不知道自己的系统版本,请在CMD窗口中执行以下命令:
wmic os get caption #如 PS C:\WINDOWS\system32> wmic os get caption Caption Microsoft Windows 10 专业版
导入key后再次激活即可。
0x06 结语
其他需要注意的事项请关注镜像制作者的博客:
最后,还需要提醒一句:
请注意!切勿将该服务在公网公开或用于商业用途,否则将有可能触犯法律。