KMS activates computers on a local network, eliminating the need for individual computers to connect to Microsoft. To do this, KMS uses a client–server topology. KMS client computers can locate KMS host computers by DNS or static configration. when server qualify for KMS activation, it can provide the activation service.
With this principle many people developed KMS activetools, but some of them works not very well. It is even worth to see Malicious code in these tools. vlmcsd provide a KMS server simulator write with C language, which under the GNU license. It is also multi platform, so it can runing in Windows, linux, MacOS.
Contents
Deploy KMS service
Take Linux (CentOS 6.5) as an example:
1.choose compatible binary according to system version and CPU type. For example, my OS is CentOS 6.5 and the hardware platform is KVM visual machine(intel CPU), I should choose vlmcsd-x64-musl-static in \binaries\Linux\intel\static.
2.create a new folder ‘kms’ in /use/local.
mkdir -p /usr/local/kms
3.if binary is uploaded from local machine, it should have execute permission.
chmod u+x /usr/local/kms/vlmcsd-x64-musl-static
4.run the program
/usr/local/kms/vlmcsd-x64-musl-static
5.if you use iptables, you should open a port for this program
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1688 -j ACCEPT
Test
you can use vlmcs to test
vlmcs-Windows-x64.exe -v address of kms server
if server is correctly setuped, you can see such informations
Active
Start a Command Prompt as an Administrator, then type following command:
slmgr /skms address of kms server slmgr /ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx slmgr /ato slmgr /xpr
the kms client install key can be fond in Official Documents.
Others
if you want to enable autostart, you can import following script:
#!/bin/sh # chkconfig: 2345 90 10 # description: Start or stop the kms server # ### BEGIN INIT INFO # Provides: vlmcsd # Required-Start: $network $syslog # Required-Stop: $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Start or stop the kms server ### END INIT INFO name=kms-service path=/usr/local/kms/ bin=vlmcsd-x64-musl-static start(){ $path$bin RETVAL=$? if [ "$RETVAL" = "0" ]; then echo "$name start success" else echo "$name start failed" fi } stop(){ pid=`ps -ef | grep -v grep | grep -v ps | grep -i "${bin}" | awk '{print $2}'` if [ ! -z $pid ]; then kill -9 $pid RETVAL=$? if [ "$RETVAL" = "0" ]; then echo "$name stop success" else echo "$name stop failed" fi else echo "$name is not running" RETVAL=1 fi } status(){ pid=`ps -ef | grep -v grep | grep -v ps | grep -i "${bin}" | awk '{print $2}'` if [ -z $pid ]; then echo "$name is not running" RETVAL=1 else echo "$name is running with PID $pid" RETVAL=0 fi } case "$1" in 'start') start ;; 'stop') stop ;; 'status') status ;; 'restart') stop start RETVAL=$? ;; *) echo "Usage: $0 { start | stop | restart | status }" RETVAL=1 ;; esac exit $RETVAL