1
0
mirror of https://github.com/Wind4/vlmcsd.git synced 2024-11-25 03:21:03 +08:00
vlmcsd/man/vlmcs.1.unix.txt

327 lines
14 KiB
Plaintext
Raw Normal View History

2015-11-29 17:30:52 +08:00
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:
2016-06-06 10:36:00 +08:00
hostname|ipaddress[:tcp-port] to query a specific KMS server
2015-11-29 17:30:52 +08:00
(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.
2016-06-06 10:36:00 +08:00
-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.
2015-11-29 17:30:52 +08:00
-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
2016-06-06 10:36:00 +08:00
HwId (protocol v6 only) vlmcsd shows all details of the query
2015-11-29 17:30:52 +08:00
and the response.
-l application
2016-06-06 10:36:00 +08:00
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
2015-11-29 17:30:52 +08:00
not complete. You may supply GUIDs with -a, -k and -s to specify
2016-06-06 10:36:00 +08:00
applications that are not listed with -x. The -l option is used
2015-11-29 17:30:52 +08:00
as a shortcut for the most common applications.
2016-08-15 18:35:59 +08:00
-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
2016-10-24 21:32:24 +08:00
sends a v4 request. If the major version is greater then 6, it
2016-08-15 18:35:59 +08:00
sends a v6 request. In any case the protocol-version as speci
fied by -K is put in the version fields of the request.
2015-11-29 17:30:52 +08:00
-4, -5 and -6
2016-08-15 18:35:59 +08:00
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.
2015-11-29 17:30:52 +08:00
2016-08-15 18:35:59 +08:00
-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
2015-11-29 17:30:52 +08:00
this flag.
-d Use NetBIOS names instead of DNS names. By default vlmcsd gener
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
ration. KMS servers treat the workstation name as a comment that
2016-08-15 18:35:59 +08:00
affects logging only. Clients will be identified by a GUID that
can be specified using -c. -d has no effect if you also specify
2015-11-29 17:30:52 +08:00
-w.
-a application-guid
2016-08-15 18:35:59 +08:00
Send requests with a specific application-guid. There are cur
2015-11-29 17:30:52 +08:00
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)
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
database. Emulated KMS servers are always fully charged.
-k kms-guid
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
unconditionally and do not check the kms-guid.
-s activation-guid
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
nor emulated servers check this id. The activation-guid is use
2016-08-15 18:35:59 +08:00
ful in logging to get a specific product description like "Win
dows 8.1 Professional WMC". A list of current activation-guids
2015-11-29 17:30:52 +08:00
can be found in kms.c (table ExtendedProductList).
-n requests
2016-08-15 18:35:59 +08:00
Send requests requests to the server. The default is to send at
2015-11-29 17:30:52 +08:00
least one request and enough subsequent requests that the server
2016-08-15 18:35:59 +08:00
is fully charged afterwards for the application-guid you
2015-11-29 17:30:52 +08:00
selected (explicitly with -a or implicitly by using -l).
2016-08-15 18:35:59 +08:00
-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
2015-11-29 17:30:52 +08:00
KMS szenario over the same TCP connection.
-c client-machine-guid
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
server.
-o previous-client-machine-guid
If the client-machine-guid changes for some reason, the real KMS
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
specify a different previous-client-machine-guid.
-G filename
2016-08-15 18:35:59 +08:00
Grabs ePIDs and HWIDs from a KMS server and writes the informa
tion to filename in format suitable to be used as a configura
2015-11-29 17:30:52 +08:00
tion file (aka ini file) for vlmcsd(8). This is especially use
2016-08-15 18:35:59 +08:00
ful if you have access to a genuine KMS server and want to use
2015-11-29 17:30:52 +08:00
the same data with vlmcsd(8).
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
be created.
-G cannot be used with -l, -4, -5, -6, -a, -s, -k, -r and -n
-w workstation-name
2016-08-15 18:35:59 +08:00
Send requests with a specific workstation-name. This disables
the random generator for the workstation name. Since it is a
2015-11-29 17:30:52 +08:00
comment only, this option does not have much effect.
-r required-client-count
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
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
2016-08-15 18:35:59 +08:00
number that can be from 0 to 6. 0=unlicensed, 1=licensed, 2=OOB
grace, 3=OOT grace, 4=Non-genuinue grace, 5=notification,
2015-11-29 17:30:52 +08:00
6=extended grace. Refer to TechNet ⟨http://
technet.microsoft.com/en-us/library/ff686879.aspx#_Toc257201371⟩
2016-08-15 18:35:59 +08:00
for more information. A Microsoft KMS server collects this
2015-11-29 17:30:52 +08:00
information for statistics only.
-g binding-expiration
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
specified in minutes. A Microsoft KMS server apparantly does not
use this information.
-i protocol-version
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
line.
2016-08-15 18:35:59 +08:00
-p Do not set the RPC_PF_MULTIPLEX flag in the RPC bind request.
2015-11-29 17:30:52 +08:00
This can be used to test if the KMS server uses the same setting
2016-08-15 18:35:59 +08:00
of this flag in the RPC bind respone. Some KMS emulators don't
2015-11-29 17:30:52 +08:00
set this correctly.
-N0 and -N1
Disables (-N0) or enables (-N1) the NDR64 transfer syntax in the
2016-08-15 18:35:59 +08:00
RPC protocol. Disable NDR64 only in case of problems. If NDR64
2015-11-29 17:30:52 +08:00
is not used, vlmcs cannot detect many RPC protocol errors in KMS
emulators. If you want to test whether a KMS emulator fully sup
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
NDR64 syntax.
-B0 and -B1
2016-08-15 18:35:59 +08:00
Disables (-B0) or enables (-B1) bind time feature negotiation
(BTFN) in the RPC protocol. Disable BTFN only in case of prob
2015-11-29 17:30:52 +08:00
lems. If BTFN is not used, vlmcs cannot detect many RPC protocol
errors in KMS emulators.
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
once, the last occurence will be in effect.
FILES
vlmcsd.ini(5)
EXAMPLES
vlmcs kms.example.com
2016-08-15 18:35:59 +08:00
Request activation for Windows Vista using v4 protocol from
kms.example.com. Repeat activation requests until server is
2015-11-29 17:30:52 +08:00
charged for all Windows products.
vlmcs -
2016-08-15 18:35:59 +08:00
Request activation for Windows Vista using v4 protocol from a
2015-11-29 17:30:52 +08:00
KMS server that is published via DNS for the current domain.
vlmcs .example.com
2016-08-15 18:35:59 +08:00
Request activation for Windows Vista using v4 protocol from a
2015-11-29 17:30:52 +08:00
KMS server that is published via DNS for domain example.com.
vlmcs -6 -l Office2013 -v -n 1
2016-08-15 18:35:59 +08:00
Request exactly one activation for Office2013 using v6 protocol
2015-11-29 17:30:52 +08:00
from localhost. Display verbose results.
vlmcs kms.bigcompany.com -G /etc/vlmcsd.ini
2016-08-15 18:35:59 +08:00
Get ePIDs and HWIDs from kms.bigcompany.com and create/update
2015-11-29 17:30:52 +08:00
/etc/vlmcsd.ini accordingly.
BUGS
2016-08-15 18:35:59 +08:00
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
2015-11-29 17:30:52 +08:00
forms. Cygwin, Linux, FreeBSD and Mac OS X are known to work correctly.
AUTHOR
Written by Hotbird64
CREDITS
2016-08-15 18:35:59 +08:00
Thanks to CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38, nos
2015-11-29 17:30:52 +08:00
ferati87, qad, Ratiborus, vityan666, ...
SEE ALSO
vlmcsd(7), vlmcsd(8), vlmcsdmulti(1)
2016-10-24 21:32:24 +08:00
Hotbird64 October 2016 VLMCS(1)