327 lines
14 KiB
Plaintext
327 lines
14 KiB
Plaintext
VLMCS(1) KMS Activation Manual VLMCS(1)
|
||
|
||
|
||
|
||
NAME
|
||
vlmcs - a client for testing and/or charging KMS servers
|
||
|
||
|
||
SYNOPSIS
|
||
vlmcs [ options ] [ target ] [ options ]
|
||
|
||
target can be one of the following:
|
||
|
||
hostname|ipaddress[:tcp-port] to query a specific KMS server
|
||
(example: vlmcs kms.example.com:1688).
|
||
.domain to automatically detect KMS servers via DNS for domain
|
||
(example: vlmcs .example.com). Please note the dot before
|
||
domain.
|
||
- (a single dash) to detect KMS servers in your own domain.
|
||
|
||
If you use ipaddress:port as the target, the ipaddress must be enclosed
|
||
in brackets if it contains colons, e.g. [2001:db8:dead:beef::1]:1688.
|
||
If you use a link-local IPv6 address on Unix systems, you must append a
|
||
percent sign and the interface identifier of the source interface, for
|
||
example fe80::dead:beef%eth0.
|
||
|
||
If you omit the target, 127.0.0.1:1688 will be used except if you use
|
||
-i6. In this case the default target is [::1]:1688.
|
||
|
||
|
||
DESCRIPTION
|
||
vlmcs is a program that can be used to test a KMS server that provides
|
||
activation for several Microsoft products. The KMS server may also be
|
||
an emulator. It supports KMS protocol versions 4, 5 and 6.
|
||
|
||
vlmcs generates one or more activation requests for a Microsoft KMS
|
||
product and sends it to a KMS server. It then analyzes and displays the
|
||
responses of the KMS server.
|
||
|
||
vlcms checks both the DCE-RPC protocol and the activation message for
|
||
correctness and reports any errors that it finds.
|
||
|
||
vlmcs can also be used to "charge" a KMS server. A Microsoft KMS server
|
||
sends correct activation messages only if it detects a certain minimum
|
||
of clients (25 for Windows client OSses, 5 otherwise) on the network.
|
||
This is Microsoft's futile attempt to prevent running a KMS server in a
|
||
home environment.
|
||
|
||
|
||
OPTIONS
|
||
-h or -?
|
||
Show help.
|
||
|
||
|
||
-V Displays extended version information. This includes the com‐
|
||
piler used to build vlmcs, the intended platform and flags (com‐
|
||
pile time options) to build vlmcs. If you have the source code
|
||
of vlmcsd, you can type make help (or gmake help on systems that
|
||
do not use the GNU version of make(1) by default) to see the
|
||
meaning of those flags.
|
||
|
||
|
||
-x Show valid applications that can be used with -l.
|
||
|
||
|
||
-e Show some examples how to use vlmcs correctly.
|
||
|
||
|
||
-v Be verbose. Instead of just displaying the returned ePID and the
|
||
HwId (protocol v6 only) vlmcsd shows all details of the query
|
||
and the response.
|
||
|
||
|
||
-l application
|
||
Request activation for a specific application. Valid applica‐
|
||
tions can be displayed by using -x. The default application is
|
||
Windows Vista Business. The list of available applications is
|
||
not complete. You may supply GUIDs with -a, -k and -s to specify
|
||
applications that are not listed with -x. The -l option is used
|
||
as a shortcut for the most common applications.
|
||
|
||
|
||
-K protocol-version
|
||
Force a specific version of the KMS protocol. Valid versions are
|
||
4.0, 5.0 and 6.0. The default is to select a suitable version
|
||
according to the application selected. You may use -K to send an
|
||
incorrect protocol version to the KMS server and see how it
|
||
behaves. Genuine KMS servers return HRESULT 0x8007000D if the
|
||
KMS protocol is not 4.0, 5.0 or 6.0. Emulators should do the
|
||
same. When sending a request with an incorrect protocol number,
|
||
vlmcs ignores the minor protocol number (e.g. sends a v4 request
|
||
for version 4.1). If the major version number is less then 4, it
|
||
sends a v4 request. If the major version is greater then 6, is
|
||
sends a v6 request. In any case the protocol-version as speci‐
|
||
fied by -K is put in the version fields of the request.
|
||
|
||
|
||
-4, -5 and -6
|
||
Force version 4, 5 or 6 of the KMS protocol. These options are
|
||
actually shortcuts of -K 4.0, -K 5.0 and -K 6.0.
|
||
|
||
|
||
-m Let the client pretend to be a virtual machine. Early versions
|
||
of Microsoft's KMS server did not increase the client count if
|
||
the request came from a virtual machine. Newer versions ignore
|
||
this flag.
|
||
|
||
|
||
-d Use NetBIOS names instead of DNS names. By default vlmcsd gener‐
|
||
ates some random DNS names for each request. If you prefer Net‐
|
||
BIOS names, you may use -d. A real Microsoft activation client
|
||
uses DNS names or NetBIOS depending on the client name configu‐
|
||
ration. KMS servers treat the workstation name as a comment that
|
||
affects logging only. Clients will be identified by a GUID that
|
||
can be specified using -c. -d has no effect if you also specify
|
||
-w.
|
||
|
||
|
||
-a application-guid
|
||
Send requests with a specific application-guid. There are cur‐
|
||
rently only three known valid application-guids:
|
||
|
||
|
||
55c92734-d682-4d71-983e-d6ec3f16059f (Windows)
|
||
59a52881-a989-479d-af46-f275c6370663 (Office 2010)
|
||
0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013)
|
||
|
||
|
||
A Microsoft KMS server uses these GUIDs to have seperate coun‐
|
||
ters for the already activated clients. A client that does not
|
||
contact the KMS server within 30 days will be deleted from the
|
||
database. Emulated KMS servers are always fully charged.
|
||
|
||
|
||
-k kms-guid
|
||
Send requests with a specific kms-guid. A Microsoft KMS server
|
||
uses these GUIDs as a product id to decide whether to grant
|
||
activation or not. A list of current kms-guids can be found in
|
||
kms.c (table KmsIdList). Emulated KMS servers grant activation
|
||
unconditionally and do not check the kms-guid.
|
||
|
||
|
||
-s activation-guid
|
||
The activation-guid defines the actual product, e.g. "Windows
|
||
8.1 Professional WMC KMSCLIENT edition". A activation-guid maps
|
||
1:1 to a product key. However, neither a Microsoft KMS server
|
||
nor emulated servers check this id. The activation-guid is use‐
|
||
ful in logging to get a specific product description like "Win‐
|
||
dows 8.1 Professional WMC". A list of current activation-guids
|
||
can be found in kms.c (table ExtendedProductList).
|
||
|
||
|
||
-n requests
|
||
Send requests requests to the server. The default is to send at
|
||
least one request and enough subsequent requests that the server
|
||
is fully charged afterwards for the application-guid you
|
||
selected (explicitly with -a or implicitly by using -l).
|
||
|
||
|
||
-T Causes to use a new TCP connection for each request if multiple
|
||
requests are sent with vlmcsd. This is useful when you want to
|
||
test an emulated KMS server whether it suffers from memory
|
||
leaks. To test for memory leaks use -n with a large number of
|
||
requests (> 100000) and then test twice (with and without -T).
|
||
This option may become neccessary for future versions of Micro‐
|
||
soft's KMS server because multiple requests with different
|
||
clients-guids for the same kms-id-guid are impossible in a real
|
||
KMS szenario over the same TCP connection.
|
||
|
||
|
||
-c client-machine-guid
|
||
Normally vlmcs generates a random client-machine-guid for each
|
||
request. By using this option you can specify a fixed client-
|
||
machine-guid This causes a Microsoft KMS not to increment its
|
||
client count because it receives multiple requests for the same
|
||
client. Thus do not use -c if you want to charge a real KMS
|
||
server.
|
||
|
||
|
||
-o previous-client-machine-guid
|
||
If the client-machine-guid changes for some reason, the real KMS
|
||
client stores a previous-client-machine-guid which is sent to
|
||
the KMS server. This happens rarely and usually
|
||
00000000-0000-0000-0000-000000000000 is used. You can use -o to
|
||
specify a different previous-client-machine-guid.
|
||
|
||
|
||
-G filename
|
||
Grabs ePIDs and HWIDs from a KMS server and writes the informa‐
|
||
tion to filename in format suitable to be used as a configura‐
|
||
tion file (aka ini file) for vlmcsd(8). This is especially use‐
|
||
ful if you have access to a genuine KMS server and want to use
|
||
the same data with vlmcsd(8).
|
||
|
||
If filename does not exist, it will be created. If you specify
|
||
an existing filename, it will be updated to use the information
|
||
received from the remote KMS server and a backup filename~ will
|
||
be created.
|
||
|
||
-G cannot be used with -l, -4, -5, -6, -a, -s, -k, -r and -n
|
||
|
||
|
||
-w workstation-name
|
||
Send requests with a specific workstation-name. This disables
|
||
the random generator for the workstation name. Since it is a
|
||
comment only, this option does not have much effect.
|
||
|
||
|
||
-r required-client-count
|
||
Also known as the "N count policy". Tells the KMS server that
|
||
successful activation requires required-client-count clients.
|
||
The default is the required-client-count that the product would
|
||
need if the request was a real activation. A Microsoft KMS
|
||
server counts clients up to the double amount what was specified
|
||
with -r. This option can be used to "overcharge" a Microsoft KMS
|
||
server.
|
||
|
||
|
||
-t status
|
||
Reports a specific license status to the KMS server. status is a
|
||
number that can be from 0 to 6. 0=unlicensed, 1=licensed, 2=OOB
|
||
grace, 3=OOT grace, 4=Non-genuinue grace, 5=notification,
|
||
6=extended grace. Refer to TechNet ⟨http://
|
||
technet.microsoft.com/en-us/library/ff686879.aspx#_Toc257201371⟩
|
||
for more information. A Microsoft KMS server collects this
|
||
information for statistics only.
|
||
|
||
|
||
-g binding-expiration
|
||
This tells the KMS server how long a client will stay in its
|
||
current license status. This can be the remaining OOB time (the
|
||
grace peroid that is granted between installation of a product
|
||
and when activation is actuall required) or the remaining time
|
||
when KMS activation must be renewed. binding-expiration is
|
||
specified in minutes. A Microsoft KMS server apparantly does not
|
||
use this information.
|
||
|
||
|
||
-i protocol-version
|
||
Force the use of Internet protocol protocol-version. Allowed
|
||
values are 4 (IPv4) and 6 (IPv6). This option is useful only if
|
||
you specfiy a hostname and not an ip-address on the command
|
||
line.
|
||
|
||
|
||
-p Do not set the RPC_PF_MULTIPLEX flag in the RPC bind request.
|
||
This can be used to test if the KMS server uses the same setting
|
||
of this flag in the RPC bind respone. Some KMS emulators don't
|
||
set this correctly.
|
||
|
||
|
||
-N0 and -N1
|
||
Disables (-N0) or enables (-N1) the NDR64 transfer syntax in the
|
||
RPC protocol. Disable NDR64 only in case of problems. If NDR64
|
||
is not used, vlmcs cannot detect many RPC protocol errors in KMS
|
||
emulators. If you want to test whether a KMS emulator fully sup‐
|
||
ports NDR64, you must use the -n option to send at least two
|
||
requests. This is because Microsoft's client always sends the
|
||
first request using NDR32 syntax and subsequent requests using
|
||
NDR64 syntax.
|
||
|
||
|
||
-B0 and -B1
|
||
Disables (-B0) or enables (-B1) bind time feature negotiation
|
||
(BTFN) in the RPC protocol. Disable BTFN only in case of prob‐
|
||
lems. If BTFN is not used, vlmcs cannot detect many RPC protocol
|
||
errors in KMS emulators.
|
||
|
||
|
||
Options that do not require an argument can be specified together with
|
||
a single dash, e.g. vlmcs -6mvT. If you specify an option more than
|
||
once, the last occurence will be in effect.
|
||
|
||
|
||
FILES
|
||
vlmcsd.ini(5)
|
||
|
||
|
||
EXAMPLES
|
||
vlmcs kms.example.com
|
||
Request activation for Windows Vista using v4 protocol from
|
||
kms.example.com. Repeat activation requests until server is
|
||
charged for all Windows products.
|
||
|
||
|
||
vlmcs -
|
||
Request activation for Windows Vista using v4 protocol from a
|
||
KMS server that is published via DNS for the current domain.
|
||
|
||
|
||
vlmcs .example.com
|
||
Request activation for Windows Vista using v4 protocol from a
|
||
KMS server that is published via DNS for domain example.com.
|
||
|
||
|
||
vlmcs -6 -l Office2013 -v -n 1
|
||
Request exactly one activation for Office2013 using v6 protocol
|
||
from localhost. Display verbose results.
|
||
|
||
|
||
vlmcs kms.bigcompany.com -G /etc/vlmcsd.ini
|
||
Get ePIDs and HWIDs from kms.bigcompany.com and create/update
|
||
/etc/vlmcsd.ini accordingly.
|
||
|
||
|
||
BUGS
|
||
Some platforms (e.g. Solaris) may have a man(7) system that does not
|
||
handle URLs. URLs may be omitted in the documentation on those plat‐
|
||
forms. Cygwin, Linux, FreeBSD and Mac OS X are known to work correctly.
|
||
|
||
|
||
AUTHOR
|
||
Written by Hotbird64
|
||
|
||
|
||
CREDITS
|
||
Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nos‐
|
||
ferati87, qad, Ratiborus, vityan666, ...
|
||
|
||
|
||
SEE ALSO
|
||
vlmcsd(7), vlmcsd(8), vlmcsdmulti(1)
|
||
|
||
|
||
|
||
Hotbird64 May 2016 VLMCS(1)
|