Licencias GVLK de Microsoft con vlmcsd
El mecanismo de licencias GVLK (por volumen) de Microsoft siempre me pareció algo difícil de entender. Aprovechando que mi instituto ha adquirido un paquete de licencias de Microsoft, decidí que era el momento de experimentar con él.
Activación de productos Microsoft
Los productos de Microsoft necesitan ser activados. Una de las posibilidades es la activación por internet, en la que el producto se conecta a los servidores de Microsoft periódicamente para comprobar si su licencia es válida. Tras cada activación, el producto permanece activado por varias semanas o meses.
Licencias GLVK y servidores KMS
Para particulares y entornos SOHO, es aceptable introducir un número de licencia en cada ordenador y producto, pero para grandes empresas se necesita un mecanismo para activar multitud de ordenadores a la vez, preferiblemente con la misma licencia (para poder clonar equipos). Además, no siempre está disponible la conexión a Internet.
Una empresa puede instalar un servidor KMS, que es un sofware facilitado por Microsoft para que las licencias puedan activarse en la propia red local. Este servidor solo activa las licencias que la empresa ha contratado.
Vlmscd
vlmscd es una implementación independiente del protocolo de activación de licencias GLVK. Incluye un cliente para simular peticiones (vlmcs) y un servidor (vlmcsd). El servidor activa todas las solicitudes de licencia, y puede compilarse para una gran variedad de plataformas.
Existen otros productos similares, como py-kms. Su manual explica muy bien el funcionamiento de KMS.
Instalación en una Raspberry Pi
- El binario puede obtenerse compilando el código fuente, pero también se ofrecen precompilados. Para mi Raspberry Pi 4 con Raspbian he utilizado vlmcsd-armv7el-glibc.
He instalado el binario en el directorio
/opt/vlmcsd
, y he creado un usuario para el servicio.$ sudo adduser vlmcsd $ sudo mkdir /opt/vlmcsd $ sudo wget -O /opt/vlmcsd/vlmcsd-armv7el-glibc "https://github.com/kkkgo/vlmcsd/raw/master/binaries/Linux/arm/little-endian/glibc/vlmcsd-armv7el-glibc" $ sudo ln -s /opt/vlmcsd/vlmcsd-armv7el-glibc /opt/vlmcsd/vlmcsd $ sudo chmod +x /opt/vlmcsd/vlmcsd* $ sudo chown -R vlmcsd:vlmcsd /opt/vlmcsd
Para que se ejecute al inicio, he añadido un servicio de
systemd
. Configuro el servicio para que las trazas acaben ensyslog
.[Unit] Description=vlmcsd kms server Requires=networking.service [Service] Type=forking User=vlmcsd ExecStart=/opt/vlmcsd/vlmcsd -v -l syslog [Install] WantedBy=multi-user.target
Habilito (para el próximo reinicio) y activo el servicio
$ sudo systemctl daemon-reload $ sudo systemctl enable vlmcsd $ sudo systemctl start vlmcsd
Tras esto compruebo que el servicio se ha iniciado correctamente
$ systemctl status vlmcsd.service ● vlmcsd.service - vlmcsd kms server Loaded: loaded (/lib/systemd/system/vlmcsd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2019-12-19 08:48:50 CET; 1h 7min ago Process: 7626 ExecStart=/opt/vlmcsd/vlmcsd -v -l syslog (code=exited, status=0/SUCCES Main PID: 7627 (vlmcsd) Tasks: 1 (limit: 4915) CGroup: /system.slice/vlmcsd.service └─7627 /opt/vlmcsd/vlmcsd -v -l syslog dic 19 08:48:50 PI systemd[1]: Starting vlmcsd kms server... dic 19 08:48:50 PI vlmcsd[7627]: vlmcsd 1112, built 2018-10-20 09:49:18 UTC starte dic 19 08:48:50 PI systemd[1]: Started vlmcsd kms server.
Configuración de los clientes
Configuración manual de los clientes
Los productos de Microsoft deben ser configurados para utilizar el nuevo sevidor KMS.
Configuración por autodescubrimiento DNS
Es posible configurar una entrada SRV
en el servidor DNS para que los clientes localicen el servidor KMS. Para ello, hay que definir el servidor _vlmcs._tcp
en el dominio de los equipos (suele definirlo el servidor de DHCP)
En mi Raspberry tengo ya instalado Pihole, por lo que utilizo su servidor DNS para definir el registro SRV _vlmcs._tcp.Home
apuntando a vlmcs.Home
y su correspondiente registro A. El puerto por defecto del servidor es 1688
.
Defino también el registro SRV _vlmcs._tcp
, porque la verdad no sé muy bien cuál de los dos se está usando 🤔.
srv-host=_vlmcs._tcp,vlmcs,1688 srv-host=_vlmcs._tcp.Home,vlmcs.Home,1688 address=/vlmcs/vlmcs.Home/10.3.0.111
Ejemplo de uso
En una máquina virtual he instalado Office 2013, y he intentando activarla con procesador de comandos de Windows con privilegios de administrador. La licencia introducida puede conseguirse en la documentación de Microsoft.
C:\Program Files\Microsoft Office\Office15>cscript ospp.vbs /inpkey:yc7dk-g2np3-2qqc3-j6h88-gvgxt Microsoft (R) Windows Script Host versión 5.8 Copyright (C) Microsoft Corporation 1996-2006. Reservados todos los derechos. ---Processing-------------------------- --------------------------------------- <Product key installation successful> --------------------------------------- ---Exiting----------------------------- C:\Program Files\Microsoft Office\Office15>cscript ospp.vbs /act Microsoft (R) Windows Script Host versión 5.8 Copyright (C) Microsoft Corporation 1996-2006. Reservados todos los derechos. ---Processing-------------------------- --------------------------------------- Installed product key detected - attempting to activate the following product: SKU ID: b322da9c-a2e2-4058-9e4e-f59a6970bd69 LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel Last 5 characters of installed product key: GVGXT <Product activation successful> --------------------------------------- --------------------------------------- ---Exiting-----------------------------
En el servidor se consigue la siguiente traza:
Dec 19 10:13:49 PI vlmcsd[8156]: IPv4 connection accepted: 10.3.0.240:49187. Dec 19 10:13:49 PI vlmcsd[8156]: <<< Incoming KMS request Dec 19 10:13:49 PI vlmcsd[8156]: Protocol version : 4.0 Dec 19 10:13:49 PI vlmcsd[8156]: Client is a virtual machine : No Dec 19 10:13:49 PI vlmcsd[8156]: Licensing status : 2 (OOB grace) Dec 19 10:13:49 PI vlmcsd[8156]: Remaining time (0 = forever) : 43185 minutes Dec 19 10:13:49 PI vlmcsd[8156]: Application ID : 0ff1ce15-a989-479d-af46-f275c6370663 (Unknown) Dec 19 10:13:49 PI vlmcsd[8156]: SKU ID (aka Activation ID) : b322da9c-a2e2-4058-9e4e-f59a6970bd69 (Unknown) Dec 19 10:13:49 PI vlmcsd[8156]: KMS ID (aka KMS counted ID) : e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0 (Unknown) Dec 19 10:13:49 PI vlmcsd[8156]: Client machine ID : 7b523f81-f366-4703-9ba3-eb43b00554c5 Dec 19 10:13:49 PI vlmcsd[8156]: Previous client machine ID : 00000000-0000-0000-0000-000000000000 Dec 19 10:13:49 PI vlmcsd[8156]: Client request timestamp (UTC) : 2019-12-19 09:13:47 Dec 19 10:13:49 PI vlmcsd[8156]: Workstation name : alumno-PC Dec 19 10:13:49 PI vlmcsd[8156]: N count policy (minimum clients): 5 Dec 19 10:13:49 PI vlmcsd[8156]: >>> Sending response, ePID source = randomized at program start Dec 19 10:13:49 PI vlmcsd[8156]: Protocol version : 4.0 Dec 19 10:13:49 PI vlmcsd[8156]: KMS host extended PID : 03612-00206-255-636601-03-2107-17763.0000-2782018 Dec 19 10:13:49 PI vlmcsd[8156]: Client machine ID : 7b523f81-f366-4703-9ba3-eb43b00554c5 Dec 19 10:13:49 PI vlmcsd[8156]: Client request timestamp (UTC) : 2019-12-19 09:13:47 Dec 19 10:13:49 PI vlmcsd[8156]: KMS host current active clients : 10 Dec 19 10:13:49 PI vlmcsd[8156]: Renewal interval policy : 10080 Dec 19 10:13:49 PI vlmcsd[8156]: Activation interval policy : 120
Tras esto, la licencia queda activada y puede consultarse su estado
C:\Program Files\Microsoft Office\Office15>cscript ospp.vbs /dstatus Microsoft (R) Windows Script Host versión 5.8 Copyright (C) Microsoft Corporation 1996-2006. Reservados todos los derechos. ---Processing-------------------------- --------------------------------------- SKU ID: b322da9c-a2e2-4058-9e4e-f59a6970bd69 LICENSE NAME: Office 15, OfficeProPlusVL_KMS_Client edition LICENSE DESCRIPTION: Office 15, VOLUME_KMSCLIENT channel BETA EXPIRATION: 01/01/1601 LICENSE STATUS: ---LICENSED--- REMAINING GRACE: 179 days (259190 minute(s) before expiring) Last 5 characters of installed product key: GVGXT KMS machine name from DNS: vlmcs.Home:1688 Activation Interval: 120 minutes Renewal Interval: 10080 minutes KMS host caching: Enabled --------------------------------------- --------------------------------------- ---Exiting-----------------------------
Qué hacen los activadores alternativos de Office
Existen varios productos que se anuncian como activadores / crackers de productos de Microsoft. Tras este experimento se puede deducir que su forma de funcionamiento es:
- Instalan un servidor KMS local
- Determinan las versiones de Windows y Office instaladas
- Localizan las licencias GVLK apropiadas
- Utilizan
ossp.vbs
yslmgr
para instalar y activar dichas licencias - El servidor KMS queda habilitado como un servicio para futuras activaciones