1
0
mirror of https://github.com/Wind4/vlmcsd.git synced 2024-12-01 14:31:03 +08:00
vlmcsd/man/vlmcs.1.html
2016-12-18 13:14:31 +08:00

560 lines
18 KiB
HTML

<!-- Creator : groff version 1.22.3 -->
<!-- CreationDate: Sun Dec 11 22:03:19 2016 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>VLMCS</title>
</head>
<body>
<h1 align="center">VLMCS</h1>
<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#OPTIONS">OPTIONS</a><br>
<a href="#FILES">FILES</a><br>
<a href="#EXAMPLES">EXAMPLES</a><br>
<a href="#BUGS">BUGS</a><br>
<a href="#AUTHOR">AUTHOR</a><br>
<a href="#CREDITS">CREDITS</a><br>
<a href="#SEE ALSO">SEE ALSO</a><br>
<hr>
<h2>NAME
<a name="NAME"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">vlmcs - a
client for testing and/or charging KMS servers</p>
<h2>SYNOPSIS
<a name="SYNOPSIS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>vlmcs</b> [
<i>options</i> ] [ <i>target</i> ] [ <i>options</i> ]</p>
<p style="margin-left:11%; margin-top: 1em"><i>target</i>
can be one of the following:</p>
<p style="margin-left:22%; margin-top: 1em"><i>hostname</i>|<i>ipaddress</i>[:<i>tcp-port</i>]
to query a specific KMS server (example: vlmcs
kms.example.com:1688). <br>
.<i>domain</i> to automatically detect KMS servers via DNS
for <i>domain</i> (example: vlmcs .example.com). Please note
the dot before <i>domain</i>. <i><br>
-</i> (a single dash) to detect KMS servers in your own
domain.</p>
<p style="margin-left:11%; margin-top: 1em">If you use
<i>ipaddress</i>:<i>port</i> as the <i>target</i>, the
<i>ipaddress</i> 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.</p>
<p style="margin-left:11%; margin-top: 1em">If you omit the
<i>target</i>, 127.0.0.1:1688 will be used except if you use
<b>-i6</b>. In this case the default target is
[::1]:1688.</p>
<h2>DESCRIPTION
<a name="DESCRIPTION"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>vlmcs</b> 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.</p>
<p style="margin-left:11%; margin-top: 1em"><b>vlmcs</b>
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.</p>
<p style="margin-left:11%; margin-top: 1em"><b>vlcms</b>
checks both the DCE-RPC protocol and the activation message
for correctness and reports any errors that it finds.</p>
<p style="margin-left:11%; margin-top: 1em"><b>vlmcs</b>
can also be used to &quot;charge&quot; 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&rsquo;s futile attempt to prevent running a KMS
server in a home environment.</p>
<h2>OPTIONS
<a name="OPTIONS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>-h</b> or
<b>-?</b></p>
<p style="margin-left:22%;">Show help.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-V</b></p></td>
<td width="8%"></td>
<td width="78%">
<p>Displays extended version information. This includes the
compiler used to build vlmcs, the intended platform and
flags (compile time options) to build vlmcs. If you have the
source code of vlmcsd, you can type <b>make help</b> (or
<b>gmake help</b> on systems that do not use the GNU version
of <b>make</b>(1) by default) to see the meaning of those
flags.</p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-x</b></p></td>
<td width="8%"></td>
<td width="78%">
<p>Show valid <i>application</i>s that can be used with
<b>-l</b>.</p> </td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-e</b></p></td>
<td width="8%"></td>
<td width="78%">
<p>Show some examples how to use vlmcs correctly.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-v</b></p></td>
<td width="8%"></td>
<td width="78%">
<p>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.</p></td></tr>
</table>
<p style="margin-left:11%;"><b>-l</b>
<i>application</i></p>
<p style="margin-left:22%;">Request activation for a
specific <i>application</i>. Valid applications can be
displayed by using <b>-x</b>. The default <i>application</i>
is <i>Windows Vista Business</i>. The list of available
applications is not complete. You may supply GUIDs with
<b>-a</b>, <b>-k</b> and <b>-s</b> to specify applications
that are not listed with <b>-x</b>. The <b>-l</b> option is
used as a shortcut for the most common applications.</p>
<p style="margin-left:11%;"><b>-K</b>
<i>protocol-version</i></p>
<p style="margin-left:22%;">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
<i>application</i> selected. You may use <b>-K</b> 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, it sends a v6 request. In any case the
<i>protocol-version</i> as specified by <b>-K</b> is put in
the version fields of the request.</p>
<p style="margin-left:11%;"><b>-4</b>, <b>-5</b> and
<b>-6</b></p>
<p style="margin-left:22%;">Force version 4, 5 or 6 of the
KMS protocol. These options are actually shortcuts of <b>-K
4.0</b>, <b>-K 5.0</b> and <b>-K 6.0</b>.</p>
<p style="margin-left:11%;"><b>-j</b> <i>filename</i></p>
<p style="margin-left:22%;">Use KMS data file
<i>filename</i>. By default vlmcs contains product data that
is recent when vlmcs was compiled. You may use a more recent
KMS data file that contains additional products.</p>
<p style="margin-left:22%; margin-top: 1em">If vlmcsd has
been compiled to use a default KMS data file, you may use
<b>-j-</b> to ignore the default configuration file.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-m</b></p></td>
<td width="8%"></td>
<td width="78%">
<p>Let the client pretend to be a virtual machine. Early
versions of Microsoft&rsquo;s KMS server did not increase
the client count if the request came from a virtual machine.
Newer versions ignore this flag.</p></td></tr>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-d</b></p></td>
<td width="8%"></td>
<td width="78%">
<p>Use NetBIOS names instead of DNS names. By default
vlmcsd generates some random DNS names for each request. If
you prefer NetBIOS names, you may use <b>-d</b>. A real
Microsoft activation client uses DNS names or NetBIOS
depending on the client name configuration. 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 <b>-c</b>. <b>-d</b> has no effect if you
also specify <b>-w</b>.</p></td></tr>
</table>
<p style="margin-left:11%;"><b>-a</b>
<i>application-guid</i></p>
<p style="margin-left:22%;">Send requests with a specific
<i>application-guid</i>. There are currently only three
known valid <i>application-guid</i>s:</p>
<p style="margin-left:22%; margin-top: 1em">55c92734-d682-4d71-983e-d6ec3f16059f
(Windows) <br>
59a52881-a989-479d-af46-f275c6370663 (Office 2010) <br>
0ff1ce15-a989-479d-af46-f275c6370663 (Office 2013)</p>
<p style="margin-left:22%; margin-top: 1em">A Microsoft KMS
server uses these GUIDs to have seperate counters 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.</p>
<p style="margin-left:11%;"><b>-k</b> <i>kms-guid</i></p>
<p style="margin-left:22%;">Send requests with a specific
<i>kms-guid</i>. A Microsoft KMS server uses these GUIDs as
a product id to decide whether to grant activation or not. A
list of current <i>kms-guid</i>s can be found in kms.c
(table KmsIdList). Emulated KMS servers grant activation
unconditionally and do not check the <i>kms-guid</i>.</p>
<p style="margin-left:11%;"><b>-s</b>
<i>activation-guid</i></p>
<p style="margin-left:22%;">The <i>activation-guid</i>
defines the actual product, e.g. &quot;Windows 8.1
Professional WMC KMSCLIENT edition&quot;. A
<i>activation-guid</i> maps 1:1 to a product key. However,
neither a Microsoft KMS server nor emulated servers check
this id. The <i>activation-guid</i> is useful in logging to
get a specific product description like &quot;Windows 8.1
Professional WMC&quot;. A list of current
<i>activation-guid</i>s can be found in kms.c (table
ExtendedProductList).</p>
<p style="margin-left:11%;"><b>-n</b> <i>requests</i></p>
<p style="margin-left:22%;">Send <i>requests</i> 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 <i>application-guid</i> you
selected (explicitly with <b>-a</b> or implicitly by using
<b>-l</b>).</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-T</b></p></td>
<td width="8%"></td>
<td width="78%">
<p>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 <b>-n</b>
with a large number of requests (&gt; 100000) and then test
twice (with and without <b>-T</b>). This option may become
neccessary for future versions of Microsoft&rsquo;s KMS
server because multiple requests with different
<i>clients-guid</i>s for the same <i>kms-id-guid</i> are
impossible in a real KMS szenario over the same TCP
connection.</p> </td></tr>
</table>
<p style="margin-left:11%;"><b>-c</b>
<i>client-machine-guid</i></p>
<p style="margin-left:22%;">Normally vlmcs generates a
random <i>client-machine-guid</i> for each request. By using
this option you can specify a fixed
<i>client-machine-guid</i> This causes a Microsoft KMS not
to increment its client count because it receives multiple
requests for the same client. Thus do not use <b>-c</b> if
you want to charge a real KMS server.</p>
<p style="margin-left:11%;"><b>-o</b>
<i>previous-client-machine-guid</i></p>
<p style="margin-left:22%;">If the
<i>client-machine-guid</i> changes for some reason, the real
KMS client stores a <i>previous-client-machine-guid</i>
which is sent to the KMS server. This happens rarely and
usually 00000000-0000-0000-0000-000000000000 is used. You
can use <b>-o</b> to specify a different
<i>previous-client-machine-guid</i>.</p>
<p style="margin-left:11%;"><b>-G</b> <i>filename</i></p>
<p style="margin-left:22%;">Grabs ePIDs and HWIDs from a
KMS server and writes the information to <i>filename</i> in
format suitable to be used as a configuration file (aka ini
file) for <b>vlmcsd</b>(8). This is especially useful if you
have access to a genuine KMS server and want to use the same
data with <b>vlmcsd</b>(8).</p>
<p style="margin-left:22%; margin-top: 1em">If
<i>filename</i> does not exist, it will be created. If you
specify an existing <i>filename</i>, it will be updated to
use the information received from the remote KMS server and
a backup <i>filename</i>~ will be created.</p>
<p style="margin-left:22%; margin-top: 1em"><b>-G</b>
cannot be used with <b>-l</b>, <b>-4</b>, <b>-5</b>,
<b>-6</b>, <b>-a</b>, <b>-s</b>, <b>-k</b>, <b>-r</b> and
<b>-n</b></p>
<p style="margin-left:11%;"><b>-w</b>
<i>workstation-name</i></p>
<p style="margin-left:22%;">Send requests with a specific
<i>workstation-name</i>. This disables the random generator
for the workstation name. Since it is a comment only, this
option does not have much effect.</p>
<p style="margin-left:11%;"><b>-r</b>
<i>required-client-count</i></p>
<p style="margin-left:22%;">Also known as the &quot;N count
policy&quot;. Tells the KMS server that successful
activation requires <i>required-client-count</i> clients.
The default is the <i>required-client-count</i> 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 <b>-r</b>. This option can be used
to &quot;overcharge&quot; a Microsoft KMS server.</p>
<p style="margin-left:11%;"><b>-t&nbsp;</b><i>status</i></p>
<p style="margin-left:22%;">Reports a specific license
status to the KMS server. <i>status</i> 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
<a href="http://technet.microsoft.com/en-us/library/ff686879.aspx#_Toc257201371">TechNet</a>
for more information. A Microsoft KMS server collects this
information for statistics only.</p>
<p style="margin-left:11%;"><b>-g</b>
<i>binding-expiration</i></p>
<p style="margin-left:22%;">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. <i>binding-expiration</i> is
specified in minutes. A Microsoft KMS server apparantly does
not use this information.</p>
<p style="margin-left:11%;"><b>-i</b>
<i>protocol-version</i></p>
<p style="margin-left:22%;">Force the use of Internet
protocol <i>protocol-version</i>. Allowed values are 4
(IPv4) and 6 (IPv6). This option is useful only if you
specfiy a <i>hostname</i> and not an <i>ip-address</i> on
the command line.</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="3%">
<p><b>-p</b></p></td>
<td width="8%"></td>
<td width="78%">
<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&rsquo;t set this correctly.</p></td></tr>
</table>
<p style="margin-left:11%;"><b>-N0</b> and <b>-N1</b></p>
<p style="margin-left:22%;">Disables (<b>-N0</b>) or
enables (<b>-N1</b>) 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 supports NDR64, you must use the <b>-n</b> option to
send at least two requests. This is because
Microsoft&rsquo;s client always sends the first request
using NDR32 syntax and subsequent requests using NDR64
syntax.</p>
<p style="margin-left:11%;"><b>-B0</b> and <b>-B1</b></p>
<p style="margin-left:22%;">Disables (<b>-B0</b>) or
enables (<b>-B1</b>) bind time feature negotiation (BTFN) in
the RPC protocol. Disable BTFN only in case of problems. If
BTFN is not used, vlmcs cannot detect many RPC protocol
errors in KMS emulators.</p>
<p style="margin-left:11%; margin-top: 1em">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.</p>
<h2>FILES
<a name="FILES"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>vlmcsd.ini</b>(5)</p>
<h2>EXAMPLES
<a name="EXAMPLES"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>vlmcs
kms.example.com</b></p>
<p style="margin-left:22%;">Request activation for Windows
Vista using v4 protocol from kms.example.com. Repeat
activation requests until server is charged for all Windows
products.</p>
<p style="margin-left:11%;"><b>vlmcs -</b></p>
<p style="margin-left:22%;">Request activation for Windows
Vista using v4 protocol from a KMS server that is published
via DNS for the current domain.</p>
<p style="margin-left:11%;"><b>vlmcs .example.com</b></p>
<p style="margin-left:22%;">Request activation for Windows
Vista using v4 protocol from a KMS server that is published
via DNS for domain example.com.</p>
<p style="margin-left:11%;"><b>vlmcs -6 -l Office2013 -v -n
1</b></p>
<p style="margin-left:22%;">Request exactly one activation
for Office2013 using v6 protocol from localhost. Display
verbose results.</p>
<p style="margin-left:11%;"><b>vlmcs kms.bigcompany.com -G
/etc/vlmcsd.ini</b></p>
<p style="margin-left:22%;">Get ePIDs and HWIDs from
kms.bigcompany.com and create/update /etc/vlmcsd.ini
accordingly.</p>
<h2>BUGS
<a name="BUGS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Some platforms
(e.g. Solaris) may have a <b>man</b>(7) system that does not
handle URLs. URLs may be omitted in the documentation on
those platforms. Cygwin, Linux, FreeBSD and Mac OS X are
known to work correctly.</p>
<h2>AUTHOR
<a name="AUTHOR"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Written by
Hotbird64</p>
<h2>CREDITS
<a name="CREDITS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">Thanks to
CODYQX4, crony12, deagles, DougQaid, eIcn, mikmik38,
nosferati87, qad, Ratiborus, vityan666, ...</p>
<h2>SEE ALSO
<a name="SEE ALSO"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>vlmcsd</b>(7),
<b>vlmcsd</b>(8), <b>vlmcsdmulti</b>(1)</p>
<hr>
</body>
</html>