From b0a8ff21fb8e361424e40ad0ab5db1b7e3ffe550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matteo=20=E2=84=B1an?= <SystemRage@protonmail.com> Date: Wed, 14 Nov 2018 23:09:19 +0100 Subject: [PATCH] uploaded version 2018_11_15 for python2 --- py2-kms/KmsDataBase.xml | 798 +++++++++++++++++++++++++++++++++++ py2-kms/aes.py | 6 +- py2-kms/client.py | 123 ++---- py2-kms/dcerpc.py | 432 +++++++++++++++++-- py2-kms/filetimes.py | 1 - py2-kms/formatText.py | 8 - py2-kms/kmsBase.py | 507 ++++------------------ py2-kms/kmsDB2Dict.py | 45 ++ py2-kms/kmsPidGenerator.py | 147 +++---- py2-kms/kmsRequestUnknown.py | 2 +- py2-kms/kmsRequestV4.py | 41 +- py2-kms/kmsRequestV5.py | 49 +-- py2-kms/kmsRequestV6.py | 11 +- py2-kms/rpcBase.py | 19 +- py2-kms/rpcBind.py | 10 +- py2-kms/rpcRequest.py | 6 +- py2-kms/server.py | 120 ++++-- py2-kms/structure.py | 40 +- 18 files changed, 1574 insertions(+), 791 deletions(-) create mode 100644 py2-kms/KmsDataBase.xml create mode 100644 py2-kms/kmsDB2Dict.py diff --git a/py2-kms/KmsDataBase.xml b/py2-kms/KmsDataBase.xml new file mode 100644 index 0000000..8e2119b --- /dev/null +++ b/py2-kms/KmsDataBase.xml @@ -0,0 +1,798 @@ +<?xml version="1.0" encoding="utf-8"?> + +<!-- Modded by SystemRage for py-kms --> + +<!-- +<KmsData + Version="1.7" // Version of the KmsData file, currently must be 1.7 (required), + Author="Hotbird64" // Enter your name here (required) + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" // Loads the xsi namespace (recommended for syntax checking in an XSD capable XML editor) + xsi:noNamespaceSchemaLocation="KmsDataBase.xsd" // relative or absolute path of the validation file +> + + <WinBuild + BuildNumber="9200" // Windows Build Number + DisplayName="Windows 8 / Server 2012" // A display name for the build number + PlatformId="5426" // The "Platform ID" for this build number + UseForEpid="true" // Use this build number for EPid generation. Should be true only for RTM builds that can be Windows servers + MayBeServer="true" // Should be true for RTM builds that can be Windows servers + UsesNDR64="true" // Genuine KMS servers use NDR64 for this build + WinBuildIndex="0" // Index of the build (for py-kms) + MinDate="12/10/2016" // GA release date of the build (for py-kms) + /> + + <CsvlkItem + > + Id="2e7a9ad1-a849-4b56-babe-17d5a29fe4b4" // SkuId of the CSVLK (required) + DisplayName="Windows Server 2019" // Friendly name that should be displayed instead of the Guid (required) + IsLab="false" // This is a lab CSVLK that also activates retail Windows > 8 (default false) + IsPreview="false" // This is a preview (beta, Non-RTM, etc.) CSVLK (default false) + GroupId="206" // GroupId for EPid generation. If omitted, this is taken from the pkeyconfig. Use only if you don´t have a pkeyconfig for this CSVLK + MinKeyId="551000000" // Minimum key id for EPid generation. If omitted, this is taken from the pkeyconfig. Use only if you don´t have a pkeyconfig for this CSVLK + MaxKeyId="570999999" // Maximum key id for EPid generation. If omitted, this is taken from the pkeyconfig. Use only if you don´t have a pkeyconfig for this CSVLK + VlmcsdIndex="0" // Export this CsvlkItem with Index 0 to vlmcsd. (optional) + IniFileName="Windows" // Name used in vlmcsd.ini to assign specific EPID (required for all CsvlkItems that have VlmcsdIndex=, optional for others) + EPid="03612-00206-568-381813-03-1033-14393.0000-2702018" // If you want a specific EPid, use this. Or omit it to generate a suitable default automatically. + InvalidWinBuild="[0,1,2]" // List of the builds not good for EPID generation with this CSVLK parameters (for py-kms) + + <Activate + KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" // List of KmsItems activated by the CSVLK. The KmsItem must be defined under <AppItem><KmsItem Id= ...> + /> + +</CsvlkItem> + + <AppItem // Application (Windows, Office 2010 or Office 2013+) + Id="{55c92734-d682-4d71-983e-d6ec3f16059f}" // Guid (required, braces are optional). + DisplayName="Windows" // Friendly name that should be displayed instead of the Guid (required) + VlmcsdIndex="0" // VlmcsdIndex of CsvlkItem to use if an unknown KmsItem activates with that AppItem (required) + MinActiveClients="50" // Minimum clients that this AppItem should maintain + > + + <KmsItem // KmsItem aka KMS Counted Id + Id="{e1c51358-fe3e-4203-a4a2-3b6b20c9734e}" // Guid (required, braces are optional). + DisplayName="Windows 10 (Retail)" // Friendly name that should be displayed instead of the Guid (required) + IsRetail="true" // Indicates that this is a retail product group that can't be activated with a genuine KMS server (optional, default false) + IsPreview="false" // Indicates that this a beta/preview product group that can't be activated with a genuine KMS server (optional, default false) + DefaultKmsProtocol="6.0" // Default KMS protocol version that the KMS client uses. Must be "4.0", "5.0" or "6.0" (optional, default 6.0) + NCountPolicy="25" // Minimum number of active clients required for the activation to succeed (optional, default 25, should be 25 for Windows clients and 5 otherwise) + CanMapToDefaultCsvlk="true" // This KmsItem can be omitted in vlmcsd export because it maps to VlmcsdIndex 0 (optional, default true) + > + + <SkuItem // VOLUME_KMSCLIENT channel SKU ID (makes no sense to add other SKU IDs than VOLUME_KMSCLIENT channel + Id="{58e97c99-f377-4ef1-81d5-4ad5522b5fd8}" // Guid (required, braces are optional). + DisplayName="Windows 10 Home" // Friendly name that should be displayed instead of the Guid (required) + Gvlk="XXXXX-XXXXX-XXXXX-XXXXX-H8Q99" // The GVLK key to enable this VOLUME_KMSCLIENT channel (optional, recommended, no default) + IsGeneratedGvlk="false" // If true, indicates that this is a generated GVLK (optional, strongly recommended if a generated GVLK is used, default false) + /> + + </KmsItem> + </AppItem> +</KmsData> +--> + + +<KmsData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.7" Author="Hotbird64" xsi:noNamespaceSchemaLocation="KmsDataBase.xsd"> + + <WinBuilds> + <!-- LM refuses 3-digit build numbers + <WinBuild BuildNumber="528" DisplayName="Windows NT 3.1" PlatformId="55041"/> + <WinBuild BuildNumber="807" DisplayName="Windows NT 3.5" PlatformId="55041"/> + --> + <WinBuild BuildNumber="1057" DisplayName="Windows NT 3.51" PlatformId="55041"/> + <WinBuild BuildNumber="1381" DisplayName="Windows NT 4.0" PlatformId="55041"/> + <WinBuild BuildNumber="2195" DisplayName="Windows 2000" PlatformId="55041"/> + <WinBuild BuildNumber="2600" DisplayName="Windows XP 32-bit" PlatformId="55041"/> + <WinBuild BuildNumber="3790" DisplayName="Windows Server 2003 / XP 64-bit" PlatformId="55041" MayBeServer="true"/> + <WinBuild BuildNumber="6000" DisplayName="Windows Vista / Server 2008 without SP" PlatformId="55041" MayBeServer="true"/> + <WinBuild BuildNumber="6001" DisplayName="Windows Vista / Server 2008 SP1" PlatformId="55041" MayBeServer="true"/> + <WinBuild BuildNumber="6002" DisplayName="Windows Vista / Server 2008 SP2" UseForEpid="true" PlatformId="55041" MayBeServer="true" WinBuildIndex="0" MinDate="26/5/2009"/> + <WinBuild BuildNumber="7600" DisplayName="Windows 7 / Server 2008 R2 without SP" PlatformId="55041" MayBeServer="true"/> + <WinBuild BuildNumber="7601" DisplayName="Windows 7 / Server 2008 R2 SP1" PlatformId="55041" UseForEpid="true" MayBeServer="true" WinBuildIndex="1" MinDate="22/02/2011"/> + <WinBuild BuildNumber="9200" DisplayName="Windows 8 / Server 2012" PlatformId="5426" UseForEpid="true" MayBeServer="true" UsesNDR64="true" WinBuildIndex="2" MinDate="04/09/2012"/> + <WinBuild BuildNumber="9600" DisplayName="Windows 8.1 / Server 2012 R2" PlatformId="6401" UseForEpid="true" MayBeServer="true" UsesNDR64="true" WinBuildIndex="3" MinDate="17/10/2013"/> + <WinBuild BuildNumber="10240" DisplayName="Windows 10 1507" PlatformId="3612" UsesNDR64="true"/> + <WinBuild BuildNumber="14393" DisplayName="Windows 10 1607 / Server 2016" UseForEpid="true" MayBeServer="true" PlatformId="3612" UsesNDR64="true" WinBuildIndex="4" MinDate="12/10/2016"/> + <WinBuild BuildNumber="15063" DisplayName="Windows 10 1703" PlatformId="3612" UsesNDR64="true" MinDate="11/04/2017"/> + <WinBuild BuildNumber="16299" DisplayName="Windows 10 1709" PlatformId="3612" UsesNDR64="true"/> + <WinBuild BuildNumber="17134" DisplayName="Windows 10 1803" PlatformId="3612" UsesNDR64="true"/> + <WinBuild BuildNumber="17763" DisplayName="Windows 10 1809 / Server 2019" UseForEpid="true" PlatformId="3612" MayBeServer="true" UsesNDR64="true" WinBuildIndex="5" MinDate="02/10/2018"/> + </WinBuilds> + + <CsvlkItems> + <CsvlkItem DisplayName="Windows 10 China Government" VlmcsdIndex="4" GroupId="3858" MinKeyId="15000000" MaxKeyId="999999999" IniFileName="WinChinaGov" EPid="06401-03858-320-801028-03-1033-9600.0000-2802018" Id="ecc0774a-aed3-4e1a-b815-2b31781adfea" InvalidWinBuild="[0,1,2]"> + <Activate KmsItem="7ba0bf23-d0f5-4072-91d9-d55af5a481b6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2019" VlmcsdIndex="0" GroupId="206" MinKeyId="551000000" MaxKeyId="570999999" IniFileName="Windows" EPid="06401-00206-566-174993-03-1033-9600.0000-2802018" Id="2e7a9ad1-a849-4b56-babe-17d5a29fe4b4" InvalidWinBuild="[0,1,2]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + <Activate KmsItem="6e9fc069-257d-4bc4-b4a7-750514d32743" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + <Activate KmsItem="8449b1fb-f0ea-497a-99ab-66ca96e9a0f5" /> + <Activate KmsItem="11b15659-e603-4cf1-9c1f-f0ec01b81888" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2019 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="2835000" MaxKeyId="2854999" IniFileName="Windows" Id="9db83b52-9904-4326-8957-ebe6feedf37c" InvalidWinBuild="[0,1,2]"> + <Activate KmsItem="e1c51358-fe3e-4203-a4a2-3b6b20c9734e" /> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + <Activate KmsItem="6e9fc069-257d-4bc4-b4a7-750514d32743" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + <Activate KmsItem="8449b1fb-f0ea-497a-99ab-66ca96e9a0f5" /> + <Activate KmsItem="11b15659-e603-4cf1-9c1f-f0ec01b81888" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2016" GroupId="206" MinKeyId="491000000" MaxKeyId="530999999" IniFileName="Windows" Id="d6992aac-29e7-452a-bf10-bbfb8ccabe59" InvalidWinBuild="[0,1]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + <Activate KmsItem="6e9fc069-257d-4bc4-b4a7-750514d32743" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2016 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="1510000" MaxKeyId="2009999" IniFileName="Windows" Id="3c2da9a5-1c6e-45d1-855f-fdbef536676f" InvalidWinBuild="[0,1]"> + <Activate KmsItem="e1c51358-fe3e-4203-a4a2-3b6b20c9734e" /> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + <Activate KmsItem="6e9fc069-257d-4bc4-b4a7-750514d32743" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 10 2019" GroupId="206" MinKeyId="256000000" MaxKeyId="265999999" IniFileName="Windows" Id="90da7373-1c51-430b-bf26-c97e9c5cdc31" InvalidWinBuild="[0,1,2]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="11b15659-e603-4cf1-9c1f-f0ec01b81888" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 10 2015" GroupId="206" MinKeyId="390000000" MaxKeyId="404999999" IniFileName="Windows" Id="0724cb7d-3437-4cb7-93cb-830375d0079d" InvalidWinBuild="[0,1]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 10 2016" GroupId="206" MinKeyId="531000000" MaxKeyId="545999999" IniFileName="Windows" Id="30a42c86-b7a0-4a34-8c90-ff177cb2acb7" InvalidWinBuild="[0,1]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 10 2015 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="10700000" MaxKeyId="10799999" IniFileName="Windows" Id="7a802526-4c94-4bd1-ba14-835a1aca2120" InvalidWinBuild="[0,1]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="e1c51358-fe3e-4203-a4a2-3b6b20c9734e" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 10 2019 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="2860000" MaxKeyId="2864999" IniFileName="Windows" Id="60b3ec1b-9545-4921-821f-311b129dd6f6" InvalidWinBuild="[0,1,2]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="11b15659-e603-4cf1-9c1f-f0ec01b81888" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="e1c51358-fe3e-4203-a4a2-3b6b20c9734e" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 10 2016 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="2015000" MaxKeyId="2114999" IniFileName="Windows" Id="d552befb-48cc-4327-8f39-47d2d94f987c" InvalidWinBuild="[0,1]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="e1c51358-fe3e-4203-a4a2-3b6b20c9734e" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 10 [Pre-Release]" IsPreview="true" GroupId="206" MinKeyId="1000000" MaxKeyId="1009999" IniFileName="Windows" Id="d521c0fd-1732-4c15-8b98-a41b2a95bbc4" InvalidWinBuild="[0,1]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="5f94a0bb-d5a0-4081-a685-5819418b2fe0" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server Next [Pre-Release]" IsPreview="true" GroupId="206" MinKeyId="21001500" MaxKeyId="21010499" IniFileName="Windows" Id="c609957a-dc23-48b3-8c6b-31b303479de2" InvalidWinBuild="[0,1]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="969fe3c0-a3ec-491a-9f25-423605deb365" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="5f94a0bb-d5a0-4081-a685-5819418b2fe0" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + <Activate KmsItem="6e9fc069-257d-4bc4-b4a7-750514d32743" /> + <Activate KmsItem="6d5f5270-31ac-433e-b90a-39892923c657" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2012 R2 With Win 10" GroupId="206" MinKeyId="405000000" MaxKeyId="424999999" IniFileName="Windows" Id="20e938bb-df44-45ee-bde1-4e4fe7477f37" InvalidWinBuild="[0]"> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2012 R2 With Win 10 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="17650000" MaxKeyId="17849999" IniFileName="Windows" Id="9e3fde40-d4b3-4c1d-9bde-32735aa19b39" InvalidWinBuild="[0]"> + <Activate KmsItem="e1c51358-fe3e-4203-a4a2-3b6b20c9734e" /> + <Activate KmsItem="58e2134f-8e11-4d17-9cb2-91069c151148" /> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="d27cd636-1962-44e9-8b4f-27b6c23efb85" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 8.1" GroupId="206" MinKeyId="339000000" MaxKeyId="353999999" IniFileName="Windows" Id="29d0b60f-66da-4858-bcaf-9eb513cd310d" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 8.1 (Microsoft internal Lab)" IsLab="true" GroupId="206" MinKeyId="109500000" MaxKeyId="109999999" IniFileName="Windows" Id="4614b66f-a1d7-441c-9731-23f22d0ff4e5" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2012 R2" GroupId="206" MinKeyId="271000000" MaxKeyId="310999999" IniFileName="Windows" Id="dcb88f6f-b090-405b-850e-dabcccf3693f" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2012 R2 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="192000000" MaxKeyId="192499999" IniFileName="Windows" Id="acf1b4fd-1c55-4f2d-a60b-415ac958ad88" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="6d646890-3606-461a-86ab-598bb84ace82" /> + <Activate KmsItem="cb8fc780-2c05-495a-9710-85afffc904d7" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + <Activate KmsItem="8456efd3-0c04-4089-8740-5b7238535a65" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 8" GroupId="206" MinKeyId="199000000" MaxKeyId="213999999" IniFileName="Windows" Id="24259a22-3bf0-44af-a68b-1b858bce1894" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 8 (Microsoft Internal Lab)" IsLab="true" GroupId="206" MinKeyId="21100000" MaxKeyId="21599999" IniFileName="Windows" Id="044ba67a-4c54-47ee-941a-d6f2efaa6891" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2012" GroupId="206" MinKeyId="152000000" MaxKeyId="191999999" IniFileName="Windows" Id="7b37c913-252b-46be-ad80-b2b5ceade8af" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2012 (Microsoft internal Lab)" IsLab="true" GroupId="206" MinKeyId="98500000" MaxKeyId="98999999" IniFileName="Windows" Id="fe27276b-a5a9-4b4d-88e3-14271beb79be" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" /> + <Activate KmsItem="3c40b358-5948-45af-923b-53d21fcc7e79" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + <Activate KmsItem="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows 7" GroupId="172" MinKeyId="37000000" MaxKeyId="49749999" IniFileName="Windows" Id="d188820a-cb63-4bad-a9a2-40b843ee23b7" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2008 R2 C (Datacenter)" GroupId="168" MinKeyId="305000000" MaxKeyId="312119999" IniFileName="Windows" Id="8fe15d04-fc66-40e6-bf34-942481e06fd8" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + <Activate KmsItem="b2ca2689-a9a8-42d7-938d-cf8e9f201958" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2008 R2 B (Standard & Enterprise)" GroupId="168" MinKeyId="312880000" MaxKeyId="332999999" IniFileName="Windows" Id="c99b641f-c4ea-4e63-bec3-5ed2ccd0f357" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + <Activate KmsItem="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2008 R2 A (Web & HPC)" GroupId="168" MinKeyId="249000000" MaxKeyId="259119999" IniFileName="Windows" Id="f73d1bcd-0802-47dd-b2d9-81bf2f8c0744" InvalidWinBuild="[0]"> + <Activate KmsItem="7fde5219-fbfa-484a-82c9-34d1ad53e856" /> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Vista (1 of 2)" GroupId="142" MinKeyId="26000000" MaxKeyId="35999999" IniFileName="Windows" Id="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" InvalidWinBuild="[]"> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Vista (2 of 2)" GroupId="154" MinKeyId="394000000" MaxKeyId="416999999" IniFileName="Windows" Id="4871de8b-3adf-4455-a7d3-fd7b6c01c939" InvalidWinBuild="[]"> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2008 C (Datacenter)" GroupId="152" MinKeyId="381000000" MaxKeyId="392999999" IniFileName="Windows" Id="c90d1b4e-8aa8-439e-8b9e-b6d6b6a6d975" InvalidWinBuild="[]"> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + <Activate KmsItem="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2008 B (Standard & Enterprise)" GroupId="152" MinKeyId="339000000" MaxKeyId="358999999" IniFileName="Windows" Id="56df4151-1f9f-41bf-acaa-2941c071872b" InvalidWinBuild="[]"> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + <Activate KmsItem="8fe53387-3087-4447-8985-f75132215ac9" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Windows Server 2008 A (Web & HPC)" GroupId="152" MinKeyId="368000000" MaxKeyId="380999999" IniFileName="Windows" Id="c448fa06-49d1-44ec-82bb-0085545c3b51" InvalidWinBuild="[]"> + <Activate KmsItem="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" /> + <Activate KmsItem="33e156e4-b76f-4a52-9f91-f641dd95ac48" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Office 2019" VlmcsdIndex="5" GroupId="206" MinKeyId="666000000" MaxKeyId="685999999" IniFileName="Office2019" EPid="06401-00206-678-008369-03-1033-9600.0000-2802018" Id="70512334-47b4-44db-a233-be5ea33b914c" InvalidWinBuild="[0,1]"> + <Activate KmsItem="617d9eb1-ef36-4f82-86e0-a65ae07b96c6" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Office 2016" VlmcsdIndex="3" GroupId="206" MinKeyId="437000000" MaxKeyId="458999999" IniFileName="Office2016" EPid="06401-00206-456-865118-03-1033-9600.0000-2802018" Id="98ebfe73-2084-4c97-932c-c0cd1643bea7" InvalidWinBuild="[0]"> + <Activate KmsItem="85b5f61b-320b-4be3-814a-b76b2bfafc82" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Office 2013" VlmcsdIndex="2" GroupId="206" MinKeyId="234000000" MaxKeyId="255999999" IniFileName="Office2013" EPid="06401-00206-243-662026-03-1033-9600.0000-2802018" Id="2e28138a-847f-42bc-9752-61b03fff33cd" InvalidWinBuild="[]"> + <Activate KmsItem="e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0" /> + </CsvlkItem> + + <CsvlkItem DisplayName="Office 2010" VlmcsdIndex="1" GroupId="96" MinKeyId="199000000" MaxKeyId="217999999" IniFileName="Office2010" EPid="06401-00096-208-497764-03-1033-9600.0000-2802018" Id="bfe7a195-4f8f-4f0b-a622-cf13c7d16864" InvalidWinBuild="[]"> + <Activate KmsItem="e85af946-2e25-47b7-83e1-bebcebeac611" /> + </CsvlkItem> + + </CsvlkItems> + + <AppItems> + + <AppItem DisplayName="Windows" VlmcsdIndex="0" Id="55c92734-d682-4d71-983e-d6ec3f16059f" MinActiveClients="50"> + + <KmsItem DisplayName="Windows Server 2019" Id="8449b1fb-f0ea-497a-99ab-66ca96e9a0f5" DefaultKmsProtocol="6.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2019 ARM64" Id="8de8eb62-bbe0-40ac-ac17-f75595071ea3" Gvlk="GRFBW-QNDC4-6QBHG-CCK3B-2PR88" /> + <SkuItem DisplayName="Windows Server 2019 Azure Core" Id="a99cc1f0-7719-4306-9645-294102fbff95" Gvlk="FDNH6-VW9RW-BXPJ7-4XTYG-239TB" /> + <SkuItem DisplayName="Windows Server 2019 Datacenter" Id="34e1ae55-27f8-4950-8877-7a03be5fb181" Gvlk="WMDGN-G9PQG-XVVXX-R3X43-63DFG" /> + <SkuItem DisplayName="Windows Server 2019 Essentials" Id="034d3cbb-5d4b-4245-b3f8-f84571314078" Gvlk="WVDHN-86M7X-466P6-VHXV7-YY726" /> + <SkuItem DisplayName="Windows Server 2019 Standard" Id="de32eafd-aaee-4662-9444-c1befb41bde2" Gvlk="N69G4-B89J2-4G8F4-WWYCC-J464C" /> + <SkuItem DisplayName="Windows Server 2019 Datacenter (Semi-Annual Channel v.1809)" Id="90c362e5-0da1-4bfd-b53b-b87d309ade43" Gvlk="6NMRW-2C8FM-D24W7-TQWMY-CWH2D" /> + <SkuItem DisplayName="Windows Server 2019 Standard (Semi-Annual Channel v.1809)" Id="73e3957c-fc0c-400d-9184-5f7b6f2eb409" Gvlk="N2KJX-J94YW-TQVFB-DG9YT-724CC" /> + </KmsItem> + + <KmsItem DisplayName="Windows 10 2019 (Volume)" Id="11b15659-e603-4cf1-9c1f-f0ec01b81888" DefaultKmsProtocol="6.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 10 Enterprise LTSC 2019" Id="32d2fab3-e4a8-42c2-923b-4bf4fd13e6ee" Gvlk="M7XTQ-FN8P6-TTKYV-9D4CC-J462D" /> + <SkuItem DisplayName="Windows 10 Enterprise LTSC 2019 N" Id="7103a333-b8c8-49cc-93ce-d37c09687f92" Gvlk="92NFX-8DJQP-P6BBQ-THF9C-7CG2H" /> + </KmsItem> + + <KmsItem DisplayName="Windows 10 Unknown (Volume)" Id="d27cd636-1962-44e9-8b4f-27b6c23efb85" DefaultKmsProtocol="6.0" NCountPolicy="25"> + </KmsItem> + + <KmsItem DisplayName="Windows 10 China Government" Id="7ba0bf23-d0f5-4072-91d9-d55af5a481b6" CanMapToDefaultCsvlk="false" DefaultKmsProtocol="6.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 10 Enterprise G" Id="e0b2d383-d112-413f-8a80-97f373a5820c" Gvlk="YYVX9-NTFWV-6MDM3-9PT4T-4M68B" /> + <SkuItem DisplayName="Windows 10 Enterprise GN" Id="e38454fb-41a4-4f59-a5dc-25080e354730" Gvlk="44RPN-FTY23-9VTTB-MP9BX-T84FV" /> + </KmsItem> + + <KmsItem DisplayName="Windows 10 2016 (Volume)" Id="969fe3c0-a3ec-491a-9f25-423605deb365" DefaultKmsProtocol="6.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 10 Enterprise 2016 LTSB" Id="2d5a5a60-3040-48bf-beb0-fcd770c20ce0" Gvlk="DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ" /> + <SkuItem DisplayName="Windows 10 Enterprise 2016 LTSB N" Id="9f776d83-7156-45b2-8a5c-359b9c9f22a3" Gvlk="QFFDN-GRT3P-VKWWX-X7T3R-8B639" /> + </KmsItem> + + <KmsItem DisplayName="Windows 10 (Retail)" Id="e1c51358-fe3e-4203-a4a2-3b6b20c9734e" IsRetail="true" DefaultKmsProtocol="6.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 10 Home / Core" Id="58e97c99-f377-4ef1-81d5-4ad5522b5fd8" Gvlk="TX9XD-98N7V-6WMQ6-BX7FG-H8Q99" /> + <SkuItem DisplayName="Windows 10 Home / Core Country Specific" Id="a9107544-f4a0-4053-a96a-1479abdef912" Gvlk="PVMJN-6DFY6-9CCP6-7BKTT-D3WVR" /> + <SkuItem DisplayName="Windows 10 Home / Core N" Id="7b9e1751-a8da-4f75-9560-5fadfe3d8e38" Gvlk="3KHY7-WNT83-DGQKR-F7HPR-844BM" /> + <SkuItem DisplayName="Windows 10 Home / Core Single Language" Id="cd918a57-a41b-4c82-8dce-1a538e221a83" Gvlk="7HNRX-D7KGG-3K4RQ-4WPJ4-YTDFH" /> + </KmsItem> + + <KmsItem DisplayName="Windows 10 2015 (Volume)" Id="58e2134f-8e11-4d17-9cb2-91069c151148" DefaultKmsProtocol="6.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 10 Education" Id="e0c42288-980c-4788-a014-c080d2e1926e" Gvlk="NW6C2-QMPVW-D7KKK-3GKT6-VCFB2" /> + <SkuItem DisplayName="Windows 10 Education N" Id="3c102355-d027-42c6-ad23-2e7ef8a02585" Gvlk="2WH4N-8QGBV-H22JP-CT43Q-MDWWJ" /> + <SkuItem DisplayName="Windows 10 Enterprise" Id="73111121-5638-40f6-bc11-f1d7b0d64300" Gvlk="NPPR9-FWDCX-D2C8J-H872K-2YT43" /> + <SkuItem DisplayName="Windows 10 Enterprise 2015 LTSB" Id="7b51a46c-0c04-4e8f-9af4-8496cca90d5e" Gvlk="WNMTR-4C88C-JK8YV-HQ7T2-76DF9" /> + <SkuItem DisplayName="Windows 10 Enterprise 2015 LTSB N" Id="87b838b7-41b6-4590-8318-5797951d8529" Gvlk="2F77B-TNFGY-69QQF-B8YKP-D69TJ" /> + <SkuItem DisplayName="Windows 10 Enterprise N" Id="e272e3e2-732f-4c65-a8f0-484747d0d947" Gvlk="DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4" /> + <SkuItem DisplayName="Windows 10 Professional Workstation" Id="82bbc092-bc50-4e16-8e18-b74fc486aec3" Gvlk="NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J" /> + <SkuItem DisplayName="Windows 10 Professional Workstation N" Id="4b1571d3-bafb-4b40-8087-a961be2caf65" Gvlk="9FNHH-K3HBT-3W4TD-6383H-6XYWF" /> + <SkuItem DisplayName="Windows 10 Professional" Id="2de67392-b7a7-462a-b1ca-108dd189f588" Gvlk="W269N-WFGWX-YVC9B-4J6C9-T83GX" /> + <SkuItem DisplayName="Windows 10 Professional Education" Id="3f1afc82-f8ac-4f6c-8005-1d233e606eee" Gvlk="6TP4R-GNPTD-KYYHQ-7B7DP-J447Y" /> + <SkuItem DisplayName="Windows 10 Professional Education N" Id="5300b18c-2e33-4dc2-8291-47ffcec746dd" Gvlk="YVWGF-BXNMC-HTQYQ-CPQ99-66QFC" /> + <SkuItem DisplayName="Windows 10 Professional N" Id="a80b5abf-76ad-428b-b05d-a47d2dffeebf" Gvlk="MH37W-N47XK-V7XM9-C7227-GCQG9" /> + <SkuItem DisplayName="Windows 10 Professional [Preview]" Id="ff808201-fec6-4fd4-ae16-abbddade5706" Gvlk="XQHPH-N4D9W-M8P96-DPDFP-TMVPY" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 10 Enterprise [Preview]" Id="43f2ab05-7c87-4d56-b27c-44d0f9a3dabd" Gvlk="QNMXX-GCD3W-TCCT4-872RV-G6P4J" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 10 Enterprise for Virtual Desktops" Id="ec868e65-fadf-4759-b23e-93fe37f2cc29" Gvlk="CPWHC-NT2C7-VYW78-DHDB2-PG3GK" /> + <SkuItem DisplayName="Windows 10 Remote Server" Id="e4db50ea-bda1-4566-b047-0ca50abc6f07" Gvlk="7NBT4-WGBQX-MP4H7-QXFF8-YP3KX" /> + <SkuItem DisplayName="Windows 10 S (Lean)" Id="0df4f814-3f57-4b8b-9a9d-fddadcd69fac" Gvlk="NBTWJ-3DR69-3C4V8-C26MC-GQ9M6" /> + </KmsItem> + + <KmsItem DisplayName="Windows 7" Id="7fde5219-fbfa-484a-82c9-34d1ad53e856" DefaultKmsProtocol="4.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 7 Enterprise" Id="ae2ee509-1b34-41c0-acb7-6d4650168915" Gvlk="33PXH-7Y6KF-2VJC9-XBBR8-HVTHH" /> + <SkuItem DisplayName="Windows 7 Enterprise E" Id="46bbed08-9c7b-48fc-a614-95250573f4ea" Gvlk="C29WB-22CC8-VJ326-GHFJW-H9DH4" /> + <SkuItem DisplayName="Windows 7 Enterprise N" Id="1cb6d605-11b3-4e14-bb30-da91c8e3983a" Gvlk="YDRBP-3D83W-TY26F-D46B2-XCKRJ" /> + <SkuItem DisplayName="Windows 7 Professional" Id="b92e9980-b9d5-4821-9c94-140f632f6312" Gvlk="FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4" /> + <SkuItem DisplayName="Windows 7 Professional E" Id="5a041529-fef8-4d07-b06f-b59b573b32d2" Gvlk="W82YF-2Q76Y-63HXB-FGJG9-GF7QX" /> + <SkuItem DisplayName="Windows 7 Professional N" Id="54a09a0d-d57b-4c10-8b69-a842d6590ad5" Gvlk="MRPKT-YTG23-K7D7T-X2JMM-QY7MG" /> + <SkuItem DisplayName="Windows 7 Embedded POSReady" Id="db537896-376f-48ae-a492-53d0547773d0" Gvlk="YBYF6-BHCR3-JPKRB-CDW7B-F9BK4" /> + <SkuItem DisplayName="Windows 7 Embedded Standard" Id="e1a8296a-db37-44d1-8cce-7bc961d59c54" Gvlk="XGY72-BRBBT-FF8MH-2GG8H-W7KCW" /> + <SkuItem DisplayName="Windows 7 ThinPC" Id="aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395" Gvlk="73KQT-CD9G6-K7TQG-66MRP-CQ22C" /> + </KmsItem> + + <KmsItem DisplayName="Windows 8 (Retail)" Id="bbb97b3b-8ca4-4a28-9717-89fabd42c4ac" IsRetail="true" DefaultKmsProtocol="5.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 8 Core / Server 2012" Id="c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60" Gvlk="BN3D2-R7TKB-3YPBD-8DRP2-27GG4" /> + <SkuItem DisplayName="Windows 8 Core / Server 2012 Country Specific" Id="9d5584a2-2d85-419a-982c-a00888bb9ddf" Gvlk="4K36P-JN4VD-GDC6V-KDT89-DYFKP" /> + <SkuItem DisplayName="Windows 8 Core / Server 2012 N" Id="197390a0-65f6-4a95-bdc4-55d58a3b0253" Gvlk="8N2M2-HWPGY-7PGT9-HGDD8-GVGGY" /> + <SkuItem DisplayName="Windows 8 Core / Server 2012 Single Language" Id="8860fcd4-a77b-4a20-9045-a150ff11d609" Gvlk="2WN2H-YGCQR-KFX6K-CD6TF-84YXQ" /> + <SkuItem DisplayName="Windows 8 Professional WMC" Id="a00018a3-f20f-4632-bf7c-8daa5351c914" Gvlk="GNBB8-YVD74-QJHX6-27H4K-8QHDG" /> + </KmsItem> + + <KmsItem DisplayName="Windows 8 (Volume)" Id="3c40b358-5948-45af-923b-53d21fcc7e79" DefaultKmsProtocol="5.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 8 Embedded Industry Professional" Id="10018baf-ce21-4060-80bd-47fe74ed4dab" Gvlk="RYXVT-BNQG7-VD29F-DBMRY-HT73M" /> + <SkuItem DisplayName="Windows 8 Embedded Industry Enterprise" Id="18db1848-12e0-4167-b9d7-da7fcda507db" Gvlk="NKB3R-R2F8T-3XCDP-7Q2KW-XWYQ2" /> + <SkuItem DisplayName="Windows 8 Enterprise" Id="458e1bec-837a-45f6-b9d5-925ed5d299de" Gvlk="32JNW-9KQ84-P47T8-D8GGY-CWCK7" /> + <SkuItem DisplayName="Windows 8 Enterprise N" Id="e14997e7-800a-4cf7-ad10-de4b45b578db" Gvlk="JMNMF-RHW7P-DMY6X-RF3DR-X2BQT" /> + <SkuItem DisplayName="Windows 8 Professional" Id="a98bcd6d-5343-4603-8afe-5908e4611112" Gvlk="NG4HW-VH26C-733KW-K6F98-J8CK4" /> + <SkuItem DisplayName="Windows 8 Professional N" Id="ebf245c1-29a8-4daf-9cb1-38dfc608a8c8" Gvlk="XCVCF-2NXM9-723PB-MHCB7-2RYQQ" /> + </KmsItem> + + <KmsItem DisplayName="Windows 8.1 (Retail)" Id="6d646890-3606-461a-86ab-598bb84ace82" IsRetail="true" DefaultKmsProtocol="6.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 8.1 Core" Id="fe1c3238-432a-43a1-8e25-97e7d1ef10f3" Gvlk="M9Q9P-WNJJT-6PXPY-DWX8H-6XWKK" /> + <SkuItem DisplayName="Windows 8.1 Core ARM" Id="ffee456a-cd87-4390-8e07-16146c672fd0" Gvlk="XYTND-K6QKT-K2MRH-66RTM-43JKP" /> + <SkuItem DisplayName="Windows 8.1 Core Country Specific" Id="db78b74f-ef1c-4892-abfe-1e66b8231df6" Gvlk="NCTT7-2RGK8-WMHRF-RY7YQ-JTXG3" /> + <SkuItem DisplayName="Windows 8.1 Core N" Id="78558a64-dc19-43fe-a0d0-8075b2a370a3" Gvlk="7B9N3-D94CG-YTVHR-QBPX3-RJP64" /> + <SkuItem DisplayName="Windows 8.1 Core Single Language" Id="c72c6a1d-f252-4e7e-bdd1-3fca342acb35" Gvlk="BB6NG-PQ82V-VRDPW-8XVD2-V8P66" /> + <SkuItem DisplayName="Windows 8.1 Professional Student" Id="e58d87b5-8126-4580-80fb-861b22f79296" Gvlk="MX3RK-9HNGX-K3QKC-6PJ3F-W8D7B" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 8.1 Professional Student N" Id="cab491c7-a918-4f60-b502-dab75e334f40" Gvlk="TNFGH-2R6PB-8XM3K-QYHX2-J4296" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 8.1 Professional WMC" Id="096ce63d-4fac-48a9-82a9-61ae9e800e5f" Gvlk="789NJ-TQK6T-6XTH8-J39CJ-J8D3P" /> + </KmsItem> + + <KmsItem DisplayName="Windows 8.1 (Volume)" Id="cb8fc780-2c05-495a-9710-85afffc904d7" DefaultKmsProtocol="6.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 8.1 Core Connected" Id="e9942b32-2e55-4197-b0bd-5ff58cba8860" Gvlk="3PY8R-QHNP9-W7XQD-G6DPH-3J2C9" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 8.1 Core Connected Country Specific" Id="ba998212-460a-44db-bfb5-71bf09d1c68b" Gvlk="R962J-37N87-9VVK2-WJ74P-XTMHR" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 8.1 Core Connected N" Id="c6ddecd6-2354-4c19-909b-306a3058484e" Gvlk="Q6HTR-N24GM-PMJFP-69CD8-2GXKR" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 8.1 Core Connected Single Language" Id="b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c" Gvlk="KF37N-VDV38-GRRTV-XH8X6-6F3BB" IsGeneratedGvlk="true" /> + <SkuItem DisplayName="Windows 8.1 Enterprise" Id="81671aaf-79d1-4eb1-b004-8cbbe173afea" Gvlk="MHF9N-XY6XB-WVXMC-BTDCT-MKKG7" /> + <SkuItem DisplayName="Windows 8.1 Enterprise N" Id="113e705c-fa49-48a4-beea-7dd879b46b14" Gvlk="TT4HM-HN7YT-62K67-RGRQJ-JFFXW" /> + <SkuItem DisplayName="Windows 8.1 Professional" Id="c06b6981-d7fd-4a35-b7b4-054742b7af67" Gvlk="GCRJD-8NW9H-F2CDX-CCM8D-9D6T9" /> + <SkuItem DisplayName="Windows 8.1 Professional N" Id="7476d79f-8e48-49b4-ab63-4d0b813a16e4" Gvlk="HMCNV-VVBFX-7HMBH-CTY9B-B4FXY" /> + <SkuItem DisplayName="Windows 8.1 Embedded Industry Professional" Id="0ab82d54-47f4-4acb-818c-cc5bf0ecb649" Gvlk="NMMPB-38DD4-R2823-62W8D-VXKJB" /> + <SkuItem DisplayName="Windows 8.1 Embedded Industry Automotive" Id="f7e88590-dfc7-4c78-bccb-6f3865b99d1a" Gvlk="VHXM3-NR6FT-RY6RT-CK882-KW2CJ" /> + <SkuItem DisplayName="Windows 8.1 Embedded Industry Enterprise" Id="cd4e2d9f-5059-4a50-a92d-05d5bb1267c7" Gvlk="FNFKF-PWTVT-9RC8H-32HB2-JB34X" /> + </KmsItem> + + <KmsItem DisplayName="Windows Preview" Id="5f94a0bb-d5a0-4081-a685-5819418b2fe0" DefaultKmsProtocol="5.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows 8.1 Enterprise [Preview]" Id="cde952c7-2f96-4d9d-8f2b-2d349f64fc51" Gvlk="2MP7K-98NK8-WPVF3-Q2WDG-VMD98" /> + <SkuItem DisplayName="Windows 8.1 Professional (Blue) [Preview]" Id="a4383e6b-dada-423d-a43d-f25678429676" Gvlk="MTWNQ-CKDHJ-3HXW9-Q2PFX-WB2HQ" /> + <SkuItem DisplayName="Windows 8 Professional WMC [Preview]" Id="cf59a07b-1a2a-4be0-bfe0-423b5823e663" Gvlk="MY4N9-TGH34-4X4VY-8FG2T-RRDPV" /> + <SkuItem DisplayName="Windows 8.x [Preview]" Id="2b9c337f-7a1d-4271-90a3-c6855a2b8a1c" Gvlk="MPWP3-DXNP9-BRD79-W8WFP-3YFJ6" /> + <SkuItem DisplayName="Windows 8.x ARM [Preview]" Id="631ead72-a8ab-4df8-bbdf-372029989bdd" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2008 A (Web and HPC)" Id="33e156e4-b76f-4a52-9f91-f641dd95ac48" DefaultKmsProtocol="4.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2008 Web" Id="ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b" Gvlk="WYR28-R7TFJ-3X2YQ-YCY4H-M249D" /> + <SkuItem DisplayName="Windows Server 2008 Compute Cluster" Id="7afb1156-2c1d-40fc-b260-aab7442b62fe" Gvlk="RCTX3-KWVHP-BR6TB-RB6DM-6X7HP" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2008 B (Standard and Enterprise)" Id="8fe53387-3087-4447-8985-f75132215ac9" DefaultKmsProtocol="4.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2008 Standard" Id="ad2542d4-9154-4c6d-8a44-30f11ee96989" Gvlk="TM24T-X9RMF-VWXK6-X8JC9-BFGM2" /> + <SkuItem DisplayName="Windows Server 2008 Standard without Hyper-V" Id="2401e3d0-c50a-4b58-87b2-7e794b7d2607" Gvlk="W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ" /> + <SkuItem DisplayName="Windows Server 2008 Enterprise" Id="c1af4d90-d1bc-44ca-85d4-003ba33db3b9" Gvlk="YQGMW-MPWTJ-34KDK-48M3W-X4Q6V" /> + <SkuItem DisplayName="Windows Server 2008 Enterprise without Hyper-V" Id="8198490a-add0-47b2-b3ba-316b12d647b4" Gvlk="39BXF-X8Q23-P2WWT-38T2F-G3FPG" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2008 C (Datacenter)" Id="8a21fdf3-cbc5-44eb-83f3-fe284e6680a7" DefaultKmsProtocol="4.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2008 Datacenter" Id="68b6e220-cf09-466b-92d3-45cd964b9509" Gvlk="7M67G-PC374-GR742-YH8V4-TCBY3" /> + <SkuItem DisplayName="Windows Server 2008 Datacenter without Hyper-V" Id="fd09ef77-5647-4eff-809c-af2b64659a45" Gvlk="22XQ2-VRXRG-P8D42-K34TD-G3QQC" /> + <SkuItem DisplayName="Windows Server 2008 for Itanium" Id="01ef176b-3e0d-422a-b4f8-4ea880035e8f" Gvlk="4DWFP-JF3DJ-B7DTH-78FJB-PDRHK" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2008 R2 A (Web and HPC)" Id="0fc6ccaf-ff0e-4fae-9d08-4370785bf7ed" DefaultKmsProtocol="4.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows MultiPoint Server 2010" Id="f772515c-0e87-48d5-a676-e6962c3e1195" Gvlk="736RG-XDKJK-V34PF-BHK87-J6X3K" /> + <SkuItem DisplayName="Windows Server 2008 R2 Web" Id="a78b8bd9-8017-4df5-b86a-09f756affa7c" Gvlk="6TPJF-RBVHG-WBW2R-86QPH-6RTM4" /> + <SkuItem DisplayName="Windows Server 2008 R2 HPC Edition" Id="cda18cf3-c196-46ad-b289-60c072869994" Gvlk="TT8MH-CG224-D3D7Q-498W2-9QCTX" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2008 R2 B (Standard and Enterprise)" Id="ca87f5b6-cd46-40c0-b06d-8ecd57a4373f" DefaultKmsProtocol="4.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2008 R2 Standard" Id="68531fb9-5511-4989-97be-d11a0f55633f" Gvlk="YC6KT-GKW9T-YTKYR-T4X34-R7VHC" /> + <SkuItem DisplayName="Windows Server 2008 R2 Enterprise" Id="620e2b3d-09e7-42fd-802a-17a13652fe7a" Gvlk="489J6-VHDMP-X63PK-3K798-CPX3Y" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2008 R2 C (Datacenter)" Id="b2ca2689-a9a8-42d7-938d-cf8e9f201958" DefaultKmsProtocol="4.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2008 R2 Datacenter" Id="7482e61b-c589-4b7f-8ecc-46d455ac3b87" Gvlk="74YFP-3QFB3-KQT8W-PMXWJ-7M648" /> + <SkuItem DisplayName="Windows Server 2008 R2 for Itanium Enterprise" Id="8a26851c-1c7e-48d3-a687-fbca9b9ac16b" Gvlk="GT63C-RJFQ3-4GMB6-BRFB9-CB83V" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2012" Id="8665cb71-468c-4aa3-a337-cb9bc9d5eaac" DefaultKmsProtocol="5.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2012 Datacenter" Id="d3643d60-0c42-412d-a7d6-52e6635327f6" Gvlk="48HP8-DN98B-MYWDG-T2DCC-8W83P" /> + <SkuItem DisplayName="Windows Server 2012 MultiPoint Premium" Id="95fd1c83-7df5-494a-be8b-1300e1c9d1cd" Gvlk="XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G" /> + <SkuItem DisplayName="Windows Server 2012 MultiPoint Standard" Id="7d5486c7-e120-4771-b7f1-7b56c6d3170c" Gvlk="HM7DN-YVMH3-46JC3-XYTG7-CYQJJ" /> + <SkuItem DisplayName="Windows Server 2012 Standard" Id="f0f5ec41-0d55-4732-af02-440a44a3cf0f" Gvlk="XC9B7-NBPP2-83J2H-RHMBY-92BT4" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2012 R2" Id="8456efd3-0c04-4089-8740-5b7238535a65" DefaultKmsProtocol="6.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2012 R2 Cloud Storage" Id="b743a2be-68d4-4dd3-af32-92425b7bb623" Gvlk="3NPTF-33KPT-GGBPR-YX76B-39KDD" /> + <SkuItem DisplayName="Windows Server 2012 R2 Datacenter" Id="00091344-1ea4-4f37-b789-01750ba6988c" Gvlk="W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9" /> + <SkuItem DisplayName="Windows Server 2012 R2 Essentials" Id="21db6ba4-9a7b-4a14-9e29-64a60c59301d" Gvlk="KNC87-3J2TX-XB4WP-VCPJV-M4FWM" /> + <SkuItem DisplayName="Windows Server 2012 R2 Standard" Id="b3ca044e-a358-4d68-9883-aaa2941aca99" Gvlk="D2N9P-3P6X9-2R39C-7RTCD-MDVJX" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server 2016" Id="6e9fc069-257d-4bc4-b4a7-750514d32743" DefaultKmsProtocol="6.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2016 Azure Core" Id="3dbf341b-5f6c-4fa7-b936-699dce9e263f" Gvlk="VP34G-4NPPG-79JTQ-864T4-R3MQX" /> + <SkuItem DisplayName="Windows Server 2016 Cloud Storage" Id="7b4433f4-b1e7-4788-895a-c45378d38253" Gvlk="QN4C6-GBJD2-FB422-GHWJK-GJG2R" /> + <SkuItem DisplayName="Windows Server 2016 Datacenter" Id="21c56779-b449-4d20-adfc-eece0e1ad74b" Gvlk="CB7KF-BWN84-R7R2Y-793K2-8XDDG" /> + <SkuItem DisplayName="Windows Server 2016 Essentials" Id="2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283" Gvlk="JCKRF-N37P4-C2D82-9YXRT-4M63B" /> + <SkuItem DisplayName="Windows Server 2016 Standard" Id="8c1c5410-9f39-4805-8c9d-63a07706358f" Gvlk="WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY" /> + <SkuItem DisplayName="Windows Server 2016 ARM64" Id="43d9af6e-5e86-4be8-a797-d072a046896c" Gvlk="K9FYF-G6NCK-73M32-XMVPY-F9DRR" /> + <SkuItem DisplayName="Windows Server 2016 Datacenter (Semi-Annual Channel v.1803)" Id="e49c08e7-da82-42f8-bde2-b570fbcae76c" Gvlk="2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG" /> + <SkuItem DisplayName="Windows Server 2016 Standard (Semi-Annual Channel v.1803)" Id="61c5ef22-f14f-4553-a824-c4b31e84b100" Gvlk="PTXN8-JFHJM-4WC78-MPCBR-9W4KR" /> + </KmsItem> + + <KmsItem DisplayName="Windows Server Preview" Id="6d5f5270-31ac-433e-b90a-39892923c657" IsPreview="true" DefaultKmsProtocol="6.0" NCountPolicy="5"> + <SkuItem DisplayName="Windows Server 2016 Datacenter [Preview]" Id="ba947c44-d19d-4786-b6ae-22770bc94c54" Gvlk="VRDD2-NVGDP-K7QG8-69BR4-TVFHB" /> + </KmsItem> + + <KmsItem DisplayName="Windows Vista" Id="212a64dc-43b1-4d3d-a30c-2fc69d2095c6" DefaultKmsProtocol="4.0" NCountPolicy="25"> + <SkuItem DisplayName="Windows Vista Business" Id="4f3d1606-3fea-4c01-be3c-8d671c401e3b" Gvlk="YFKBB-PQJJV-G996G-VWGXY-2V3X8" /> + <SkuItem DisplayName="Windows Vista Business N" Id="2c682dc2-8b68-4f63-a165-ae291d4cf138" Gvlk="HMBQG-8H2RH-C77VX-27R82-VMQBT" /> + <SkuItem DisplayName="Windows Vista Enterprise" Id="cfd8ff08-c0d7-452b-9f60-ef5c70c32094" Gvlk="VKK3X-68KWM-X2YGT-QR4M6-4BWMV" /> + <SkuItem DisplayName="Windows Vista Enterprise N" Id="d4f54950-26f2-4fb4-ba21-ffab16afcade" Gvlk="VTC42-BM838-43QHV-84HX6-XJXKV" /> + </KmsItem> + + </AppItem> + + <AppItem DisplayName="Office 14 (2010)" VlmcsdIndex="1" MinActiveClients="10" Id="59a52881-a989-479d-af46-f275c6370663"> + + <KmsItem DisplayName="Office 2010" Id="e85af946-2e25-47b7-83e1-bebcebeac611" CanMapToDefaultCsvlk="false" DefaultKmsProtocol="4.0" NCountPolicy="5"> + <SkuItem DisplayName="Office Access 2010" Id="8ce7e872-188c-4b98-9d90-f8f90b7aad02" Gvlk="V7Y44-9T38C-R2VJK-666HK-T7DDX" /> + <SkuItem DisplayName="Office Excel 2010" Id="cee5d470-6e3b-4fcc-8c2b-d17428568a9f" Gvlk="H62QG-HXVKF-PP4HP-66KMR-CW9BM" /> + <SkuItem DisplayName="Office Groove (SharePoint Workspace) 2010" Id="8947d0b8-c33b-43e1-8c56-9b674c052832" Gvlk="QYYW6-QP4CB-MBV6G-HYMCJ-4T3J4" /> + <SkuItem DisplayName="Office InfoPath 2010" Id="ca6b6639-4ad6-40ae-a575-14dee07f6430" Gvlk="K96W8-67RPQ-62T9Y-J8FQJ-BT37T" /> + <SkuItem DisplayName="Office Mondo 1 2010" Id="09ed9640-f020-400a-acd8-d7d867dfd9c2" Gvlk="YBJTT-JG6MD-V9Q7P-DBKXJ-38W9R" /> + <SkuItem DisplayName="Office Mondo 2 2010" Id="ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c" Gvlk="7TC2V-WXF6P-TD7RT-BQRXR-B8K32" /> + <SkuItem DisplayName="Office OneNote 2010" Id="ab586f5c-5256-4632-962f-fefd8b49e6f4" Gvlk="Q4Y4M-RHWJM-PY37F-MTKWH-D3XHX" /> + <SkuItem DisplayName="Office OutLook 2010" Id="ecb7c192-73ab-4ded-acf4-2399b095d0cc" Gvlk="7YDC2-CWM8M-RRTJC-8MDVC-X3DWQ" /> + <SkuItem DisplayName="Office PowerPoint 2010" Id="45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a" Gvlk="RC8FX-88JRY-3PF7C-X8P67-P4VTT" /> + <SkuItem DisplayName="Office Professional Plus 2010" Id="6f327760-8c5c-417c-9b61-836a98287e0c" Gvlk="VYBBJ-TRJPB-QFQRF-QFT4D-H3GVB" /> + <SkuItem DisplayName="Office Project Professional 2010" Id="df133ff7-bf14-4f95-afe3-7b48e7e331ef" Gvlk="YGX6F-PGV49-PGW3J-9BTGG-VHKC6" /> + <SkuItem DisplayName="Office Project Standard 2010" Id="5dc7bf61-5ec9-4996-9ccb-df806a2d0efe" Gvlk="4HP3K-88W3F-W2K3D-6677X-F9PGB" /> + <SkuItem DisplayName="Office Publisher 2010" Id="b50c4f75-599b-43e8-8dcd-1081a7967241" Gvlk="BFK7F-9MYHM-V68C7-DRQ66-83YTP" /> + <SkuItem DisplayName="Office Small Business Basics 2010" Id="ea509e87-07a1-4a45-9edc-eba5a39f36af" Gvlk="D6QFG-VBYP2-XQHM7-J97RH-VVRCK" /> + <SkuItem DisplayName="Office Standard 2010" Id="9da2a678-fb6b-4e67-ab84-60dd6a9c819a" Gvlk="V7QKV-4XVVR-XYV4D-F7DFM-8R6BM" /> + <SkuItem DisplayName="Office Visio Premium 2010" Id="92236105-bb67-494f-94c7-7f7a607929bd" Gvlk="D9DWC-HPYVV-JGF4P-BTWQB-WX8BJ" /> + <SkuItem DisplayName="Office Visio Professional 2010" Id="e558389c-83c3-4b29-adfe-5e4d7f46c358" Gvlk="7MCW8-VRQVK-G677T-PDJCM-Q8TCP" /> + <SkuItem DisplayName="Office Visio Standard 2010" Id="9ed833ff-4f92-4f36-b370-8683a4f13275" Gvlk="767HD-QGMWX-8QTDB-9G3R2-KHFGJ" /> + <SkuItem DisplayName="Office Word 2010" Id="2d0882e7-a4e7-423b-8ccc-70d91e0158b1" Gvlk="HVHB3-C6FV7-KQX9W-YQG79-CRY7T" /> + </KmsItem> + + </AppItem> + + <AppItem DisplayName="Office 15 (2013) / 16 (2016) / 17 (2019)" VlmcsdIndex="5" MinActiveClients="10" Id="0ff1ce15-a989-479d-af46-f275c6370663"> + + <KmsItem DisplayName="Office 2013" Id="e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0" CanMapToDefaultCsvlk="false" DefaultKmsProtocol="5.0" NCountPolicy="5"> + <SkuItem DisplayName="Office Access 2013" Id="6ee7622c-18d8-4005-9fb7-92db644a279b" Gvlk="NG2JY-H4JBT-HQXYP-78QH9-4JM2D" /> + <SkuItem DisplayName="Office Excel 2013" Id="f7461d52-7c2b-43b2-8744-ea958e0bd09a" Gvlk="VGPNG-Y7HQW-9RHP7-TKPV3-BG7GB" /> + <SkuItem DisplayName="Office InfoPath 2013" Id="a30b8040-d68a-423f-b0b5-9ce292ea5a8f" Gvlk="DKT8B-N7VXH-D963P-Q4PHY-F8894" /> + <SkuItem DisplayName="Office Lync 2013" Id="1b9f11e3-c85c-4e1b-bb29-879ad2c909e3" Gvlk="2MG3G-3BNTT-3MFW9-KDQW3-TCK7R" /> + <SkuItem DisplayName="Office Mondo 2013" Id="dc981c6b-fc8e-420f-aa43-f8f33e5c0923" Gvlk="42QTK-RN8M7-J3C4G-BBGYM-88CYV" /> + <SkuItem DisplayName="Office OneNote 2013" Id="efe1f3e6-aea2-4144-a208-32aa872b6545" Gvlk="TGN6P-8MMBC-37P2F-XHXXK-P34VW" /> + <SkuItem DisplayName="Office OutLook 2013" Id="771c3afa-50c5-443f-b151-ff2546d863a0" Gvlk="QPN8Q-BJBTJ-334K3-93TGY-2PMBT" /> + <SkuItem DisplayName="Office PowerPoint 2013" Id="8c762649-97d1-4953-ad27-b7e2c25b972e" Gvlk="4NT99-8RJFH-Q2VDH-KYG2C-4RD4F" /> + <SkuItem DisplayName="Office Professional Plus 2013" Id="b322da9c-a2e2-4058-9e4e-f59a6970bd69" Gvlk="YC7DK-G2NP3-2QQC3-J6H88-GVGXT" /> + <SkuItem DisplayName="Office Project Professional 2013" Id="4a5d124a-e620-44ba-b6ff-658961b33b9a" Gvlk="FN8TT-7WMH6-2D4X9-M337T-2342K" /> + <SkuItem DisplayName="Office Project Standard 2013" Id="427a28d1-d17c-4abf-b717-32c780ba6f07" Gvlk="6NTH3-CW976-3G3Y2-JK3TX-8QHTT" /> + <SkuItem DisplayName="Office Publisher 2013" Id="00c79ff1-6850-443d-bf61-71cde0de305f" Gvlk="PN2WF-29XG2-T9HJ7-JQPJR-FCXK4" /> + <SkuItem DisplayName="Office Standard 2013" Id="b13afb38-cd79-4ae5-9f7f-eed058d750ca" Gvlk="KBKQT-2NMXY-JJWGP-M62JB-92CD4" /> + <SkuItem DisplayName="Office Visio Professional 2013" Id="e13ac10e-75d0-4aff-a0cd-764982cf541c" Gvlk="C2FG9-N6J68-H8BTJ-BW3QX-RM3B3" /> + <SkuItem DisplayName="Office Visio Standard 2013" Id="ac4efaf0-f81f-4f61-bdf7-ea32b02ab117" Gvlk="J484Y-4NKBF-W2HMG-DBMJC-PGWR7" /> + <SkuItem DisplayName="Office Word 2013" Id="d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3" Gvlk="6Q7VD-NX8JD-WJ2VH-88V73-4GBJ7" /> + </KmsItem> + + <KmsItem DisplayName="Office 2013 [Pre-Release]" Id="aa4c7968-b9da-4680-92b6-acb25e2f866c" IsPreview="true" CanMapToDefaultCsvlk="false" DefaultKmsProtocol="5.0" NCountPolicy="5"> + <SkuItem DisplayName="Office Access 2013 [Pre-Release]" Id="44b538e2-fb34-4732-81e4-644c17d2e746" Gvlk="DJBH8-RGN7Q-836KD-DMP3M-DM9MF" /> + <SkuItem DisplayName="Office Excel 2013 [Pre-Release]" Id="9373bfa0-97b3-4587-ab73-30934461d55c" Gvlk="Q3BNP-3WXDT-GG8HF-24KMW-HMDBK" /> + <SkuItem DisplayName="Office Groove (SharePoint Workspace) 2013 [Pre-Release]" Id="aa286eb4-556f-4eeb-967c-c1b771b7673e" Gvlk="WVCGG-NK4FG-7XKXM-BD4WF-3C624" /> + <SkuItem DisplayName="Office InfoPath 2013 [Pre-Release]" Id="7ccc8256-fbaa-49c6-b2a9-f5afb4257cd2" Gvlk="7KPJJ-N8TT7-CK3KR-QTV98-YPVXQ" /> + <SkuItem DisplayName="Office Lync 2013 [Pre-Release]" Id="c53dfe17-cc00-4967-b188-a088a965494d" Gvlk="XNVD3-RYC7T-7R6BT-WX6CF-8BYH7" /> + <SkuItem DisplayName="Office Mondo 2013 [Pre-Release]" Id="2816a87d-e1ed-4097-b311-e2341c57b179" Gvlk="GCGCN-6FJRM-TR9Q3-BGMWJ-78KQV" /> + <SkuItem DisplayName="Office OneNote 2013 [Pre-Release]" Id="67c0f908-184f-4f64-8250-12db797ab3c3" Gvlk="VYNYX-8GPBC-7FQMD-D6B7B-7MDFD" /> + <SkuItem DisplayName="Office Outlook 2013 [Pre-Release]" Id="7bce4e7a-dd80-4682-98fa-f993725803d2" Gvlk="X2KNB-FRRG2-WXDPH-739DM-DM9RH" /> + <SkuItem DisplayName="Office PowerPoint 2013 [Pre-Release]" Id="1ec10c0a-54f6-453e-b85a-6fa1bbfea9b7" Gvlk="B8CT8-BTNFQ-XQXBK-BFWV8-HMDFQ" /> + <SkuItem DisplayName="Office Professional Plus 2013 [Pre-Release]" Id="87d2b5bf-d47b-41fb-af62-71c382f5cc85" Gvlk="PGD67-JN23K-JGVWV-KTHP4-GXR9G" /> + <SkuItem DisplayName="Office Project Professional 2013 [Pre-Release]" Id="3cfe50a9-0e03-4b29-9754-9f193f07b71f" Gvlk="NFKVM-DVG7F-TYWYR-3RPHY-F872K" /> + <SkuItem DisplayName="Office Project Standard 2013 [Pre-Release]" Id="39e49e57-ae68-4ee3-b098-26480df3da96" Gvlk="N89QF-GGB8J-BKD28-C4V28-W4XTK" /> + <SkuItem DisplayName="Office Publisher 2013 [Pre-Release]" Id="15aa2117-8f79-49a8-8317-753026d6a054" Gvlk="NB67P-J8XP4-XDK9B-V73VH-M4CKR" /> + <SkuItem DisplayName="Office Visio Professional 2013 [Pre-Release]" Id="cfbfd60e-0b5f-427d-917c-a4df42a80e44" Gvlk="B3C7Q-D6NH2-2VRFW-HHWDG-FVQB6" /> + <SkuItem DisplayName="Office Visio Standard 2013 [Pre-Release]" Id="7012cc81-8887-42e9-b17d-4e5e42760f0d" Gvlk="9MKNF-J9XQ6-JV4XB-FJQPY-43F43" /> + <SkuItem DisplayName="Office Word 2013 [Pre-Release]" Id="de9c7eb6-5a85-420d-9703-fff11bdd4d43" Gvlk="JBGD4-3JNG7-JWWGV-CR6TP-DC62Q" /> + </KmsItem> + + <KmsItem DisplayName="Office 2016" Id="85b5f61b-320b-4be3-814a-b76b2bfafc82" CanMapToDefaultCsvlk="false" DefaultKmsProtocol="6.0" NCountPolicy="5"> + <SkuItem DisplayName="Office Access 2016" Id="67c0fc0c-deba-401b-bf8b-9c8ad8395804" Gvlk="GNH9Y-D2J4T-FJHGG-QRVH7-QPFDW" /> + <SkuItem DisplayName="Office Excel 2016" Id="c3e65d36-141f-4d2f-a303-a842ee756a29" Gvlk="9C2PK-NWTVB-JMPW8-BFT28-7FTBF" /> + <SkuItem DisplayName="Office Mondo 2016" Id="9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce" Gvlk="HFTND-W9MK4-8B7MJ-B6C4G-XQBR2" /> + <SkuItem DisplayName="Office Mondo Retail 2016" Id="e914ea6e-a5fa-4439-a394-a9bb3293ca09" Gvlk="DMTCJ-KNRKX-26982-JYCKT-P7KB6" /> + <SkuItem DisplayName="Office OneNote 2016" Id="d8cace59-33d2-4ac7-9b1b-9b72339c51c8" Gvlk="DR92N-9HTF2-97XKM-XW2WJ-XW3J6" /> + <SkuItem DisplayName="Office Outlook 2016" Id="ec9d9265-9d1e-4ed0-838a-cdc20f2551a1" Gvlk="R69KK-NTPKF-7M3Q4-QYBHW-6MT9B" /> + <SkuItem DisplayName="Office Powerpoint 2016" Id="d70b1bba-b893-4544-96e2-b7a318091c33" Gvlk="J7MQP-HNJ4Y-WJ7YM-PFYGF-BY6C6" /> + <SkuItem DisplayName="Office Professional Plus 2016" Id="d450596f-894d-49e0-966a-fd39ed4c4c64" Gvlk="XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99" /> + <SkuItem DisplayName="Office Project Professional 2016" Id="4f414197-0fc2-4c01-b68a-86cbb9ac254c" Gvlk="YG9NW-3K39V-2T3HJ-93F3Q-G83KT" /> + <SkuItem DisplayName="Office Project Professional 2016 C2R [Preview]" Id="829b8110-0e6f-4349-bca4-42803577788d" Gvlk="WGT24-HCNMF-FQ7XH-6M8K7-DRTW9" /> + <SkuItem DisplayName="Office Project Standard 2016" Id="da7ddabc-3fbe-4447-9e01-6ab7440b4cd4" Gvlk="GNFHQ-F6YQM-KQDGJ-327XX-KQBVC" /> + <SkuItem DisplayName="Office Project Standard 2016 C2R [Preview]" Id="cbbaca45-556a-4416-ad03-bda598eaa7c8" Gvlk="D8NRQ-JTYM3-7J2DX-646CT-6836M" /> + <SkuItem DisplayName="Office Publisher 2016" Id="041a06cb-c5b8-4772-809f-416d03d16654" Gvlk="F47MM-N3XJP-TQXJ9-BP99D-8K837" /> + <SkuItem DisplayName="Office Skype for Business 2016" Id="83e04ee1-fa8d-436d-8994-d31a862cab77" Gvlk="869NQ-FJ69K-466HW-QYCP2-DDBV6" /> + <SkuItem DisplayName="Office Standard 2016" Id="dedfa23d-6ed1-45a6-85dc-63cae0546de6" Gvlk="JNRGM-WHDWX-FJJG3-K47QV-DRTFM" /> + <SkuItem DisplayName="Office Visio Professional 2016" Id="6bf301c1-b94a-43e9-ba31-d494598c47fb" Gvlk="PD3PC-RHNGV-FXJ29-8JK7D-RJRJK" /> + <SkuItem DisplayName="Office Visio Professional 2016 C2R [Preview]" Id="b234abe3-0857-4f9c-b05a-4dc314f85557" Gvlk="69WXN-MBYV6-22PQG-3WGHK-RM6XC" /> + <SkuItem DisplayName="Office Visio Standard 2016" Id="aa2a7821-1827-4c2c-8f1d-4513a34dda97" Gvlk="7WHWN-4T7MP-G96JF-G33KR-W8GF4" /> + <SkuItem DisplayName="Office Visio Standard 2016 C2R [Preview]" Id="361fe620-64f4-41b5-ba77-84f8e079b1f7" Gvlk="NY48V-PPYYH-3F4PX-XJRKJ-W4423" /> + <SkuItem DisplayName="Office Word 2016" Id="bb11badf-d8aa-470e-9311-20eaf80fe5cc" Gvlk="WXY84-JN2Q9-RBCCQ-3Q3J3-3PFJ6" /> + <SkuItem DisplayName="Office Professional Plus 2019 C2R [Preview]" Id="0bc88885-718c-491d-921f-6f214349e79c" Gvlk="VQ9DP-NVHPH-T9HJC-J9PDT-KTQRG" /> + <SkuItem DisplayName="Office Project Professional 2019 C2R [Preview]" Id="fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9" Gvlk="XM2V9-DN9HH-QB449-XDGKC-W2RMW" /> + <SkuItem DisplayName="Office Visio Professional 2019 C2R [Preview]" Id="500f6619-ef93-4b75-bcb4-82819998a3ca" Gvlk="N2CG9-YD3YK-936X4-3WR82-Q3X4H" /> + </KmsItem> + + <KmsItem DisplayName="Office 2019" Id="617d9eb1-ef36-4f82-86e0-a65ae07b96c6" CanMapToDefaultCsvlk="false" DefaultKmsProtocol="6.0" NCountPolicy="5"> + <SkuItem DisplayName="Office Access 2019" Id="9e9bceeb-e736-4f26-88de-763f87dcc485" Gvlk="9N9PT-27V4Y-VJ2PD-YXFMF-YTFQT" /> + <SkuItem DisplayName="Office Excel 2019" Id="237854e9-79fc-4497-a0c1-a70969691c6b" Gvlk="TMJWT-YYNMB-3BKTF-644FC-RVXBD" /> + <SkuItem DisplayName="Office Outlook 2019" Id="c8f8a301-19f5-4132-96ce-2de9d4adbd33" Gvlk="7HD7K-N4PVK-BHBCQ-YWQRW-XW4VK" /> + <SkuItem DisplayName="Office Powerpoint 2019" Id="3131fd61-5e4f-4308-8d6d-62be1987c92c" Gvlk="RRNCX-C64HY-W2MM7-MCH9G-TJHMQ" /> + <SkuItem DisplayName="Office Professional Plus 2019" Id="85dd8b5f-eaa4-4af3-a628-cce9e77c9a03" Gvlk="NMMKJ-6RK4F-KMJVX-8D9MJ-6MWKP" /> + <SkuItem DisplayName="Office Project Professional 2019" Id="2ca2bf3f-949e-446a-82c7-e25a15ec78c4" Gvlk="B4NPR-3FKK7-T2MBV-FRQ4W-PKD2B" /> + <SkuItem DisplayName="Office Project Standard 2019" Id="1777f0e3-7392-4198-97ea-8ae4de6f6381" Gvlk="C4F7P-NCP8C-6CQPT-MQHV9-JXD2M" /> + <SkuItem DisplayName="Office Publisher 2019" Id="9d3e4cca-e172-46f1-a2f4-1d2107051444" Gvlk="G2KWX-3NW6P-PY93R-JXK2T-C9Y9V" /> + <SkuItem DisplayName="Office Skype for Business 2019" Id="734c6c6e-b0ba-4298-a891-671772b2bd1b" Gvlk="NCJ33-JHBBY-HTK98-MYCV8-HMKHJ" /> + <SkuItem DisplayName="Office Standard 2019" Id="6912a74b-a5fb-401a-bfdb-2e3ab46f4b02" Gvlk="6NWWJ-YQWMR-QKGCB-6TMB3-9D9HK" /> + <SkuItem DisplayName="Office Visio Professional 2019" Id="5b5cf08f-b81a-431d-b080-3450d8620565" Gvlk="9BGNQ-K37YR-RQHF2-38RQ3-7VCBB" /> + <SkuItem DisplayName="Office Visio Standard 2019" Id="e06d7df3-aad0-419d-8dfb-0ac37e2bdf39" Gvlk="7TQNQ-K3YQQ-3PFH7-CCPPM-X4VQ2" /> + <SkuItem DisplayName="Office Word 2019" Id="059834fe-a8ea-4bff-b67b-4d006b5447d3" Gvlk="PBX3G-NWMT6-Q7XBW-PYJGG-WXD33" /> + </KmsItem> + + </AppItem> + + </AppItems> + +</KmsData> diff --git a/py2-kms/aes.py b/py2-kms/aes.py index f952aeb..1cabcd9 100644 --- a/py2-kms/aes.py +++ b/py2-kms/aes.py @@ -4,13 +4,17 @@ # from the SlowAES project, http://code.google.com/p/slowaes/ # # Copyright (c) 2008 Josh Davis ( http://www.josh-davis.org ), -# Alex Martelli ( http://www.aleax.it ) +# Alex Martelli ( http://www.aleax.it ) # # Ported from C code written by Laurent Haan ( http://www.progressive-coding.com ) # # Licensed under the Apache License, Version 2.0 # http://www.apache.org/licenses/ +""" +Modified for py-kms +""" + import os import math diff --git a/py2-kms/client.py b/py2-kms/client.py index 952d01b..5410c48 100644 --- a/py2-kms/client.py +++ b/py2-kms/client.py @@ -1,16 +1,17 @@ #!/usr/bin/env python +import re import argparse import binascii import datetime import random import socket import string -import struct import sys import uuid import logging import os +import errno import filetimes, rpcBind, rpcRequest from dcerpc import MSRPCHeader, MSRPCBindNak, MSRPCRequestHeader, MSRPCRespHeader @@ -19,6 +20,7 @@ from kmsRequestV4 import kmsRequestV4 from kmsRequestV5 import kmsRequestV5 from kmsRequestV6 import kmsRequestV6 from rpcBase import rpcBase +from kmsDB2Dict import kmsDB2Dict from formatText import shell_message, justify config = {} @@ -29,7 +31,8 @@ def main(): parser.add_argument("port", nargs="?", action="store", default=1688, help='The port the KMS service is listening on. The default is \"1688\".', type=int) parser.add_argument("-m", "--mode", dest="mode", - choices=["WindowsVista","Windows7","Windows8","Windows81","Windows10","Office2010","Office2013","Office2016"], default="Windows81", + choices=["WindowsVista","Windows7","Windows8","Windows8.1","Windows10", + "Office2010","Office2013","Office2016","Office2019"], default="Windows8.1", help='Use this flag to manually specify a Microsoft product for testing the server. The default is \"Windows81\".', type=str) parser.add_argument("-c", "--cmid", dest="cmid", default=None, help='Use this flag to manually specify a CMID to use. If no CMID is specified, a random CMID will be generated.', type=str) @@ -62,7 +65,7 @@ a random machineName will be generated.', type=str) shell_message(nshell = [-4, 7]) bindResponse = s.recv(1024) except socket.error, e: - if e[0] == 104: + if e.errno == errno.ECONNRESET: logging.error("Connection reset by peer. Exiting...") sys.exit() else: @@ -84,15 +87,13 @@ a random machineName will be generated.', type=str) parsed = MSRPCRespHeader(response) kmsData = readKmsResponse(parsed['pduData'], kmsRequest, config) kmsResp = kmsData['response'] - + try: hwid = kmsData['hwid'] - except: - hwid = None - logging.info("KMS Host ePID: %s" % kmsResp['kmsEpid'].decode('utf-16le').encode('utf-8')) - if hwid is not None: logging.info("KMS Host HWID: %s" % binascii.b2a_hex(hwid).upper()) - + except KeyError: + pass + logging.info("KMS Host ePID: %s" % kmsResp['kmsEpid'].decode('utf-16le').encode('utf-8')) logging.info("KMS Host Current Client Count: %s" % kmsResp['currentClientCount']) logging.info("KMS VL Activation Interval: %s" % kmsResp['vLActivationInterval']) logging.info("KMS VL Renewal Interval: %s" % kmsResp['vLRenewalInterval']) @@ -110,79 +111,45 @@ def checkConfig(): if config['cmid'] is not None: try: uuid.UUID(config['cmid']) - except: + except ValueError: logging.error("Bad CMID. Exiting...") sys.exit() if config['machineName'] is not None: if len(config['machineName']) < 2 or len(config['machineName']) > 63: - logging.error("machineName must be between 2 and 63 characters in length.") + logging.error("Error: machineName must be between 2 and 63 characters in length.") sys.exit() def updateConfig(): - if config['mode'] == 'WindowsVista': - config['RequiredClientCount'] = 25 - config['KMSProtocolMajorVersion'] = 4 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "55c92734-d682-4d71-983e-d6ec3f16059f" - config['KMSClientSkuID'] = "cfd8ff08-c0d7-452b-9f60-ef5c70c32094" - config['KMSClientKMSCountedID'] = "212a64dc-43b1-4d3d-a30c-2fc69d2095c6" - elif config['mode'] == 'Windows7': - config['RequiredClientCount'] = 25 - config['KMSProtocolMajorVersion'] = 4 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "55c92734-d682-4d71-983e-d6ec3f16059f" - config['KMSClientSkuID'] = "ae2ee509-1b34-41c0-acb7-6d4650168915" - config['KMSClientKMSCountedID'] = "7fde5219-fbfa-484a-82c9-34d1ad53e856" - elif config['mode'] == 'Windows8': - config['RequiredClientCount'] = 25 - config['KMSProtocolMajorVersion'] = 5 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "55c92734-d682-4d71-983e-d6ec3f16059f" - config['KMSClientSkuID'] = "458e1bec-837a-45f6-b9d5-925ed5d299de" - config['KMSClientKMSCountedID'] = "3c40b358-5948-45af-923b-53d21fcc7e79" - elif config['mode'] == 'Windows81': - config['RequiredClientCount'] = 25 - config['KMSProtocolMajorVersion'] = 6 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "55c92734-d682-4d71-983e-d6ec3f16059f" - config['KMSClientSkuID'] = "81671aaf-79d1-4eb1-b004-8cbbe173afea" - config['KMSClientKMSCountedID'] = "cb8fc780-2c05-495a-9710-85afffc904d7" - elif config['mode'] == 'Windows10': - config['RequiredClientCount'] = 25 - config['KMSProtocolMajorVersion'] = 6 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "55c92734-d682-4d71-983e-d6ec3f16059f" - config['KMSClientSkuID'] = "73111121-5638-40f6-bc11-f1d7b0d64300" - config['KMSClientKMSCountedID'] = "58e2134f-8e11-4d17-9cb2-91069c151148" - elif config['mode'] == 'Office2010': - config['RequiredClientCount'] = 5 - config['KMSProtocolMajorVersion'] = 4 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "59a52881-a989-479d-af46-f275c6370663" - config['KMSClientSkuID'] = "6f327760-8c5c-417c-9b61-836a98287e0c" - config['KMSClientKMSCountedID'] = "e85af946-2e25-47b7-83e1-bebcebeac611" - elif config['mode'] == 'Office2013': - config['RequiredClientCount'] = 5 - config['KMSProtocolMajorVersion'] = 5 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "0ff1ce15-a989-479d-af46-f275c6370663" - config['KMSClientSkuID'] = "b322da9c-a2e2-4058-9e4e-f59a6970bd69" - config['KMSClientKMSCountedID'] = "e6a6f1bf-9d40-40c3-aa9f-c77ba21578c0" - elif config['mode'] == 'Office2016': - config['RequiredClientCount'] = 5 - config['KMSProtocolMajorVersion'] = 6 - config['KMSProtocolMinorVersion'] = 0 - config['KMSClientLicenseStatus'] = 2 - config['KMSClientAppID'] = "0ff1ce15-a989-479d-af46-f275c6370663" - config['KMSClientSkuID'] = "d450596f-894d-49e0-966a-fd39ed4c4c64" - config['KMSClientKMSCountedID'] = "85b5f61b-320b-4be3-814a-b76b2bfafc82" + kmsdb = kmsDB2Dict() + + appitems = kmsdb[2] + for appitem in appitems: + kmsitems = appitem['KmsItems'] + for kmsitem in kmsitems: + # Threshold. + try: + count = int(kmsitem['NCountPolicy']) + except KeyError: + count = 25 + + name = re.sub('\(.*\)', '', kmsitem['DisplayName']).replace('2015', '').replace(' ', '') + if name == config['mode']: + skuitems = kmsitem['SkuItems'] + # Select 'Enterprise' for Windows or 'Professional Plus' for Office. + # (improvement: choice could be also random: skuitem = random.choice(skuitems)) + for skuitem in skuitems: + if skuitem['DisplayName'].replace(' ','') == name + 'Enterprise' or \ + skuitem['DisplayName'].replace(' ','') == name[:6] + 'ProfessionalPlus' + name[6:]: + + config['KMSClientSkuID'] = skuitem['Id'] + config['RequiredClientCount'] = count + config['KMSProtocolMajorVersion'] = int(float(kmsitem['DefaultKmsProtocol'])) + config['KMSProtocolMinorVersion'] = 0 + config['KMSClientLicenseStatus'] = 2 + config['KMSClientAppID'] = appitem['Id'] + config['KMSClientKMSCountedID'] = kmsitem['Id'] + break + def createKmsRequestBase(): requestDict = kmsBase.kmsRequestStruct() @@ -198,7 +165,8 @@ def createKmsRequestBase(): requestDict['previousClientMachineId'] = '\0' * 16 #requestDict['clientMachineId'] # I'm pretty sure this is supposed to be a null UUID. requestDict['requiredClientCount'] = config['RequiredClientCount'] requestDict['requestTime'] = filetimes.dt_to_filetime(datetime.datetime.utcnow()) - requestDict['machineName'] = (config['machineName'] if (config['machineName'] is not None) else ''.join(random.choice(string.letters + string.digits) for i in range(random.randint(2,63)))).encode('utf-16le') + requestDict['machineName'] = (config['machineName'] if (config['machineName'] is not None) else + ''.join(random.choice(string.letters + string.digits) for i in range(random.randint(2,63)))).encode('utf-16le') requestDict['mnPad'] = '\0'.encode('utf-16le') * (63 - len(requestDict['machineName'].decode('utf-16le'))) # Debug Stuff @@ -242,7 +210,8 @@ def readKmsResponse(data, request, config): def readKmsResponseV4(data, request): response = kmsRequestV4.ResponseV4(data) hashed = kmsRequestV4(data, config).generateHash(bytearray(str(response['response']))) - logging.info("Response Hash has expected value: ", hashed == response['hash']) + if hashed == response['hash']: + logging.info("Response Hash has expected value !") return response def readKmsResponseV5(data): diff --git a/py2-kms/dcerpc.py b/py2-kms/dcerpc.py index dc146c5..31a14d1 100644 --- a/py2-kms/dcerpc.py +++ b/py2-kms/dcerpc.py @@ -1,14 +1,17 @@ #!/usr/bin/env python -# Copyright (c) 2003-2012 CORE Security Technologies +# Copyright (c) 2003-2016 CORE Security Technologies # # This software is provided under under a slightly modified version # of the Apache Software License. See the accompanying LICENSE file # for more information. # -# $Id: dcerpc.py 917 2013-11-10 20:47:57Z bethus $ +# Description: +# Partial C706.pdf + [MS-RPCE] implementation # -# Partial C706.pdf + [MS-RPCE] implementation +# Best way to learn how to use these calls is to grab the protocol standard +# so you understand what the call does, and then read the test case located +# at https://github.com/CoreSecurity/impacket/tree/master/impacket/testcases/SMB_RPC # # ToDo: # [ ] Take out all the security provider stuff out of here (e.g. RPC_C_AUTHN_WINNT) @@ -16,7 +19,11 @@ # more SSP (e.g. NETLOGON) # -from structure import Structure,pack,unpack +""" +Stripped down version of: https://github.com/SecureAuthCorp/impacket/blob/master/impacket/dcerpc/v5/rpcrt.py +""" + +from structure import Structure # MS/RPC Constants MSRPC_REQUEST = 0x00 @@ -41,8 +48,8 @@ MSRPC_CO_CANCEL = 0x12 MSRPC_ORPHANED = 0x13 # MS/RPC Packet Flags -MSRPC_FIRSTFRAG = 0x01 -MSRPC_LASTFRAG = 0x02 +PFC_FIRST_FRAG = 0x01 +PFC_LAST_FRAG = 0x02 # For PDU types bind, bind_ack, alter_context, and # alter_context_resp, this flag MUST be interpreted as PFC_SUPPORT_HEADER_SIGN @@ -52,12 +59,11 @@ MSRPC_SUPPORT_SIGN = 0x04 #remaining PDU types, this flag MUST be interpreted as PFC_PENDING_CANCEL. MSRPC_PENDING_CANCEL= 0x04 -MSRPC_NOTAFRAG = 0x04 -MSRPC_RECRESPOND = 0x08 -MSRPC_NOMULTIPLEX = 0x10 -MSRPC_NOTFORIDEMP = 0x20 -MSRPC_NOTFORBCAST = 0x40 -MSRPC_NOUUID = 0x80 +PFC_RESERVED_1 = 0x08 +PFC_CONC_MPX = 0x10 +PFC_DID_NOT_EXECUTE = 0x20 +PFC_MAYBE = 0x40 +PFC_OBJECT_UUID = 0x80 # Auth Types - Security Providers RPC_C_AUTHN_NONE = 0x00 @@ -155,12 +161,379 @@ rpc_status_codes = { 0x1C000022L : 'nca_s_fault_tx_open_failed', 0x1C000023L : 'nca_s_fault_codeset_conv_error', 0x1C000024L : 'nca_s_fault_object_not_found ', - 0x1C000025L : 'nca_s_fault_no_client_stub' + 0x1C000025L : 'nca_s_fault_no_client_stub', + 0x16c9a000L : "rpc_s_mod", + 0x16c9a001L : "rpc_s_op_rng_error", + 0x16c9a002L : "rpc_s_cant_create_socket", + 0x16c9a003L : "rpc_s_cant_bind_socket", + 0x16c9a004L : "rpc_s_not_in_call", + 0x16c9a005L : "rpc_s_no_port", + 0x16c9a006L : "rpc_s_wrong_boot_time", + 0x16c9a007L : "rpc_s_too_many_sockets", + 0x16c9a008L : "rpc_s_illegal_register", + 0x16c9a009L : "rpc_s_cant_recv", + 0x16c9a00aL : "rpc_s_bad_pkt", + 0x16c9a00bL : "rpc_s_unbound_handle", + 0x16c9a00cL : "rpc_s_addr_in_use", + 0x16c9a00dL : "rpc_s_in_args_too_big", + 0x16c9a00eL : "rpc_s_string_too_long", + 0x16c9a00fL : "rpc_s_too_many_objects", + 0x16c9a010L : "rpc_s_binding_has_no_auth", + 0x16c9a011L : "rpc_s_unknown_authn_service", + 0x16c9a012L : "rpc_s_no_memory", + 0x16c9a013L : "rpc_s_cant_nmalloc", + 0x16c9a014L : "rpc_s_call_faulted", + 0x16c9a015L : "rpc_s_call_failed", + 0x16c9a016L : "rpc_s_comm_failure", + 0x16c9a017L : "rpc_s_rpcd_comm_failure", + 0x16c9a018L : "rpc_s_illegal_family_rebind", + 0x16c9a019L : "rpc_s_invalid_handle", + 0x16c9a01aL : "rpc_s_coding_error", + 0x16c9a01bL : "rpc_s_object_not_found", + 0x16c9a01cL : "rpc_s_cthread_not_found", + 0x16c9a01dL : "rpc_s_invalid_binding", + 0x16c9a01eL : "rpc_s_already_registered", + 0x16c9a01fL : "rpc_s_endpoint_not_found", + 0x16c9a020L : "rpc_s_invalid_rpc_protseq", + 0x16c9a021L : "rpc_s_desc_not_registered", + 0x16c9a022L : "rpc_s_already_listening", + 0x16c9a023L : "rpc_s_no_protseqs", + 0x16c9a024L : "rpc_s_no_protseqs_registered", + 0x16c9a025L : "rpc_s_no_bindings", + 0x16c9a026L : "rpc_s_max_descs_exceeded", + 0x16c9a027L : "rpc_s_no_interfaces", + 0x16c9a028L : "rpc_s_invalid_timeout", + 0x16c9a029L : "rpc_s_cant_inq_socket", + 0x16c9a02aL : "rpc_s_invalid_naf_id", + 0x16c9a02bL : "rpc_s_inval_net_addr", + 0x16c9a02cL : "rpc_s_unknown_if", + 0x16c9a02dL : "rpc_s_unsupported_type", + 0x16c9a02eL : "rpc_s_invalid_call_opt", + 0x16c9a02fL : "rpc_s_no_fault", + 0x16c9a030L : "rpc_s_cancel_timeout", + 0x16c9a031L : "rpc_s_call_cancelled", + 0x16c9a032L : "rpc_s_invalid_call_handle", + 0x16c9a033L : "rpc_s_cannot_alloc_assoc", + 0x16c9a034L : "rpc_s_cannot_connect", + 0x16c9a035L : "rpc_s_connection_aborted", + 0x16c9a036L : "rpc_s_connection_closed", + 0x16c9a037L : "rpc_s_cannot_accept", + 0x16c9a038L : "rpc_s_assoc_grp_not_found", + 0x16c9a039L : "rpc_s_stub_interface_error", + 0x16c9a03aL : "rpc_s_invalid_object", + 0x16c9a03bL : "rpc_s_invalid_type", + 0x16c9a03cL : "rpc_s_invalid_if_opnum", + 0x16c9a03dL : "rpc_s_different_server_instance", + 0x16c9a03eL : "rpc_s_protocol_error", + 0x16c9a03fL : "rpc_s_cant_recvmsg", + 0x16c9a040L : "rpc_s_invalid_string_binding", + 0x16c9a041L : "rpc_s_connect_timed_out", + 0x16c9a042L : "rpc_s_connect_rejected", + 0x16c9a043L : "rpc_s_network_unreachable", + 0x16c9a044L : "rpc_s_connect_no_resources", + 0x16c9a045L : "rpc_s_rem_network_shutdown", + 0x16c9a046L : "rpc_s_too_many_rem_connects", + 0x16c9a047L : "rpc_s_no_rem_endpoint", + 0x16c9a048L : "rpc_s_rem_host_down", + 0x16c9a049L : "rpc_s_host_unreachable", + 0x16c9a04aL : "rpc_s_access_control_info_inv", + 0x16c9a04bL : "rpc_s_loc_connect_aborted", + 0x16c9a04cL : "rpc_s_connect_closed_by_rem", + 0x16c9a04dL : "rpc_s_rem_host_crashed", + 0x16c9a04eL : "rpc_s_invalid_endpoint_format", + 0x16c9a04fL : "rpc_s_unknown_status_code", + 0x16c9a050L : "rpc_s_unknown_mgr_type", + 0x16c9a051L : "rpc_s_assoc_creation_failed", + 0x16c9a052L : "rpc_s_assoc_grp_max_exceeded", + 0x16c9a053L : "rpc_s_assoc_grp_alloc_failed", + 0x16c9a054L : "rpc_s_sm_invalid_state", + 0x16c9a055L : "rpc_s_assoc_req_rejected", + 0x16c9a056L : "rpc_s_assoc_shutdown", + 0x16c9a057L : "rpc_s_tsyntaxes_unsupported", + 0x16c9a058L : "rpc_s_context_id_not_found", + 0x16c9a059L : "rpc_s_cant_listen_socket", + 0x16c9a05aL : "rpc_s_no_addrs", + 0x16c9a05bL : "rpc_s_cant_getpeername", + 0x16c9a05cL : "rpc_s_cant_get_if_id", + 0x16c9a05dL : "rpc_s_protseq_not_supported", + 0x16c9a05eL : "rpc_s_call_orphaned", + 0x16c9a05fL : "rpc_s_who_are_you_failed", + 0x16c9a060L : "rpc_s_unknown_reject", + 0x16c9a061L : "rpc_s_type_already_registered", + 0x16c9a062L : "rpc_s_stop_listening_disabled", + 0x16c9a063L : "rpc_s_invalid_arg", + 0x16c9a064L : "rpc_s_not_supported", + 0x16c9a065L : "rpc_s_wrong_kind_of_binding", + 0x16c9a066L : "rpc_s_authn_authz_mismatch", + 0x16c9a067L : "rpc_s_call_queued", + 0x16c9a068L : "rpc_s_cannot_set_nodelay", + 0x16c9a069L : "rpc_s_not_rpc_tower", + 0x16c9a06aL : "rpc_s_invalid_rpc_protid", + 0x16c9a06bL : "rpc_s_invalid_rpc_floor", + 0x16c9a06cL : "rpc_s_call_timeout", + 0x16c9a06dL : "rpc_s_mgmt_op_disallowed", + 0x16c9a06eL : "rpc_s_manager_not_entered", + 0x16c9a06fL : "rpc_s_calls_too_large_for_wk_ep", + 0x16c9a070L : "rpc_s_server_too_busy", + 0x16c9a071L : "rpc_s_prot_version_mismatch", + 0x16c9a072L : "rpc_s_rpc_prot_version_mismatch", + 0x16c9a073L : "rpc_s_ss_no_import_cursor", + 0x16c9a074L : "rpc_s_fault_addr_error", + 0x16c9a075L : "rpc_s_fault_context_mismatch", + 0x16c9a076L : "rpc_s_fault_fp_div_by_zero", + 0x16c9a077L : "rpc_s_fault_fp_error", + 0x16c9a078L : "rpc_s_fault_fp_overflow", + 0x16c9a079L : "rpc_s_fault_fp_underflow", + 0x16c9a07aL : "rpc_s_fault_ill_inst", + 0x16c9a07bL : "rpc_s_fault_int_div_by_zero", + 0x16c9a07cL : "rpc_s_fault_int_overflow", + 0x16c9a07dL : "rpc_s_fault_invalid_bound", + 0x16c9a07eL : "rpc_s_fault_invalid_tag", + 0x16c9a07fL : "rpc_s_fault_pipe_closed", + 0x16c9a080L : "rpc_s_fault_pipe_comm_error", + 0x16c9a081L : "rpc_s_fault_pipe_discipline", + 0x16c9a082L : "rpc_s_fault_pipe_empty", + 0x16c9a083L : "rpc_s_fault_pipe_memory", + 0x16c9a084L : "rpc_s_fault_pipe_order", + 0x16c9a085L : "rpc_s_fault_remote_comm_failure", + 0x16c9a086L : "rpc_s_fault_remote_no_memory", + 0x16c9a087L : "rpc_s_fault_unspec", + 0x16c9a088L : "uuid_s_bad_version", + 0x16c9a089L : "uuid_s_socket_failure", + 0x16c9a08aL : "uuid_s_getconf_failure", + 0x16c9a08bL : "uuid_s_no_address", + 0x16c9a08cL : "uuid_s_overrun", + 0x16c9a08dL : "uuid_s_internal_error", + 0x16c9a08eL : "uuid_s_coding_error", + 0x16c9a08fL : "uuid_s_invalid_string_uuid", + 0x16c9a090L : "uuid_s_no_memory", + 0x16c9a091L : "rpc_s_no_more_entries", + 0x16c9a092L : "rpc_s_unknown_ns_error", + 0x16c9a093L : "rpc_s_name_service_unavailable", + 0x16c9a094L : "rpc_s_incomplete_name", + 0x16c9a095L : "rpc_s_group_not_found", + 0x16c9a096L : "rpc_s_invalid_name_syntax", + 0x16c9a097L : "rpc_s_no_more_members", + 0x16c9a098L : "rpc_s_no_more_interfaces", + 0x16c9a099L : "rpc_s_invalid_name_service", + 0x16c9a09aL : "rpc_s_no_name_mapping", + 0x16c9a09bL : "rpc_s_profile_not_found", + 0x16c9a09cL : "rpc_s_not_found", + 0x16c9a09dL : "rpc_s_no_updates", + 0x16c9a09eL : "rpc_s_update_failed", + 0x16c9a09fL : "rpc_s_no_match_exported", + 0x16c9a0a0L : "rpc_s_entry_not_found", + 0x16c9a0a1L : "rpc_s_invalid_inquiry_context", + 0x16c9a0a2L : "rpc_s_interface_not_found", + 0x16c9a0a3L : "rpc_s_group_member_not_found", + 0x16c9a0a4L : "rpc_s_entry_already_exists", + 0x16c9a0a5L : "rpc_s_nsinit_failure", + 0x16c9a0a6L : "rpc_s_unsupported_name_syntax", + 0x16c9a0a7L : "rpc_s_no_more_elements", + 0x16c9a0a8L : "rpc_s_no_ns_permission", + 0x16c9a0a9L : "rpc_s_invalid_inquiry_type", + 0x16c9a0aaL : "rpc_s_profile_element_not_found", + 0x16c9a0abL : "rpc_s_profile_element_replaced", + 0x16c9a0acL : "rpc_s_import_already_done", + 0x16c9a0adL : "rpc_s_database_busy", + 0x16c9a0aeL : "rpc_s_invalid_import_context", + 0x16c9a0afL : "rpc_s_uuid_set_not_found", + 0x16c9a0b0L : "rpc_s_uuid_member_not_found", + 0x16c9a0b1L : "rpc_s_no_interfaces_exported", + 0x16c9a0b2L : "rpc_s_tower_set_not_found", + 0x16c9a0b3L : "rpc_s_tower_member_not_found", + 0x16c9a0b4L : "rpc_s_obj_uuid_not_found", + 0x16c9a0b5L : "rpc_s_no_more_bindings", + 0x16c9a0b6L : "rpc_s_invalid_priority", + 0x16c9a0b7L : "rpc_s_not_rpc_entry", + 0x16c9a0b8L : "rpc_s_invalid_lookup_context", + 0x16c9a0b9L : "rpc_s_binding_vector_full", + 0x16c9a0baL : "rpc_s_cycle_detected", + 0x16c9a0bbL : "rpc_s_nothing_to_export", + 0x16c9a0bcL : "rpc_s_nothing_to_unexport", + 0x16c9a0bdL : "rpc_s_invalid_vers_option", + 0x16c9a0beL : "rpc_s_no_rpc_data", + 0x16c9a0bfL : "rpc_s_mbr_picked", + 0x16c9a0c0L : "rpc_s_not_all_objs_unexported", + 0x16c9a0c1L : "rpc_s_no_entry_name", + 0x16c9a0c2L : "rpc_s_priority_group_done", + 0x16c9a0c3L : "rpc_s_partial_results", + 0x16c9a0c4L : "rpc_s_no_env_setup", + 0x16c9a0c5L : "twr_s_unknown_sa", + 0x16c9a0c6L : "twr_s_unknown_tower", + 0x16c9a0c7L : "twr_s_not_implemented", + 0x16c9a0c8L : "rpc_s_max_calls_too_small", + 0x16c9a0c9L : "rpc_s_cthread_create_failed", + 0x16c9a0caL : "rpc_s_cthread_pool_exists", + 0x16c9a0cbL : "rpc_s_cthread_no_such_pool", + 0x16c9a0ccL : "rpc_s_cthread_invoke_disabled", + 0x16c9a0cdL : "ept_s_cant_perform_op", + 0x16c9a0ceL : "ept_s_no_memory", + 0x16c9a0cfL : "ept_s_database_invalid", + 0x16c9a0d0L : "ept_s_cant_create", + 0x16c9a0d1L : "ept_s_cant_access", + 0x16c9a0d2L : "ept_s_database_already_open", + 0x16c9a0d3L : "ept_s_invalid_entry", + 0x16c9a0d4L : "ept_s_update_failed", + 0x16c9a0d5L : "ept_s_invalid_context", + 0x16c9a0d6L : "ept_s_not_registered", + 0x16c9a0d7L : "ept_s_server_unavailable", + 0x16c9a0d8L : "rpc_s_underspecified_name", + 0x16c9a0d9L : "rpc_s_invalid_ns_handle", + 0x16c9a0daL : "rpc_s_unknown_error", + 0x16c9a0dbL : "rpc_s_ss_char_trans_open_fail", + 0x16c9a0dcL : "rpc_s_ss_char_trans_short_file", + 0x16c9a0ddL : "rpc_s_ss_context_damaged", + 0x16c9a0deL : "rpc_s_ss_in_null_context", + 0x16c9a0dfL : "rpc_s_socket_failure", + 0x16c9a0e0L : "rpc_s_unsupported_protect_level", + 0x16c9a0e1L : "rpc_s_invalid_checksum", + 0x16c9a0e2L : "rpc_s_invalid_credentials", + 0x16c9a0e3L : "rpc_s_credentials_too_large", + 0x16c9a0e4L : "rpc_s_call_id_not_found", + 0x16c9a0e5L : "rpc_s_key_id_not_found", + 0x16c9a0e6L : "rpc_s_auth_bad_integrity", + 0x16c9a0e7L : "rpc_s_auth_tkt_expired", + 0x16c9a0e8L : "rpc_s_auth_tkt_nyv", + 0x16c9a0e9L : "rpc_s_auth_repeat", + 0x16c9a0eaL : "rpc_s_auth_not_us", + 0x16c9a0ebL : "rpc_s_auth_badmatch", + 0x16c9a0ecL : "rpc_s_auth_skew", + 0x16c9a0edL : "rpc_s_auth_badaddr", + 0x16c9a0eeL : "rpc_s_auth_badversion", + 0x16c9a0efL : "rpc_s_auth_msg_type", + 0x16c9a0f0L : "rpc_s_auth_modified", + 0x16c9a0f1L : "rpc_s_auth_badorder", + 0x16c9a0f2L : "rpc_s_auth_badkeyver", + 0x16c9a0f3L : "rpc_s_auth_nokey", + 0x16c9a0f4L : "rpc_s_auth_mut_fail", + 0x16c9a0f5L : "rpc_s_auth_baddirection", + 0x16c9a0f6L : "rpc_s_auth_method", + 0x16c9a0f7L : "rpc_s_auth_badseq", + 0x16c9a0f8L : "rpc_s_auth_inapp_cksum", + 0x16c9a0f9L : "rpc_s_auth_field_toolong", + 0x16c9a0faL : "rpc_s_invalid_crc", + 0x16c9a0fbL : "rpc_s_binding_incomplete", + 0x16c9a0fcL : "rpc_s_key_func_not_allowed", + 0x16c9a0fdL : "rpc_s_unknown_stub_rtl_if_vers", + 0x16c9a0feL : "rpc_s_unknown_ifspec_vers", + 0x16c9a0ffL : "rpc_s_proto_unsupp_by_auth", + 0x16c9a100L : "rpc_s_authn_challenge_malformed", + 0x16c9a101L : "rpc_s_protect_level_mismatch", + 0x16c9a102L : "rpc_s_no_mepv", + 0x16c9a103L : "rpc_s_stub_protocol_error", + 0x16c9a104L : "rpc_s_class_version_mismatch", + 0x16c9a105L : "rpc_s_helper_not_running", + 0x16c9a106L : "rpc_s_helper_short_read", + 0x16c9a107L : "rpc_s_helper_catatonic", + 0x16c9a108L : "rpc_s_helper_aborted", + 0x16c9a109L : "rpc_s_not_in_kernel", + 0x16c9a10aL : "rpc_s_helper_wrong_user", + 0x16c9a10bL : "rpc_s_helper_overflow", + 0x16c9a10cL : "rpc_s_dg_need_way_auth", + 0x16c9a10dL : "rpc_s_unsupported_auth_subtype", + 0x16c9a10eL : "rpc_s_wrong_pickle_type", + 0x16c9a10fL : "rpc_s_not_listening", + 0x16c9a110L : "rpc_s_ss_bad_buffer", + 0x16c9a111L : "rpc_s_ss_bad_es_action", + 0x16c9a112L : "rpc_s_ss_wrong_es_version", + 0x16c9a113L : "rpc_s_fault_user_defined", + 0x16c9a114L : "rpc_s_ss_incompatible_codesets", + 0x16c9a115L : "rpc_s_tx_not_in_transaction", + 0x16c9a116L : "rpc_s_tx_open_failed", + 0x16c9a117L : "rpc_s_partial_credentials", + 0x16c9a118L : "rpc_s_ss_invalid_codeset_tag", + 0x16c9a119L : "rpc_s_mgmt_bad_type", + 0x16c9a11aL : "rpc_s_ss_invalid_char_input", + 0x16c9a11bL : "rpc_s_ss_short_conv_buffer", + 0x16c9a11cL : "rpc_s_ss_iconv_error", + 0x16c9a11dL : "rpc_s_ss_no_compat_codeset", + 0x16c9a11eL : "rpc_s_ss_no_compat_charsets", + 0x16c9a11fL : "dce_cs_c_ok", + 0x16c9a120L : "dce_cs_c_unknown", + 0x16c9a121L : "dce_cs_c_notfound", + 0x16c9a122L : "dce_cs_c_cannot_open_file", + 0x16c9a123L : "dce_cs_c_cannot_read_file", + 0x16c9a124L : "dce_cs_c_cannot_allocate_memory", + 0x16c9a125L : "rpc_s_ss_cleanup_failed", + 0x16c9a126L : "rpc_svc_desc_general", + 0x16c9a127L : "rpc_svc_desc_mutex", + 0x16c9a128L : "rpc_svc_desc_xmit", + 0x16c9a129L : "rpc_svc_desc_recv", + 0x16c9a12aL : "rpc_svc_desc_dg_state", + 0x16c9a12bL : "rpc_svc_desc_cancel", + 0x16c9a12cL : "rpc_svc_desc_orphan", + 0x16c9a12dL : "rpc_svc_desc_cn_state", + 0x16c9a12eL : "rpc_svc_desc_cn_pkt", + 0x16c9a12fL : "rpc_svc_desc_pkt_quotas", + 0x16c9a130L : "rpc_svc_desc_auth", + 0x16c9a131L : "rpc_svc_desc_source", + 0x16c9a132L : "rpc_svc_desc_stats", + 0x16c9a133L : "rpc_svc_desc_mem", + 0x16c9a134L : "rpc_svc_desc_mem_type", + 0x16c9a135L : "rpc_svc_desc_dg_pktlog", + 0x16c9a136L : "rpc_svc_desc_thread_id", + 0x16c9a137L : "rpc_svc_desc_timestamp", + 0x16c9a138L : "rpc_svc_desc_cn_errors", + 0x16c9a139L : "rpc_svc_desc_conv_thread", + 0x16c9a13aL : "rpc_svc_desc_pid", + 0x16c9a13bL : "rpc_svc_desc_atfork", + 0x16c9a13cL : "rpc_svc_desc_cma_thread", + 0x16c9a13dL : "rpc_svc_desc_inherit", + 0x16c9a13eL : "rpc_svc_desc_dg_sockets", + 0x16c9a13fL : "rpc_svc_desc_timer", + 0x16c9a140L : "rpc_svc_desc_threads", + 0x16c9a141L : "rpc_svc_desc_server_call", + 0x16c9a142L : "rpc_svc_desc_nsi", + 0x16c9a143L : "rpc_svc_desc_dg_pkt", + 0x16c9a144L : "rpc_m_cn_ill_state_trans_sa", + 0x16c9a145L : "rpc_m_cn_ill_state_trans_ca", + 0x16c9a146L : "rpc_m_cn_ill_state_trans_sg", + 0x16c9a147L : "rpc_m_cn_ill_state_trans_cg", + 0x16c9a148L : "rpc_m_cn_ill_state_trans_sr", + 0x16c9a149L : "rpc_m_cn_ill_state_trans_cr", + 0x16c9a14aL : "rpc_m_bad_pkt_type", + 0x16c9a14bL : "rpc_m_prot_mismatch", + 0x16c9a14cL : "rpc_m_frag_toobig", + 0x16c9a14dL : "rpc_m_unsupp_stub_rtl_if", + 0x16c9a14eL : "rpc_m_unhandled_callstate", + 0x16c9a14fL : "rpc_m_call_failed", + 0x16c9a150L : "rpc_m_call_failed_no_status", + 0x16c9a151L : "rpc_m_call_failed_errno", + 0x16c9a152L : "rpc_m_call_failed_s", + 0x16c9a153L : "rpc_m_call_failed_c", + 0x16c9a154L : "rpc_m_errmsg_toobig", + 0x16c9a155L : "rpc_m_invalid_srchattr", + 0x16c9a156L : "rpc_m_nts_not_found", + 0x16c9a157L : "rpc_m_invalid_accbytcnt", + 0x16c9a158L : "rpc_m_pre_v2_ifspec", + 0x16c9a159L : "rpc_m_unk_ifspec", + 0x16c9a15aL : "rpc_m_recvbuf_toosmall", + 0x16c9a15bL : "rpc_m_unalign_authtrl", + 0x16c9a15cL : "rpc_m_unexpected_exc", + 0x16c9a15dL : "rpc_m_no_stub_data", + 0x16c9a15eL : "rpc_m_eventlist_full", + 0x16c9a15fL : "rpc_m_unk_sock_type", + 0x16c9a160L : "rpc_m_unimp_call", + 0x16c9a161L : "rpc_m_invalid_seqnum", + 0x16c9a162L : "rpc_m_cant_create_uuid", + 0x16c9a163L : "rpc_m_pre_v2_ss", + 0x16c9a164L : "rpc_m_dgpkt_pool_corrupt", + 0x16c9a165L : "rpc_m_dgpkt_bad_free", + 0x16c9a166L : "rpc_m_lookaside_corrupt", + 0x16c9a167L : "rpc_m_alloc_fail", + 0x16c9a168L : "rpc_m_realloc_fail", + 0x16c9a169L : "rpc_m_cant_open_file", + 0x16c9a16aL : "rpc_m_cant_read_addr", + 0x16c9a16bL : "rpc_svc_desc_libidl", + 0x16c9a16cL : "rpc_m_ctxrundown_nomem", + 0x16c9a16dL : "rpc_m_ctxrundown_exc", + 0x16c9a16eL : "rpc_s_fault_codeset_conv_error", + 0x16c9a16fL : "rpc_s_no_call_active", + 0x16c9a170L : "rpc_s_cannot_support", + 0x16c9a171L : "rpc_s_no_context_available", } -class Exception(Exception): - pass - # Context Item class CtxItem(Structure): structure = ( @@ -195,15 +568,15 @@ class MSRPCHeader(Structure): ('type','B=0'), # 2 ('flags','B=0'), # 3 ('representation','<L=0x10'), # 4 - ('frag_len','<H=self._SIZE+len(pduData)+len(pad)+len(sec_trailer)+len(auth_data)'), # 8 + ('frag_len','<H=self._SIZE+len(auth_data)+(16 if (self["flags"] & 0x80) > 0 else 0)+len(pduData)+len(pad)+len(sec_trailer)'), # 8 ('auth_len','<H=len(auth_data)'), # 10 ('call_id','<L=1'), # 12 <-- Common up to here (including this) ) structure = ( - ('dataLen','_-pduData','self["frag_len"]-self["auth_len"]-self._SIZE-(8 if self["auth_len"] > 0 else 0)'), + ('dataLen','_-pduData','self["frag_len"]-self["auth_len"]-self._SIZE-(8 if self["auth_len"] > 0 else 0)'), ('pduData',':'), - ('_pad', '_-pad','(4 - ((self._SIZE + len(self["pduData"])) & 3) & 3)'), + ('_pad', '_-pad','(4 - ((self._SIZE + (16 if (self["flags"] & 0x80) > 0 else 0) + len(self["pduData"])) & 3) & 3)'), ('pad', ':'), ('_sec_trailer', '_-sec_trailer', '8 if self["auth_len"] > 0 else 0'), ('sec_trailer',':'), @@ -216,7 +589,7 @@ class MSRPCHeader(Structure): if data is None: self['ver_major'] = 5 self['ver_minor'] = 0 - self['flags'] = MSRPC_FIRSTFRAG | MSRPC_LASTFRAG + self['flags'] = PFC_FIRST_FRAG | PFC_LAST_FRAG self['type'] = MSRPC_REQUEST self.__frag_len_set = 0 self['auth_len'] = 0 @@ -226,7 +599,7 @@ class MSRPCHeader(Structure): self['pad'] = '' def get_header_size(self): - return self._SIZE + return self._SIZE + (16 if (self["flags"] & PFC_OBJECT_UUID) > 0 else 0) def get_packet(self): if self['auth_data'] != '': @@ -244,6 +617,8 @@ class MSRPCRequestHeader(MSRPCHeader): ('alloc_hint','<L=0'), # 16 ('ctx_id','<H=0'), # 20 ('op_num','<H=0'), # 22 + ('_uuid','_-uuid','16 if self["flags"] & 0x80 > 0 else 0' ), # 22 + ('uuid',':'), # 22 ) def __init__(self, data = None, alignment = 0): @@ -251,6 +626,7 @@ class MSRPCRequestHeader(MSRPCHeader): if data is None: self['type'] = MSRPC_REQUEST self['ctx_id'] = 0 + self['uuid'] = '' class MSRPCRespHeader(MSRPCHeader): _SIZE = 24 @@ -299,19 +675,9 @@ class MSRPCBind(Structure): self['ctx_items'] += i.getData() return Structure.getData(self) -class MSRPCBindAck(Structure): +class MSRPCBindAck(MSRPCHeader): _SIZE = 26 # Up to SecondaryAddr _CTX_ITEM_LEN = len(CtxItemResult()) - commonHdr = ( - ('ver_major','B=5'), # 0 - ('ver_minor','B=0'), # 1 - ('type','B=0'), # 2 - ('flags','B=0'), # 3 - ('representation','<L=0x10'), # 4 - ('frag_len','<H=0'), # 8 - ('auth_len','<H=0'), # 10 - ('call_id','<L=1'), # 12 <-- Common up to here (including this) - ) structure = ( ('max_tfrag','<H=0'), ('max_rfrag','<H=0'), @@ -332,7 +698,7 @@ class MSRPCBindAck(Structure): ) def __init__(self, data = None, alignment = 0): self.__ctx_items = [] - Structure.__init__(self,data,alignment) + MSRPCHeader.__init__(self,data,alignment) if data is None: self['Pad'] = '' self['ctx_items'] = '' diff --git a/py2-kms/filetimes.py b/py2-kms/filetimes.py index d4ac46e..f780a16 100644 --- a/py2-kms/filetimes.py +++ b/py2-kms/filetimes.py @@ -103,4 +103,3 @@ if __name__ == "__main__": import doctest doctest.testmod() - diff --git a/py2-kms/formatText.py b/py2-kms/formatText.py index b33c017..5eb8d76 100644 --- a/py2-kms/formatText.py +++ b/py2-kms/formatText.py @@ -1,7 +1,5 @@ #!/usr/bin/env python -import sys - def justify(astring, indent = 35, break_every = 100): str_indent = ('\n' + ' ' * indent) splitted = astring.split('\n') @@ -53,8 +51,6 @@ class ShellStyle(object): return self.style(s, '\033[4m') - - def shell_message(nshell): shelldict = {0: ShellStyle().yellow("Client generating RPC Bind Request..."), @@ -90,7 +86,3 @@ def shell_message(nshell): print shelldict[n] else: print shelldict[nshell] - - - - diff --git a/py2-kms/kmsBase.py b/py2-kms/kmsBase.py index d99c6d1..0c27e64 100644 --- a/py2-kms/kmsBase.py +++ b/py2-kms/kmsBase.py @@ -2,14 +2,13 @@ import binascii import logging -import datetime import os -import struct import sys import time import uuid from structure import Structure +from kmsDB2Dict import kmsDB2Dict import kmsPidGenerator import filetimes from formatText import justify, shell_message @@ -17,10 +16,9 @@ from formatText import justify, shell_message # sqlite3 is optional try: import sqlite3 -except: +except ImportError: pass - class UUID(Structure): commonHdr = () structure = ( @@ -31,6 +29,10 @@ class UUID(Structure): return uuid.UUID(bytes_le=str(self)) class kmsBase: + def __init__(self, data, config): + self.data = data + self.config = config + class kmsRequestStruct(Structure): commonHdr = () structure = ( @@ -81,359 +83,6 @@ class kmsBase: ('remainder', '_'), ) - appIds = { - uuid.UUID("55C92734-D682-4D71-983E-D6EC3F16059F") : "Windows", - uuid.UUID("59A52881-A989-479D-AF46-F275C6370663") : "Office 14 (2010)", - uuid.UUID("0FF1CE15-A989-479D-AF46-F275C6370663") : "Office 15 (2013) / Office 16 (2016)" - } - - skuIds = { - ######################### - ## Windows Server 2019 ## - ######################### - uuid.UUID("34e1ae55-27f8-4950-8877-7a03be5fb181") : "Windows Server 2019 Datacenter", - uuid.UUID("de32eafd-aaee-4662-9444-c1befb41bde2") : "Windows Server 2019 Standard", - uuid.UUID("034d3cbb-5d4b-4245-b3f8-f84571314078") : "Windows Server 2019 Essentials", - uuid.UUID("a99cc1f0-7719-4306-9645-294102fbff95") : "Windows Server 2019 Azure Core", - ######################### - ## Windows Server 2016 ## - ######################### - uuid.UUID("21c56779-b449-4d20-adfc-eece0e1ad74b") : "Windows Server 2016 Datacenter", - uuid.UUID("8c1c5410-9f39-4805-8c9d-63a07706358f") : "Windows Server 2016 Standard", - uuid.UUID("2b5a1b0f-a5ab-4c54-ac2f-a6d94824a283") : "Windows Server 2016 Essentials", - uuid.UUID("7b4433f4-b1e7-4788-895a-c45378d38253") : "Windows Server 2016 Cloud Storage", - uuid.UUID("3dbf341b-5f6c-4fa7-b936-699dce9e263f") : "Windows Server 2016 Azure Core", - ################ - ## Windows 10 ## - ################ - uuid.UUID("2de67392-b7a7-462a-b1ca-108dd189f588") : "Windows 10 Professional", - uuid.UUID("a80b5abf-76ad-428b-b05d-a47d2dffeebf") : "Windows 10 Professional N", - uuid.UUID("3f1afc82-f8ac-4f6c-8005-1d233e606eee") : "Windows 10 Professional Education", - uuid.UUID("5300b18c-2e33-4dc2-8291-47ffcec746dd") : "Windows 10 Professional Education N", - uuid.UUID("e0c42288-980c-4788-a014-c080d2e1926e") : "Windows 10 Education", - uuid.UUID("3c102355-d027-42c6-ad23-2e7ef8a02585") : "Windows 10 Education N", - uuid.UUID("73111121-5638-40f6-bc11-f1d7b0d64300") : "Windows 10 Enterprise", - uuid.UUID("e272e3e2-732f-4c65-a8f0-484747d0d947") : "Windows 10 Enterprise N", - uuid.UUID("7b51a46c-0c04-4e8f-9af4-8496cca90d5e") : "Windows 10 Enterprise 2015 LTSB", - uuid.UUID("87b838b7-41b6-4590-8318-5797951d8529") : "Windows 10 Enterprise 2015 LTSB N", - uuid.UUID("2d5a5a60-3040-48bf-beb0-fcd770c20ce0") : "Windows 10 Enterprise 2016 LTSB", - uuid.UUID("9f776d83-7156-45b2-8a5c-359b9c9f22a3") : "Windows 10 Enterprise 2016 LTSB N", - uuid.UUID("58e97c99-f377-4ef1-81d5-4ad5522b5fd8") : "Windows 10 Home / Core", - uuid.UUID("7b9e1751-a8da-4f75-9560-5fadfe3d8e38") : "Windows 10 Home / Core N", - uuid.UUID("cd918a57-a41b-4c82-8dce-1a538e221a83") : "Windows 10 Home / Core Single Language", - uuid.UUID("a9107544-f4a0-4053-a96a-1479abdef912") : "Windows 10 Home / Core Country Specific", - ############################ - ## Windows Server 2012 R2 ## - ############################ - uuid.UUID("b3ca044e-a358-4d68-9883-aaa2941aca99") : "Windows Server 2012 R2 Standard", - uuid.UUID("00091344-1ea4-4f37-b789-01750ba6988c") : "Windows Server 2012 R2 Datacenter", - uuid.UUID("21db6ba4-9a7b-4a14-9e29-64a60c59301d") : "Windows Server 2012 R2 Essentials", - uuid.UUID("b743a2be-68d4-4dd3-af32-92425b7bb623") : "Windows Server 2012 R2 Cloud Storage", - ################# - ## Windows 8.1 ## - ################# - uuid.UUID("c06b6981-d7fd-4a35-b7b4-054742b7af67") : "Windows 8.1 Professional", - uuid.UUID("7476d79f-8e48-49b4-ab63-4d0b813a16e4") : "Windows 8.1 Professional N", - uuid.UUID("096ce63d-4fac-48a9-82a9-61ae9e800e5f") : "Windows 8.1 Professional WMC", - uuid.UUID("81671aaf-79d1-4eb1-b004-8cbbe173afea") : "Windows 8.1 Enterprise", - uuid.UUID("113e705c-fa49-48a4-beea-7dd879b46b14") : "Windows 8.1 Enterprise N", - uuid.UUID("f7e88590-dfc7-4c78-bccb-6f3865b99d1a") : "Windows 8.1 Embedded Industry Automotive", - uuid.UUID("cd4e2d9f-5059-4a50-a92d-05d5bb1267c7") : "Windows 8.1 Embedded Industry Enterprise", - uuid.UUID("0ab82d54-47f4-4acb-818c-cc5bf0ecb649") : "Windows 8.1 Embedded Industry Professional", - uuid.UUID("fe1c3238-432a-43a1-8e25-97e7d1ef10f3") : "Windows 8.1 Core", - uuid.UUID("78558a64-dc19-43fe-a0d0-8075b2a370a3") : "Windows 8.1 Core N", - uuid.UUID("c72c6a1d-f252-4e7e-bdd1-3fca342acb35") : "Windows 8.1 Core Single Language", - uuid.UUID("db78b74f-ef1c-4892-abfe-1e66b8231df6") : "Windows 8.1 Core Country Specific", - uuid.UUID("ffee456a-cd87-4390-8e07-16146c672fd0") : "Windows 8.1 Core ARM", - uuid.UUID("e9942b32-2e55-4197-b0bd-5ff58cba8860") : "Windows 8.1 Core Connected", - uuid.UUID("c6ddecd6-2354-4c19-909b-306a3058484e") : "Windows 8.1 Core Connected N", - uuid.UUID("ba998212-460a-44db-bfb5-71bf09d1c68b") : "Windows 8.1 Core Connected Country Specific", - uuid.UUID("b8f5e3a3-ed33-4608-81e1-37d6c9dcfd9c") : "Windows 8.1 Core Connected Single Language", - uuid.UUID("e58d87b5-8126-4580-80fb-861b22f79296") : "Windows 8.1 Professional Student", - uuid.UUID("cab491c7-a918-4f60-b502-dab75e334f40") : "Windows 8.1 Professional Student N", - ######################### - ## Windows Server 2012 ## - ######################### - uuid.UUID("c04ed6bf-55c8-4b47-9f8e-5a1f31ceee60") : "Windows Server 2012 / Windows 8 Core", - uuid.UUID("197390a0-65f6-4a95-bdc4-55d58a3b0253") : "Windows Server 2012 N / Windows 8 Core N", - uuid.UUID("8860fcd4-a77b-4a20-9045-a150ff11d609") : "Windows Server 2012 Single Language / Windows 8 Core Single Language", - uuid.UUID("9d5584a2-2d85-419a-982c-a00888bb9ddf") : "Windows Server 2012 Country Specific / Windows 8 Core Country Specific", - uuid.UUID("f0f5ec41-0d55-4732-af02-440a44a3cf0f") : "Windows Server 2012 Standard", - uuid.UUID("7d5486c7-e120-4771-b7f1-7b56c6d3170c") : "Windows Server 2012 MultiPoint Standard", - uuid.UUID("95fd1c83-7df5-494a-be8b-1300e1c9d1cd") : "Windows Server 2012 MultiPoint Premium", - uuid.UUID("d3643d60-0c42-412d-a7d6-52e6635327f6") : "Windows Server 2012 Datacenter", - ######################### - ## Windows Server 2010 ## - ######################### - uuid.UUID("f772515c-0e87-48d5-a676-e6962c3e1195") : "Windows MultiPoint Server 2010", - ############### - ## Windows 8 ## - ############### - uuid.UUID("a98bcd6d-5343-4603-8afe-5908e4611112") : "Windows 8 Professional", - uuid.UUID("ebf245c1-29a8-4daf-9cb1-38dfc608a8c8") : "Windows 8 Professional N", - uuid.UUID("a00018a3-f20f-4632-bf7c-8daa5351c914") : "Windows 8 Professional WMC", - uuid.UUID("458e1bec-837a-45f6-b9d5-925ed5d299de") : "Windows 8 Enterprise", - uuid.UUID("e14997e7-800a-4cf7-ad10-de4b45b578db") : "Windows 8 Enterprise N", - uuid.UUID("10018baf-ce21-4060-80bd-47fe74ed4dab") : "Windows 8 Embedded Industry Professional", - uuid.UUID("18db1848-12e0-4167-b9d7-da7fcda507db") : "Windows 8 Embedded Industry Enterprise", - uuid.UUID("af35d7b7-5035-4b63-8972-f0b747b9f4dc") : "Windows 8 Core ARM", - ############################ - ## Windows Server 2008 R2 ## - ############################ - uuid.UUID("a78b8bd9-8017-4df5-b86a-09f756affa7c") : "Windows Server 2008 R2 Web", - uuid.UUID("cda18cf3-c196-46ad-b289-60c072869994") : "Windows Server 2008 R2 HPC Edition (Compute Cluster)", - uuid.UUID("68531fb9-5511-4989-97be-d11a0f55633f") : "Windows Server 2008 R2 Standard", - uuid.UUID("620e2b3d-09e7-42fd-802a-17a13652fe7a") : "Windows Server 2008 R2 Enterprise", - uuid.UUID("7482e61b-c589-4b7f-8ecc-46d455ac3b87") : "Windows Server 2008 R2 Datacenter", - uuid.UUID("8a26851c-1c7e-48d3-a687-fbca9b9ac16b") : "Windows Server 2008 R2 for Itanium-based Systems", - ############### - ## Windows 7 ## - ############### - uuid.UUID("b92e9980-b9d5-4821-9c94-140f632f6312") : "Windows 7 Professional", - uuid.UUID("54a09a0d-d57b-4c10-8b69-a842d6590ad5") : "Windows 7 Professional N", - uuid.UUID("5a041529-fef8-4d07-b06f-b59b573b32d2") : "Windows 7 Professional E", - uuid.UUID("ae2ee509-1b34-41c0-acb7-6d4650168915") : "Windows 7 Enterprise", - uuid.UUID("1cb6d605-11b3-4e14-bb30-da91c8e3983a") : "Windows 7 Enterprise N", - uuid.UUID("46bbed08-9c7b-48fc-a614-95250573f4ea") : "Windows 7 Enterprise E", - uuid.UUID("db537896-376f-48ae-a492-53d0547773d0") : "Windows 7 Embedded POSReady", - uuid.UUID("aa6dd3aa-c2b4-40e2-a544-a6bbb3f5c395") : "Windows 7 Embedded ThinPC", - uuid.UUID("e1a8296a-db37-44d1-8cce-7bc961d59c54") : "Windows 7 Embedded Standard", - ######################### - ## Windows Server 2008 ## - ######################### - uuid.UUID("ddfa9f7c-f09e-40b9-8c1a-be877a9a7f4b") : "Windows Server 2008 Web", - uuid.UUID("ad2542d4-9154-4c6d-8a44-30f11ee96989") : "Windows Server 2008 Standard", - uuid.UUID("2401e3d0-c50a-4b58-87b2-7e794b7d2607") : "Windows Server 2008 Standard without Hyper-V", - uuid.UUID("c1af4d90-d1bc-44ca-85d4-003ba33db3b9") : "Windows Server 2008 Enterprise", - uuid.UUID("8198490a-add0-47b2-b3ba-316b12d647b4") : "Windows Server 2008 Enterprise without Hyper-V", - uuid.UUID("7afb1156-2c1d-40fc-b260-aab7442b62fe") : "Windows Server 2008 HPC Edition (Compute Cluster)", - uuid.UUID("68b6e220-cf09-466b-92d3-45cd964b9509") : "Windows Server 2008 Datacenter", - uuid.UUID("fd09ef77-5647-4eff-809c-af2b64659a45") : "Windows Server 2008 Datacenter without Hyper-V", - uuid.UUID("01ef176b-3e0d-422a-b4f8-4ea880035e8f") : "Windows Server 2008 for Itanium-based Systems", - ################### - ## Windows Vista ## - ################### - uuid.UUID("4f3d1606-3fea-4c01-be3c-8d671c401e3b") : "Windows Vista Business", - uuid.UUID("2c682dc2-8b68-4f63-a165-ae291d4cf138") : "Windows Vista Business N", - uuid.UUID("cfd8ff08-c0d7-452b-9f60-ef5c70c32094") : "Windows Vista Enterprise", - uuid.UUID("d4f54950-26f2-4fb4-ba21-ffab16afcade") : "Windows Vista Enterprise N", - ################# - ## Office 2019 ## - ################# - uuid.UUID("0bc88885-718c-491d-921f-6f214349e79c") : "Office Professional Plus 2019 [Click-to-Run]", - uuid.UUID("fc7c4d0c-2e85-4bb9-afd4-01ed1476b5e9") : "Office Project Professional 2019 [Click-to-Run]", - uuid.UUID("500f6619-ef93-4b75-bcb4-82819998a3ca") : "Office Visio Professional 2019 [Click-to-Run]", - uuid.UUID("85dd8b5f-eaa4-4af3-a628-cce9e77c9a03") : "Office Professional Plus 2019", - uuid.UUID("6912a74b-a5fb-401a-bfdb-2e3ab46f4b02") : "Office Standard 2019", - uuid.UUID("2ca2bf3f-949e-446a-82c7-e25a15ec78c4") : "Office Project Professional 2019", - uuid.UUID("1777f0e3-7392-4198-97ea-8ae4de6f6381") : "Office Project Standard 2019", - uuid.UUID("5b5cf08f-b81a-431d-b080-3450d8620565") : "Office Visio Professional 2019", - uuid.UUID("e06d7df3-aad0-419d-8dfb-0ac37e2bdf39") : "Office Visio Standard 2019", - uuid.UUID("9e9bceeb-e736-4f26-88de-763f87dcc485") : "Office Access 2019", - uuid.UUID("237854e9-79fc-4497-a0c1-a70969691c6b") : "Office Excel 2019", - uuid.UUID("c8f8a301-19f5-4132-96ce-2de9d4adbd33") : "Office Outlook 2019", - uuid.UUID("3131fd61-5e4f-4308-8d6d-62be1987c92c") : "Office PowerPoint 2019", - uuid.UUID("9d3e4cca-e172-46f1-a2f4-1d2107051444") : "Office Publisher 2019", - uuid.UUID("734c6c6e-b0ba-4298-a891-671772b2bd1b") : "Office Skype for Business 2019", - uuid.UUID("059834fe-a8ea-4bff-b67b-4d006b5447d3") : "Office Word 2019", - ################# - ## Office 2016 ## - ################# - uuid.UUID("d450596f-894d-49e0-966a-fd39ed4c4c64") : "Office Professional Plus 2016", - uuid.UUID("dedfa23d-6ed1-45a6-85dc-63cae0546de6") : "Office Standard 2016", - uuid.UUID("4f414197-0fc2-4c01-b68a-86cbb9ac254c") : "Office Project Professional 2016", - uuid.UUID("829b8110-0e6f-4349-bca4-42803577788d") : "Office Project Professional 2016 [Click-to-Run]", - uuid.UUID("da7ddabc-3fbe-4447-9e01-6ab7440b4cd4") : "Office Project Standard 2016", - uuid.UUID("cbbaca45-556a-4416-ad03-bda598eaa7c8") : "Office Project Standard 2016 [Click-to-Run]", - uuid.UUID("6bf301c1-b94a-43e9-ba31-d494598c47fb") : "Office Visio Professional 2016", - uuid.UUID("b234abe3-0857-4f9c-b05a-4dc314f85557") : "Office Visio Professional 2016 [Click-to-Run]", - uuid.UUID("aa2a7821-1827-4c2c-8f1d-4513a34dda97") : "Office Visio Standard 2016", - uuid.UUID("361fe620-64f4-41b5-ba77-84f8e079b1f7") : "Office Visio Standard 2016 [Click-to-Run]", - uuid.UUID("67c0fc0c-deba-401b-bf8b-9c8ad8395804") : "Office Access 2016", - uuid.UUID("c3e65d36-141f-4d2f-a303-a842ee756a29") : "Office Excel 2016", - uuid.UUID("9caabccb-61b1-4b4b-8bec-d10a3c3ac2ce") : "Office Mondo 2016", - uuid.UUID("e914ea6e-a5fa-4439-a394-a9bb3293ca09") : "Office Mondo Retail 2016", - uuid.UUID("d8cace59-33d2-4ac7-9b1b-9b72339c51c8") : "Office OneNote 2016", - uuid.UUID("ec9d9265-9d1e-4ed0-838a-cdc20f2551a1") : "Office Outlook 2016", - uuid.UUID("d70b1bba-b893-4544-96e2-b7a318091c33") : "Office Powerpoint 2016", - uuid.UUID("041a06cb-c5b8-4772-809f-416d03d16654") : "Office Publisher 2016", - uuid.UUID("83e04ee1-fa8d-436d-8994-d31a862cab77") : "Office Skype for Business 2016", - uuid.UUID("bb11badf-d8aa-470e-9311-20eaf80fe5cc") : "Office Word 2016", - ################# - ## Office 2013 ## - ################# - uuid.UUID("87d2b5bf-d47b-41fb-af62-71c382f5cc85") : "Office Professional Plus 2013 [Preview]", - uuid.UUID("b322da9c-a2e2-4058-9e4e-f59a6970bd69") : "Office Professional Plus 2013", - uuid.UUID("b13afb38-cd79-4ae5-9f7f-eed058d750ca") : "Office Standard 2013", - uuid.UUID("3cfe50a9-0e03-4b29-9754-9f193f07b71f") : "Office Project Professional 2013 [Preview]", - uuid.UUID("4a5d124a-e620-44ba-b6ff-658961b33b9a") : "Office Project Professional 2013", - uuid.UUID("39e49e57-ae68-4ee3-b098-26480df3da96") : "Office Project Standard 2013 [Preview]", - uuid.UUID("427a28d1-d17c-4abf-b717-32c780ba6f07") : "Office Project Standard 2013", - uuid.UUID("cfbfd60e-0b5f-427d-917c-a4df42a80e44") : "Office Visio Professional 2013 [Preview]", - uuid.UUID("e13ac10e-75d0-4aff-a0cd-764982cf541c") : "Office Visio Professional 2013", - uuid.UUID("7012cc81-8887-42e9-b17d-4e5e42760f0d") : "Office Visio Standard 2013 [Preview]", - uuid.UUID("ac4efaf0-f81f-4f61-bdf7-ea32b02ab117") : "Office Visio Standard 2013", - uuid.UUID("44b538e2-fb34-4732-81e4-644c17d2e746") : "Office Access 2013 [Preview]", - uuid.UUID("6ee7622c-18d8-4005-9fb7-92db644a279b") : "Office Access 2013", - uuid.UUID("9373bfa0-97b3-4587-ab73-30934461d55c") : "Office Excel 2013 [Preview]", - uuid.UUID("f7461d52-7c2b-43b2-8744-ea958e0bd09a") : "Office Excel 2013", - uuid.UUID("67c0f908-184f-4f64-8250-12db797ab3c3") : "Office OneNote 2013 [Preview]", - uuid.UUID("efe1f3e6-aea2-4144-a208-32aa872b6545") : "Office OneNote 2013", - uuid.UUID("7bce4e7a-dd80-4682-98fa-f993725803d2") : "Office Outlook 2013 [Preview]", - uuid.UUID("771c3afa-50c5-443f-b151-ff2546d863a0") : "Office OutLook 2013", - uuid.UUID("1ec10c0a-54f6-453e-b85a-6fa1bbfea9b7") : "Office PowerPoint 2013 [Preview]", - uuid.UUID("8c762649-97d1-4953-ad27-b7e2c25b972e") : "Office PowerPoint 2013", - uuid.UUID("15aa2117-8f79-49a8-8317-753026d6a054") : "Office Publisher 2013 [Preview]", - uuid.UUID("00c79ff1-6850-443d-bf61-71cde0de305f") : "Office Publisher 2013", - uuid.UUID("7ccc8256-fbaa-49c6-b2a9-f5afb4257cd2") : "Office InfoPath 2013 [Preview]", - uuid.UUID("a30b8040-d68a-423f-b0b5-9ce292ea5a8f") : "Office InfoPath 2013", - uuid.UUID("c53dfe17-cc00-4967-b188-a088a965494d") : "Office Lync 2013 [Preview]", - uuid.UUID("1b9f11e3-c85c-4e1b-bb29-879ad2c909e3") : "Office Lync 2013", - uuid.UUID("de9c7eb6-5a85-420d-9703-fff11bdd4d43") : "Office Word 2013 [Preview]", - uuid.UUID("d9f5b1c6-5386-495a-88f9-9ad6b41ac9b3") : "Office Word 2013", - uuid.UUID("2816a87d-e1ed-4097-b311-e2341c57b179") : "Office Mondo 2013 [Preview]", - uuid.UUID("dc981c6b-fc8e-420f-aa43-f8f33e5c0923") : "Office Mondo 2013", - uuid.UUID("aa286eb4-556f-4eeb-967c-c1b771b7673e") : "Office SharePoint Workspace (Groove) 2013 [Preview]", - uuid.UUID("fb4875ec-0c6b-450f-b82b-ab57d8D1677f") : "Office SharePoint Workspace (Groove) 2013", - ## uuid.UUID("???") : "Office SharePoint Designer (Frontpage) 2013 [Preview]", - uuid.UUID("ba3e3833-6a7e-445a-89d0-7802a9a68588") : "Office SharePoint Designer (Frontpage) 2013", - uuid.UUID("1dc00701-03af-4680-b2af-007ffc758a1f") : "Office Mondo Retail 2013", - ################# - ## Office 2010 ## - ################# - uuid.UUID("6f327760-8c5c-417c-9b61-836a98287e0c") : "Office Professional Plus 2010", - uuid.UUID("9da2a678-fb6b-4e67-ab84-60dd6a9c819a") : "Office Standard 2010", - uuid.UUID("df133ff7-bf14-4f95-afe3-7b48e7e331ef") : "Office Project Professional 2010", - uuid.UUID("5dc7bf61-5ec9-4996-9ccb-df806a2d0efe") : "Office Project Standard 2010", - uuid.UUID("e558389c-83c3-4b29-adfe-5e4d7f46c358") : "Office Visio Professional 2010", - uuid.UUID("9ed833ff-4f92-4f36-b370-8683a4f13275") : "Office Visio Standard 2010", - uuid.UUID("92236105-bb67-494f-94c7-7f7a607929bd") : "Office Visio Premium 2010", - uuid.UUID("8ce7e872-188c-4b98-9d90-f8f90b7aad02") : "Office Access 2010", - uuid.UUID("cee5d470-6e3b-4fcc-8c2b-d17428568a9f") : "Office Excel 2010", - uuid.UUID("ab586f5c-5256-4632-962f-fefd8b49e6f4") : "Office OneNote 2010", - uuid.UUID("ecb7c192-73ab-4ded-acf4-2399b095d0cc") : "Office OutLook 2010", - uuid.UUID("45593b1d-dfb1-4e91-bbfb-2d5d0ce2227a") : "Office PowerPoint 2010", - uuid.UUID("b50c4f75-599b-43e8-8dcd-1081a7967241") : "Office Publisher 2010", - uuid.UUID("ca6b6639-4ad6-40ae-a575-14dee07f6430") : "Office InfoPath 2010", - uuid.UUID("8947d0b8-c33b-43e1-8c56-9b674c052832") : "Office SharePoint Workspace (Groove) 2010", - uuid.UUID("2d0882e7-a4e7-423b-8ccc-70d91e0158b1") : "Office Word 2010", - uuid.UUID("ea509e87-07a1-4a45-9edc-eba5a39f36af") : "Office Small Business Basics 2010", - uuid.UUID("2745e581-565a-4670-ae90-6bf7c57ffe43") : "Office Starter 2010 Retail", - ## uuid.UUID("???") : "Office SharePoint Designer (Frontpage) 2010", - uuid.UUID("09ed9640-f020-400a-acd8-d7d867dfd9c2") : "Office Mondo 1 2010", - uuid.UUID("ef3d4e49-a53d-4d81-a2b1-2ca6c2556b2c") : "Office Mondo 2 2010", - - ###################### - ## Windows Previews ## - ###################### - uuid.UUID("a4383e6b-dada-423d-a43d-f25678429676") : "Windows 8.1 Professional (Blue) [Preview]", - uuid.UUID("631ead72-a8ab-4df8-bbdf-372029989bdd") : "Windows 8.1 ARM [Beta Pre-Release]", - uuid.UUID("2b9c337f-7a1d-4271-90a3-c6855a2b8a1c") : "Windows 8.1 [Beta Pre-Release]", - uuid.UUID("ba947c44-d19d-4786-b6ae-22770bc94c54") : "Windows Server 2016 Datacenter [Preview]", - uuid.UUID("ff808201-fec6-4fd4-ae16-abbddade5706") : "Windows 10 Professional [Pre-Release]", - uuid.UUID("cf59a07b-1a2a-4be0-bfe0-423b5823e663") : "Windows 8 Professional WMC [RC]", - - ################################# - ## A lot of Previews to define ## - ################################# - uuid.UUID("34260150-69ac-49a3-8a0d-4a403ab55763") : "Windows 10 Professional N [Pre-Release]", - uuid.UUID("64192251-81b0-4898-ac63-913cc3edf919") : "Windows XX [XX]", - uuid.UUID("cc17e18a-fa93-43d6-9179-72950a1e931a") : "Windows 10 Professional WMC [Pre-Release]", - - uuid.UUID("903663f7-d2ab-49c9-8942-14aa9e0a9c72") : "Windows 10 Home / Core [Pre-Release]", - uuid.UUID("4dfd543d-caa6-4f69-a95f-5ddfe2b89567") : "Windows 10 Home / Core N [Pre-Release]", - uuid.UUID("6496e59d-89dc-49eb-a353-09ceb9404845") : "Windows 10 Home / Core [Pre-Release]", - uuid.UUID("2cc171ef-db48-4adc-af09-7c574b37f139") : "Windows 10 Home / Core Single Language [Pre-Release]", - uuid.UUID("5fe40dd6-cf1f-4cf2-8729-92121ac2e997") : "Windows 10 Home / Core Country Specific [Pre-Release]", - - uuid.UUID("af43f7f0-3b1e-4266-a123-1fdb53f4323b") : "Windows 10 Education [Pre-Release]", - uuid.UUID("075aca1f-05d7-42e5-a3ce-e349e7be7078") : "Windows 10 Education N [Pre-Release]", - uuid.UUID("e8ced63e-420d-4ab6-8723-aaf165efb5eb") : "Windows XX Education [Pre-Release]", - uuid.UUID("3885bca5-11c1-4d4e-9395-df38f7f09a0e") : "Windows XX Education N [Pre-Release]", - - uuid.UUID("6ae51eeb-c268-4a21-9aae-df74c38b586d") : "Windows 10 Enterprise N [Pre-Release]", - uuid.UUID("c23947f3-3f2e-401f-a38c-f38fe0ecb0bd") : "Windows XX Enterprise N [XX]", - uuid.UUID("38fbe2ac-465a-4ef7-b9d8-72044f2792b6") : "Windows XX Enterprise [XX]", - uuid.UUID("2cf5af84-abab-4ff0-83f8-f040fb2576eb") : "Windows 10 Enterprise XX LTSB [Pre-Release]", - uuid.UUID("11a37f09-fb7f-4002-bd84-f3ae71d11e90") : "Windows 10 Enterprise XX LTSB N [Pre-Release]", - uuid.UUID("75d003b0-dc66-42c0-b3a1-308a3f35741a") : "Windows 10 Enterprise XX LTSB [Pre-Release]", - uuid.UUID("4e4d5504-e7b1-419c-913d-3c80c15294fc") : "Windows 10 Enterprise XX LTSB N [Pre-Release]", - uuid.UUID("43f2ab05-7c87-4d56-b27c-44d0f9a3dabd") : "Windows 10 Enterprise [Pre-Release]", - - uuid.UUID("b554b49f-4d57-4f08-955e-87886f514d49") : "Windows 10 Core ARM [Pre-Release]", - uuid.UUID("f18bbe32-16dc-48d4-a27b-5f3966f82513") : "Windows 10 Core Connected N [Pre-Release]", - uuid.UUID("964a60f6-1505-4ddb-af03-6a9ce6997d3b") : "Windows 10 Core Connected Single Language [Pre-Release]", - uuid.UUID("b5fe5eaa-14cc-4075-84ae-57c0206d1133") : "Windows 10 Core Connected Country Specific [Pre-Release]", - uuid.UUID("827a0032-dced-4609-ab6e-16b9d8a40280") : "Windows 10 Core Connected [Pre-Release]", - - uuid.UUID("b15187db-11c6-4f13-91ca-8121cebf5b88") : "Windows 10 Professional S [Pre-Release]", - uuid.UUID("6cdbc9fb-63f5-431b-a5c0-c6f19ae26a9b") : "Windows 10 Professional S N [Pre-Release]", - uuid.UUID("aa234c15-ee34-4e5f-adb5-73afafb77143") : "Windows XX Professional S [Pre-Release]", - uuid.UUID("9f6a1bc9-5278-4991-88c9-7301c87a75ea") : "Windows XX Professional S N [Pre-Release]", - uuid.UUID("49066601-00dc-4d2c-83a8-4343a7b990d1") : "Windows 10 Professional Student [Pre-Release]", - uuid.UUID("bd64ebf7-d5ec-44c5-ba00-6813441c8c87") : "Windows 10 Professional Student N [Pre-Release]", - uuid.UUID("5b2add49-b8f4-42e0-a77c-adad4efeeeb1") : "Windows 10 PPIPro [Pre-Release]", - - uuid.UUID("3a9a9414-24bf-4836-866d-ba13a298efb0") : "Windows 8 Core ARM [RC]", - uuid.UUID("c8cca3ca-bea8-4f6f-87e0-4d050ce8f0a9") : "Windows 8 Embedded Industry Enterprise [TAP-CTP]", - uuid.UUID("5ca3e488-dbae-4fae-8282-a98fbcd21126") : "Windows 8 Embedded Industry Enterprise [Beta]", - - uuid.UUID("cde952c7-2f96-4d9d-8f2b-2d349f64fc51") : "Windows 8.1 Enterprise [Pre-Release]", - uuid.UUID("c436def1-0dcc-4849-9a59-8b6142eb70f3") : "Windows 8.1 Core Connected [Pre-Release]", - uuid.UUID("86f72c8d-8363-4188-b574-1a53cb374711") : "Windows 8.1 Core Connected N [Pre-Release]", - uuid.UUID("a8651bfb-7fe0-40df-b156-87337ecd5acc") : "Windows 8.1 Core Connected Country Specific [Pre-Release]", - uuid.UUID("5b120df4-ea3f-4e82-b0c0-6568f719730e") : "Windows 8.1 Core Connected Single Language [Pre-Release]", - uuid.UUID("fd5ae385-f5cf-4b53-b1fa-1af6fff7c0d8") : "Windows 8.1 Professional Student [Pre-Release]", - uuid.UUID("687f6358-6a21-453a-a712-3b3b57123827") : "Windows 8.1 Professional Student N [Pre-Release]", - uuid.UUID("c35a9336-fb02-48db-8f4d-245c17f03667") : "Windows 8.1 Embedded Industry [Beta]", - uuid.UUID("4daf1e3e-6be9-4848-8f5a-a18a0d2895e1") : "Windows 8.1 Embedded Industry Enterprise [Beta]", - uuid.UUID("9cc2564c-292e-4d8a-b9f9-1f5007d9409a") : "Windows 8.1 Embedded Industry Automotive [Beta]", - - uuid.UUID("3ddb92aa-332e-46f9-abb7-8bdf62f8d967") : "Windows Longhorn Web Edition [XX]", - uuid.UUID("7ea4f647-9e67-453b-a7ba-56f7102afde2") : "Windows Longhorn Standard Server [XX]", - uuid.UUID("5a99526c-1c09-4481-80fb-b60e8b3d99f8") : "Windows Longhorn Enterprise Server [XX]", - uuid.UUID("8372b47d-5221-41d8-88d0-3f924e50623e") : "Windows Longhorn Computer Cluster [XX]", - uuid.UUID("932ef1f5-4327-4548-b147-51b0f5502995") : "Windows Longhorn Datacenter Server [XX]", - uuid.UUID("bebf03b1-a184-4c5e-9103-88af08055e68") : "Windows Longhorn Enterprise Server IA64 [XX]", - - uuid.UUID("bfa6b683-56be-47b8-a22e-461b27b9cf11") : "Windows Server XX MultiPoint Standard [XX]", - uuid.UUID("bc20fb5b-4097-484f-84d2-55b18dac95eb") : "Windows Server XX MultiPoint Premium [XX]", - uuid.UUID("8a409d61-30fe-4903-bdbc-1fb28603ba3a") : "Windows Server XX Enterprise [XX]", - uuid.UUID("9dce1f29-bb10-4be0-8027-35b953dd46d5") : "Windows 7 Server Enterprise [XX]", - uuid.UUID("bf9eda2f-74cc-4ba3-8967-cde30f18c230") : "Windows 7 Server Enterprise IA64 [XX]", - uuid.UUID("dc06c019-b222-4706-a820-645e77d26a91") : "Windows 7 Server Enterprise without Hyper-V [XX]", - uuid.UUID("d3872724-5c08-4b1b-91f2-fc9eafed4990") : "Windows XX Server Standard [XX]", - uuid.UUID("92374131-ed4c-4d1b-846a-32f43c3eb90d") : "Windows 7 Server Standard [XX]", - uuid.UUID("f963bf4b-9693-46e6-9d9d-09c73eaa2b60") : "Windows 7 Server Standard without Hyper-V [XX]", - uuid.UUID("e5676f13-9b66-4a1f-8b0c-43490e236202") : "Windows XX Server Web [XX]", - uuid.UUID("4f4cfa6c-76d8-49f5-9c41-0a57f8af1bbc") : "Windows 7 Server Web [XX]", - uuid.UUID("0839e017-cfef-4ac6-a97e-ed2ea7962787") : "Windows 7 Server Datacenter without Hyper-V [XX]", - uuid.UUID("cc64c548-1867-4777-a1cc-0022691bc2a0") : "Windows 7 Server Datacenter [XX]", - uuid.UUID("2412bea9-b6e0-441e-8dc2-a13720b42de9") : "Windows XX Server HPC Edition [XX]", - uuid.UUID("c6e3410d-e48d-41eb-8ca9-848397f46d02") : "Windows Server 2012 N / Windows 8 Core N [RC]", - uuid.UUID("b148c3f4-6248-4d2f-8c6d-31cce7ae95c3") : "Windows Server 2012 Single Language / Windows 8 Core Single Language [RC]", - uuid.UUID("c7a8a09a-571c-4ea8-babc-0cbe4d48a89d") : "Windows Server 2012 Country Specific / Windows 8 Core Country Specific [RC]", - uuid.UUID("8f365ba6-c1b9-4223-98fc-282a0756a3ed") : "Windows Server 2012 R2 Essentials [RTM]", - uuid.UUID("b995b62c-eae2-40aa-afb9-111889a84ef4") : "Windows XX Server HI [Beta]", - - uuid.UUID("99ff9b26-016a-49d3-982e-fc492f352e57") : "Windows Vista Business [XX]", - uuid.UUID("90284483-de09-44a2-a406-98957f8dd09d") : "Windows Vista Business [XX]", - uuid.UUID("af46f56f-f06b-49f0-a420-caa8a8d2bf8c") : "Windows Vista Business N [XX]", - uuid.UUID("cf67834d-db4a-402c-ab1f-2c134f02b700") : "Windows Vista Enterprise [XX]", - uuid.UUID("14478aca-ea15-4958-ac34-359281101c99") : "Windows Vista Enterprise [XX]", - uuid.UUID("0707c7fc-143d-46a4-a830-3705e908202c") : "Windows Vista Enterprise N [XX]", - - uuid.UUID("957ec1e8-97cd-42a8-a091-01a30cf779da") : "Windows 7 Business [XX]", - uuid.UUID("0ff4e536-a746-4018-b107-e81dd0b6d33a") : "Windows 7 Business N [XX]", - uuid.UUID("ea77973e-4930-4fa1-a899-02dfaeada1db") : "Windows 7 Enterprise [XX]", - uuid.UUID("e4ecef68-4372-4740-98e8-6c157cd301c2") : "Windows 7 Enterprise N [XX]", - - uuid.UUID("2a4403df-877f-4046-8271-db6fb6ec54c8") : "Enterprise ProdKey3 Win 9984 DLA/Bypass NQR Test", - uuid.UUID("38fbe2ac-465a-4ef7-b9d8-72044f2792b6") : "Windows XX Enterprise [XX]", - - - } - licenseStates = { 0 : "Unlicensed", 1 : "Activated", @@ -464,29 +113,10 @@ class kmsBase: 'SL_E_VL_MACHINE_NOT_BOUND' : 0xC004F056 } - def __init__(self, data, config): - self.data = data - self.config = config - def getConfig(self): - return self.config - - def getOptions(self): - return self.config - - def getData(self): - return self.data - - def getResponse(self): - return '' - - def getResponsePadding(self, bodyLength): - if bodyLength % 8 == 0: - paddingLength = 0 - else: - paddingLength = 8 - bodyLength % 8 - padding = bytearray(paddingLength) - return padding + def getPadding(self, bodyLength): + ## https://forums.mydigitallife.info/threads/71213-Source-C-KMS-Server-from-Microsoft-Toolkit?p=1277542&viewfull=1#post1277542 + return 4 + (((~bodyLength & 3) + 1) & 3) def serverLogic(self, kmsRequest): if self.config['sqlite'] and self.config['dbSupport']: @@ -497,10 +127,11 @@ class kmsBase: try: con = sqlite3.connect(self.dbName) cur = con.cursor() - cur.execute("CREATE TABLE clients(clientMachineId TEXT, machineName TEXT, applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kmsEpid TEXT, requestCount INTEGER)") + cur.execute("CREATE TABLE clients(clientMachineId TEXT, machineName TEXT, applicationId TEXT, \ +skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kmsEpid TEXT, requestCount INTEGER)") except sqlite3.Error, e: - logging.error("%s:" % e.args[0]) + logging.error("Error %s:" % e.args[0]) sys.exit(1) finally: @@ -513,30 +144,68 @@ class kmsBase: logging.debug("KMS Request: \n%s\n" % justify(kmsRequest.dump(print_to_stdout = False))) clientMachineId = kmsRequest['clientMachineId'].get() - global applicationId applicationId = kmsRequest['applicationId'].get() skuId = kmsRequest['skuId'].get() requestDatetime = filetimes.filetime_to_dt(kmsRequest['requestTime']) - # Try and localize the request time, if pytz is available + # Localize the request time, if module "tzlocal" is available. try: - import timezones - from pytz import utc - local_dt = utc.localize(requestDatetime).astimezone(timezones.localtz()) - except ImportError: - local_dt = requestDatetime + from tzlocal import get_localzone + from pytz.exceptions import UnknownTimeZoneError + try: + tz = get_localzone() + local_dt = tz.localize(requestDatetime) + except UnknownTimeZoneError: + logging.warning('Unknown time zone ! Request time not localized.') + local_dt = requestDatetime + except ImportError: + logging.warning('Module "tzlocal" not available ! Request time not localized.') + local_dt = requestDatetime + + # Get SkuId, AppId and client threshold. + appName, skuName = applicationId, skuId + + kmsdb = kmsDB2Dict() + + appitems = kmsdb[2] + for appitem in appitems: + kmsitems = appitem['KmsItems'] + for kmsitem in kmsitems: + + # Activation threshold. + try: + count = int(kmsitem['NCountPolicy']) + except KeyError: + count = 25 + + if self.config["CurrentClientCount"] <= count: + currentClientCount = count + 1 + else: + currentClientCount = self.config["CurrentClientCount"] + + skuitems = kmsitem['SkuItems'] + for skuitem in skuitems: + try: + if uuid.UUID(skuitem['Id']) == skuId: + skuName = skuitem['DisplayName'] + break + except IndexError: + pass + + if uuid.UUID(appitem['Id']) == applicationId: + appName = appitem['DisplayName'] + infoDict = { "machineName" : kmsRequest.getMachineName(), "clientMachineId" : str(clientMachineId), - "appId" : self.appIds.get(applicationId, str(applicationId)), - "skuId" : self.skuIds.get(skuId, str(skuId)), + "appId" : appName, + "skuId" : skuName, "licenseStatus" : kmsRequest.getLicenseStatus(), "requestTime" : int(time.time()), "kmsEpid" : None } - #print infoDict logging.info("Machine Name: %s" % infoDict["machineName"]) logging.info("Client Machine ID: %s" % infoDict["clientMachineId"]) logging.info("Application ID: %s" % infoDict["appId"]) @@ -554,48 +223,57 @@ class kmsBase: data = cur.fetchone() if not data: #print "Inserting row..." - cur.execute("INSERT INTO clients (clientMachineId, machineName, applicationId, skuId, licenseStatus, lastRequestTime, requestCount) VALUES (:clientMachineId, :machineName, :appId, :skuId, :licenseStatus, :requestTime, 1);", infoDict) + cur.execute("INSERT INTO clients (clientMachineId, machineName, applicationId, \ +skuId, licenseStatus, lastRequestTime, requestCount) VALUES (:clientMachineId, :machineName, :appId, :skuId, :licenseStatus, :requestTime, 1);", infoDict) else: #print "Data:", data if data[1] != infoDict["machineName"]: - cur.execute("UPDATE clients SET machineName=:machineName WHERE clientMachineId=:clientMachineId;", infoDict) + cur.execute("UPDATE clients SET machineName=:machineName WHERE \ +clientMachineId=:clientMachineId;", infoDict) if data[2] != infoDict["appId"]: - cur.execute("UPDATE clients SET applicationId=:appId WHERE clientMachineId=:clientMachineId;", infoDict) + cur.execute("UPDATE clients SET applicationId=:appId WHERE \ +clientMachineId=:clientMachineId;", infoDict) if data[3] != infoDict["skuId"]: - cur.execute("UPDATE clients SET skuId=:skuId WHERE clientMachineId=:clientMachineId;", infoDict) + cur.execute("UPDATE clients SET skuId=:skuId WHERE \ +clientMachineId=:clientMachineId;", infoDict) if data[4] != infoDict["licenseStatus"]: - cur.execute("UPDATE clients SET licenseStatus=:licenseStatus WHERE clientMachineId=:clientMachineId;", infoDict) + cur.execute("UPDATE clients SET licenseStatus=:licenseStatus WHERE \ +clientMachineId=:clientMachineId;", infoDict) if data[5] != infoDict["requestTime"]: - cur.execute("UPDATE clients SET lastRequestTime=:requestTime WHERE clientMachineId=:clientMachineId;", infoDict) + cur.execute("UPDATE clients SET lastRequestTime=:requestTime WHERE \ +clientMachineId=:clientMachineId;", infoDict) # Increment requestCount - cur.execute("UPDATE clients SET requestCount=requestCount+1 WHERE clientMachineId=:clientMachineId;", infoDict) + cur.execute("UPDATE clients SET requestCount=requestCount+1 WHERE \ +clientMachineId=:clientMachineId;", infoDict) except sqlite3.Error, e: - logging.error("%s:" % e.args[0]) + logging.error("Error %s:" % e.args[0]) except sqlite3.Error, e: - logging.error("%s:" % e.args[0]) + logging.error("Error %s:" % e.args[0]) sys.exit(1) finally: if con: con.commit() con.close() - return self.createKmsResponse(kmsRequest) + return self.createKmsResponse(kmsRequest, currentClientCount) + - def createKmsResponse(self, kmsRequest): + def createKmsResponse(self, kmsRequest, currentClientCount): response = self.kmsResponseStruct() response['versionMinor'] = kmsRequest['versionMinor'] response['versionMajor'] = kmsRequest['versionMajor'] - #print " : ", kmsRequest['applicationId'] ----> This line was returning garbage in the pidGenerator + if not self.config["epid"]: - response["kmsEpid"] = kmsPidGenerator.epidGenerator(applicationId, kmsRequest['versionMajor'], self.config["lcid"]).encode('utf-16le') + response["kmsEpid"] = kmsPidGenerator.epidGenerator(kmsRequest['kmsCountedId'].get(), kmsRequest['versionMajor'], + self.config["lcid"]).encode('utf-16le') else: response["kmsEpid"] = self.config["epid"].encode('utf-16le') response['clientMachineId'] = kmsRequest['clientMachineId'] response['responseTime'] = kmsRequest['requestTime'] - response['currentClientCount'] = self.config["CurrentClientCount"] + response['currentClientCount'] = currentClientCount response['vLActivationInterval'] = self.config["VLActivationInterval"] response['vLRenewalInterval'] = self.config["VLRenewalInterval"] @@ -607,18 +285,18 @@ class kmsBase: cur.execute("SELECT * FROM clients WHERE clientMachineId=?;", [str(kmsRequest['clientMachineId'].get())]) try: data = cur.fetchone() - #print "Data:", data if data[6]: response["kmsEpid"] = data[6].encode('utf-16le') else: - cur.execute("UPDATE clients SET kmsEpid=? WHERE clientMachineId=?;", (str(response["kmsEpid"].decode('utf-16le')), str(kmsRequest['clientMachineId'].get()))) + cur.execute("UPDATE clients SET kmsEpid=? WHERE clientMachineId=?;", + (str(response["kmsEpid"].decode('utf-16le')), str(kmsRequest['clientMachineId'].get()))) except sqlite3.Error, e: - logging.error("%s:" % e.args[0]) + logging.error("Error %s:" % e.args[0]) except sqlite3.Error, e: - logging.error("%s:" % e.args[0]) - sys.exit(1) + logging.error("Error %s:" % e.args[0]) + sys.exit(1) finally: if con: con.commit() @@ -633,22 +311,19 @@ import kmsRequestV4, kmsRequestV5, kmsRequestV6, kmsRequestUnknown def generateKmsResponseData(data, config): version = kmsBase.GenericRequestHeader(data)['versionMajor'] - currentDate = datetime.datetime.now().ctime() + currentDate = time.strftime("%a %b %d %H:%M:%S %Y") if version == 4: logging.info("Received V%d request on %s." % (version, currentDate)) - messagehandler = kmsRequestV4.kmsRequestV4(data, config) - messagehandler.executeRequestLogic() + messagehandler = kmsRequestV4.kmsRequestV4(data, config) elif version == 5: logging.info("Received V%d request on %s." % (version, currentDate)) messagehandler = kmsRequestV5.kmsRequestV5(data, config) - messagehandler.executeRequestLogic() elif version == 6: logging.info("Received V%d request on %s." % (version, currentDate)) messagehandler = kmsRequestV6.kmsRequestV6(data, config) - messagehandler.executeRequestLogic() else: logging.info("Unhandled KMS version V%d." % version) messagehandler = kmsRequestUnknown.kmsRequestUnknown(data, config) - return messagehandler.getResponse() + return messagehandler.executeRequestLogic() diff --git a/py2-kms/kmsDB2Dict.py b/py2-kms/kmsDB2Dict.py new file mode 100644 index 0000000..6f9b0f4 --- /dev/null +++ b/py2-kms/kmsDB2Dict.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python + +import os +import xml.etree.ElementTree as ET + +def kmsDB2Dict(): + path = os.path.join(os.path.dirname(__file__), 'KmsDataBase.xml') + root = ET.parse(path).getroot() + + kmsdb, child1, child2, child3 = [ [] for _ in range(4) ] + + ## Get winbuilds. + for winbuild in root.iter('WinBuild'): + child1.append(winbuild.attrib) + + kmsdb.append(child1) + + ## Get csvlkitem data. + child1 = [] + for csvlk in root.iter('CsvlkItem'): + for activ in csvlk.iter('Activate'): + child2.append(activ.attrib['KmsItem']) + csvlk.attrib.update({'Activate' : child2}) + child1.append(csvlk.attrib) + child2 = [] + + kmsdb.append(child1) + + ## Get appitem data. + child1 = [] + for app in root.iter('AppItem'): + for kms in app.iter('KmsItem'): + for sku in kms.iter('SkuItem'): + child3.append(sku.attrib) + kms.attrib.update({'SkuItems' : child3}) + child2.append(kms.attrib) + child3 = [] + + app.attrib.update({'KmsItems' : child2}) + child1.append(app.attrib) + child2 = [] + + kmsdb.append(child1) + + return kmsdb diff --git a/py2-kms/kmsPidGenerator.py b/py2-kms/kmsPidGenerator.py index bfe9c7a..63f98c0 100644 --- a/py2-kms/kmsPidGenerator.py +++ b/py2-kms/kmsPidGenerator.py @@ -4,122 +4,74 @@ import datetime import random import time import uuid +from ast import literal_eval -APP_ID_WINDOWS = uuid.UUID("55C92734-D682-4D71-983E-D6EC3F16059F") -APP_ID_OFFICE14 = uuid.UUID("59A52881-A989-479D-AF46-F275C6370663") -APP_ID_OFFICE15 = uuid.UUID("0FF1CE15-A989-479D-AF46-F275C6370663") +from kmsDB2Dict import kmsDB2Dict -# KMS Host OS Type -hostOsList = {} -# Windows Server 2008 R2 SP1 -hostOsList["HOST_SERVER2008R2"] = { - "type" : 55041, - "osBuild" : 7601 -} -# Windows Server 2012 RTM -hostOsList["HOST_SERVER2012"] = { - "type" : 5426, - "osBuild" : 9200 -} -# Windows Server 2012 R2 RTM -hostOsList["HOST_SERVER2012R2"] = { - "type" : 6401, - "osBuild" : 9600 -} -# Windows Server 2016 RTM -hostOsList["HOST_SERVER2016"] = { - "type" : 3612, - "osBuild" : 14393 -} - - -# Product Specific KeyConfig -pkeyConfigList = {} -# Windows Server KMS Host PID, actual PIDRangeMax = 191999999 -pkeyConfigList["windows"] = { - "GroupID" : 206, - "PIDRangeMin" : 152000000, - "PIDRangeMax" : 191999999 -} -# Windows Server 2012 R2 KMS Host PID, actual PIDRangeMax = 310999999 -pkeyConfigList["windows2012r2"] = { - "GroupID" : 206, - "PIDRangeMin" : 271000000, - "PIDRangeMax" : 310999999 -} -# Office 2010 KMSHost Class PID, actual PIDRangeMax = 217999999 -pkeyConfigList["office14"] = { - "GroupID" : 96, - "PIDRangeMin" : 199000000, - "PIDRangeMax" : 217999999 -} -# Office 2013 KMSHost Class PID, actual PIDRangeMax = 255999999 -pkeyConfigList["office15"] = { - "GroupID" : 206, - "PIDRangeMin" : 234000000, - "PIDRangeMax" : 255999999 -} - - -def epidGenerator(appId, version, lcid): - # Generate Part 1 & 7: Host Type and KMS Server OS Build - hostOsType = random.choice(hostOsList.keys()) - hostOsDict = hostOsList[hostOsType] +def epidGenerator(kmsId, version, lcid): + kmsdb = kmsDB2Dict() + winbuilds, csvlkitems, appitems = kmsdb[0], kmsdb[1], kmsdb[2] + hosts, pkeys = [ [] for _ in range(2) ] + # Product Specific Detection (Get all CSVLK GroupID and PIDRange good for EPID generation), then # Generate Part 2: Group ID and Product Key ID Range - if appId == APP_ID_OFFICE14: - keyConfig = pkeyConfigList["office14"] - elif appId == APP_ID_OFFICE15: - keyConfig = pkeyConfigList["office15"] - else: - # Default to Windows - if hostOsDict['osBuild'] == 14393: - keyConfig = pkeyConfigList["windows2012r2"] - elif hostOsDict['osBuild'] == 9600: - keyConfig = pkeyConfigList["windows2012r2"] - else: - keyConfig = pkeyConfigList["windows"] + for csvlkitem in csvlkitems: + try: + if kmsId in [ uuid.UUID(kmsitem) for kmsitem in csvlkitem['Activate'] ]: + pkeys.append( (csvlkitem['GroupId'], csvlkitem['MinKeyId'], csvlkitem['MaxKeyId'], csvlkitem['InvalidWinBuild']) ) + except IndexError: + # fallback to Windows Server 2019 parameters. + GroupId, MinKeyId, MaxKeyId, Invalid = 206, 551000000, 570999999, [0,1,2] + + pkey = random.choice(pkeys) + GroupId, MinKeyId, MaxKeyId, Invalid = int(pkey[0]), int(pkey[1]), int(pkey[2]), literal_eval(pkey[3]) + + # Get all KMS Server Host Builds good for EPID generation, then + # Generate Part 1 & 7: Host Type and KMS Server OS Build + # https://www.itprotoday.com/windows-78/volume-activation-server-2008 + # https://docs.microsoft.com/en-us/windows-server/get-started-19/activation-19 + # https://docs.microsoft.com/en-us/windows-server/get-started/windows-server-release-info + # https://support.microsoft.com/en-us/help/13853/windows-lifecycle-fact-sheet + for winbuild in winbuilds: + try: + # Check versus "InvalidWinBuild". + if int(winbuild['WinBuildIndex']) not in Invalid: + # Re-check versus "version" protocol. + if ((version == 4 and int(winbuild['BuildNumber']) >= 7601) or + (version == 5 and int(winbuild['BuildNumber']) >= 9200) or + (version == 6 and int(winbuild['BuildNumber']) >= 9600)): + hosts.append(winbuild) + except KeyError: + # fallback to Windows Server 2019 parameters. + BuildNumber, PlatformId, MinDate = '17763', '3612', '02/10/2018' + + host = random.choice(hosts) + BuildNumber, PlatformId, MinDate = host['BuildNumber'], host['PlatformId'], host['MinDate'] # Generate Part 3 and Part 4: Product Key ID - productKeyID = random.randint(keyConfig["PIDRangeMin"], keyConfig["PIDRangeMax"]) + productKeyID = random.randint(MinKeyId, MaxKeyId) - # Generate Part 5: License Channel (00=Retail, 01=Retail, 02=OEM, - # 03=Volume(GVLK,MAK)) - always 03 + # Generate Part 5: License Channel (00=Retail, 01=Retail, 02=OEM, 03=Volume(GVLK,MAK)) - always 03 licenseChannel = 3 - # Generate Part 6: Language - use system default language - # 1033 is en-us - languageCode = lcid # C# CultureInfo.InstalledUICulture.LCID + # Generate Part 6: Language - use system default language, 1033 is en-us + languageCode = lcid # (C# CultureInfo.InstalledUICulture.LCID) # Generate Part 8: KMS Host Activation Date - # Get Minimum Possible Date: Newer Products first - if hostOsType == "HOST_SERVER2016": - # Microsoft Windows Server 2016 RTM - minTime = datetime.date(2016, 7, 27) - elif hostOsType == "HOST_SERVER2012R2" or version == 6: - # Microsoft Windows Server 2012 R2 RTM (October 17, 2013) - minTime = datetime.date(2013, 10, 17) - elif appId == APP_ID_OFFICE15: - # Microsoft Office 2013 RTM (October 24, 2012) - minTime = datetime.date(2012, 10, 24) - elif hostOsType == "HOST_SERVER2012" or version == 5: - # Microsoft Windows Server 2012 RTM (September 4, 2012) - minTime = datetime.date(2012, 9, 4) - else: - # Windows Server 2008 R2 SP1 (February 16, 2011) - minTime = datetime.date(2011, 2, 16) + d = datetime.datetime.strptime(MinDate, "%d/%m/%Y") + minTime = datetime.date(d.year, d.month, d.day) # Generate Year and Day Number randomDate = datetime.date.fromtimestamp(random.randint(time.mktime(minTime.timetuple()), time.mktime(datetime.datetime.now().timetuple()))) firstOfYear = datetime.date(randomDate.year, 1, 1) randomDayNumber = int((time.mktime(randomDate.timetuple()) - time.mktime(firstOfYear.timetuple())) / 86400 + 0.5) - # generate the epid string + # Generate the EPID string result = [] - result.append(str(hostOsDict["type"]).rjust(5, "0")) + result.append(str(PlatformId).rjust(5, "0")) result.append("-") - result.append(str(keyConfig["GroupID"]).rjust(5, "0")) + result.append(str(GroupId).rjust(5, "0")) result.append("-") result.append(str(productKeyID / 1000000).rjust(3, "0")) result.append("-") @@ -129,8 +81,9 @@ def epidGenerator(appId, version, lcid): result.append("-") result.append(str(languageCode)) result.append("-") - result.append(str(hostOsDict["osBuild"]).rjust(4, "0")) + result.append(str(BuildNumber).rjust(4, "0")) result.append(".0000-") result.append(str(randomDayNumber).rjust(3, "0")) result.append(str(randomDate.year).rjust(4, "0")) + return "".join(result) diff --git a/py2-kms/kmsRequestUnknown.py b/py2-kms/kmsRequestUnknown.py index 4342902..d727f30 100644 --- a/py2-kms/kmsRequestUnknown.py +++ b/py2-kms/kmsRequestUnknown.py @@ -5,7 +5,7 @@ import struct from kmsBase import kmsBase class kmsRequestUnknown(kmsBase): - def getResponse(self): + def executeRequestLogic(self): finalResponse = bytearray() finalResponse.extend(bytearray(struct.pack('<I', 0))) finalResponse.extend(bytearray(struct.pack('<I', 0))) diff --git a/py2-kms/kmsRequestV4.py b/py2-kms/kmsRequestV4.py index d1aa3d2..28981fd 100644 --- a/py2-kms/kmsRequestV4.py +++ b/py2-kms/kmsRequestV4.py @@ -1,7 +1,6 @@ #!/usr/bin/env python import binascii -import struct import time import logging @@ -22,7 +21,7 @@ class kmsRequestV4(kmsBase): class RequestV4(Structure): commonHdr = () structure = ( - ('bodyLength1', '<I'), + ('bodyLength1', '<I'), ('bodyLength2', '<I'), ('request', ':', kmsBase.kmsRequestStruct), ('hash', '16s'), @@ -32,9 +31,9 @@ class kmsRequestV4(kmsBase): class ResponseV4(Structure): commonHdr = () structure = ( - ('bodyLength1', '<I=len(response) + len(hash)'), + ('bodyLength1', '<I'), ('unknown', '!I=0x00000200'), - ('bodyLength2', '<I=len(response) + len(hash)'), + ('bodyLength2', '<I'), ('response', ':', kmsBase.kmsResponseStruct), ('hash', '16s'), ('padding', ':'), @@ -46,10 +45,12 @@ class kmsRequestV4(kmsBase): response = self.serverLogic(requestData['request']) hash = self.generateHash(bytearray(str(response))) - self.responseData = self.generateResponse(response, hash) + responseData = self.generateResponse(response, hash) time.sleep(1) # request sent back too quick for Windows 2008 R2, slow it down. + return responseData + def generateHash(self, message): """ The KMS v4 hash is a variant of CMAC-AES-128. There are two key differences: @@ -91,35 +92,35 @@ class kmsRequestV4(kmsBase): return str(hashBuffer) def generateResponse(self, responseBuffer, hash): - bodyLength = len(responseBuffer) + len(hash) response = self.ResponseV4() + bodyLength = len(responseBuffer) + len(hash) + response['bodyLength1'] = bodyLength + response['bodyLength2'] = bodyLength response['response'] = responseBuffer response['hash'] = hash - response['padding'] = self.getResponsePadding(bodyLength) - + response['padding'] = bytearray(self.getPadding(bodyLength)) + + ## Debug stuff. shell_message(nshell = 16) - logging.debug("KMS V4 Response: %s" % justify(response.dump(print_to_stdout = False))) - logging.debug("KMS V4 Response Bytes: %s" % justify(binascii.b2a_hex(str(response)))) + logging.debug("KMS V4 Response: \n%s\n" % justify(response.dump(print_to_stdout = False))) + logging.debug("KMS V4 Response Bytes: \n%s\n" % justify(binascii.b2a_hex(str(response)))) return str(response) - def getResponse(self): - return self.responseData - def generateRequest(self, requestBase): hash = str(self.generateHash(bytearray(str(requestBase)))) - + + request = self.RequestV4() bodyLength = len(requestBase) + len(hash) - - request = kmsRequestV4.RequestV4() request['bodyLength1'] = bodyLength request['bodyLength2'] = bodyLength request['request'] = requestBase request['hash'] = hash - request['padding'] = self.getResponsePadding(bodyLength) - + request['padding'] = bytearray(self.getPadding(bodyLength)) + + ## Debug stuff. shell_message(nshell = 10) - logging.debug("Request V4 Data: %s" % justify(request.dump(print_to_stdout = False))) - logging.debug("Request V4: %s" % justify(binascii.b2a_hex(str(request)))) + logging.debug("Request V4 Data: \n%s\n" % justify(request.dump(print_to_stdout = False))) + logging.debug("Request V4: \n%s\n" % justify(binascii.b2a_hex(str(request)))) return request diff --git a/py2-kms/kmsRequestV5.py b/py2-kms/kmsRequestV5.py index baf8c3b..824c55b 100644 --- a/py2-kms/kmsRequestV5.py +++ b/py2-kms/kmsRequestV5.py @@ -4,7 +4,6 @@ import logging import binascii import hashlib import random -import struct import aes from kmsBase import kmsBase @@ -17,14 +16,14 @@ class kmsRequestV5(kmsBase): commonHdr = () structure = ( ('salt', '16s'), - ('encrypted', '236s'), #kmsBase.kmsRequestStruct + ('encrypted', '240s'), # kmsBase.kmsRequestStruct ('padding', ':'), ) commonHdr = () structure = ( - ('bodyLength1', '<I'), - ('bodyLength2', '<I'), + ('bodyLength1', '<I'), + ('bodyLength2', '<I'), ('versionMinor', '<H'), ('versionMajor', '<H'), ('message', ':', Message), @@ -40,13 +39,13 @@ class kmsRequestV5(kmsBase): class ResponseV5(Structure): commonHdr = () structure = ( - ('bodyLength1', '<I=2 + 2 + len(salt) + len(encrypted)'), + ('bodyLength1', '<I'), ('unknown', '!I=0x00000200'), - ('bodyLength2', '<I=2 + 2 + len(salt) + len(encrypted)'), + ('bodyLength2', '<I'), ('versionMinor', '<H'), ('versionMajor', '<H'), ('salt', '16s'), - ('encrypted', ':'), #DecryptedResponse + ('encrypted', ':'), # DecryptedResponse ('padding', ':'), ) @@ -65,15 +64,17 @@ class kmsRequestV5(kmsBase): ver = 5 def executeRequestLogic(self): - self.requestData = self.RequestV5(self.data) + requestData = self.RequestV5(self.data) - decrypted = self.decryptRequest(self.requestData) + decrypted = self.decryptRequest(requestData) responseBuffer = self.serverLogic(decrypted['request']) - iv, encrypted = self.encryptResponse(self.requestData, decrypted, responseBuffer) + iv, encrypted = self.encryptResponse(requestData, decrypted, responseBuffer) - self.responseData = self.generateResponse(iv, encrypted) + responseData = self.generateResponse(iv, encrypted, requestData) + + return responseData def decryptRequest(self, request): encrypted = bytearray(str(request['message'])) @@ -88,10 +89,7 @@ class kmsRequestV5(kmsBase): def encryptResponse(self, request, decrypted, response): randomSalt = self.getRandomSalt() - sha256 = hashlib.sha256() - sha256.update(str(randomSalt)) - result = sha256.digest() - + result = hashlib.sha256(str(randomSalt)).digest() iv = bytearray(request['message']['salt']) randomStuff = bytearray(16) @@ -111,7 +109,8 @@ class kmsRequestV5(kmsBase): return str(iv), str(bytearray(crypted)) def decryptResponse(self, response): - paddingLength = response['bodyLength1'] % 8 + paddingLength = self.getPadding(response['bodyLength1']) + iv = bytearray(response['salt']) encrypted = bytearray(response['encrypted'][:-paddingLength]) moo = aes.AESModeOfOperation() @@ -124,23 +123,22 @@ class kmsRequestV5(kmsBase): def getRandomSalt(self): return bytearray(random.getrandbits(8) for i in range(16)) - def generateResponse(self, iv, encryptedResponse): - bodyLength = 4 + len(iv) + len(encryptedResponse) + def generateResponse(self, iv, encryptedResponse, requestData): response = self.ResponseV5() - response['versionMinor'] = self.requestData['versionMinor'] - response['versionMajor'] = self.requestData['versionMajor'] + bodyLength = 2 + 2 + len(iv) + len(encryptedResponse) + response['bodyLength1'] = bodyLength + response['bodyLength2'] = bodyLength + response['versionMinor'] = requestData['versionMinor'] + response['versionMajor'] = requestData['versionMajor'] response['salt'] = iv response['encrypted'] = encryptedResponse - response['padding'] = self.getResponsePadding(bodyLength) + response['padding'] = bytearray(self.getPadding(bodyLength)) shell_message(nshell = 16) logging.info("KMS V%d Response: \n%s\n" % (self.ver, justify(response.dump(print_to_stdout = False)))) logging.info("KMS V%d Structure Bytes: \n%s\n" % (self.ver, justify(binascii.b2a_hex(str(response))))) return str(response) - - def getResponse(self): - return self.responseData def generateRequest(self, requestBase): esalt = self.getRandomSalt() @@ -159,9 +157,8 @@ class kmsRequestV5(kmsBase): message = self.RequestV5.Message(str(bytearray(crypted))) - bodyLength = len(message) + 2 + 2 - request = self.RequestV5() + bodyLength = 2 + 2 + len(message) request['bodyLength1'] = bodyLength request['bodyLength2'] = bodyLength request['versionMinor'] = requestBase['versionMinor'] diff --git a/py2-kms/kmsRequestV6.py b/py2-kms/kmsRequestV6.py index 2d0039b..49302b7 100644 --- a/py2-kms/kmsRequestV6.py +++ b/py2-kms/kmsRequestV6.py @@ -1,9 +1,7 @@ #!/usr/bin/env python -import binascii import hashlib import hmac -import random import struct import aes @@ -37,9 +35,7 @@ class kmsRequestV6(kmsRequestV5): def encryptResponse(self, request, decrypted, response): randomSalt = self.getRandomSalt() - sha256 = hashlib.sha256() - sha256.update(str(randomSalt)) - result = sha256.digest() + result = hashlib.sha256(str(randomSalt)).digest() SaltC = bytearray(request['message']['salt']) DSaltC = bytearray(decrypted['salt']) @@ -65,10 +61,10 @@ class kmsRequestV6(kmsRequestV5): moo = aes.AESModeOfOperation() moo.aes.v6 = True - d = moo.decrypt(SaltS, 16, moo.modeOfOperation["CBC"], self.key, moo.aes.keySize["SIZE_128"], SaltS) + decry = moo.decrypt(SaltS, 16, moo.modeOfOperation["CBC"], self.key, moo.aes.keySize["SIZE_128"], SaltS) # DSaltS - DSaltS = bytearray(d) + DSaltS = bytearray(decry) # HMacMsg HMacMsg = bytearray(16) @@ -105,4 +101,3 @@ class kmsRequestV6(kmsRequestV5): digest = sha256.digest() return digest[16:] - diff --git a/py2-kms/rpcBase.py b/py2-kms/rpcBase.py index 8b417de..b351ad5 100644 --- a/py2-kms/rpcBase.py +++ b/py2-kms/rpcBase.py @@ -1,8 +1,5 @@ #!/usr/bin/env python -import struct -import uuid - class rpcBase: packetType = { 'request': 0, @@ -42,21 +39,7 @@ class rpcBase: self.config = config def populate(self): - self.requestData = self.parseRequest() - self.responseData = self.generateResponse() - return self - - def getConfig(self): - return self.config - - def getOptions(self): - return self.config - - def getData(self): - return self.data + return self.generateResponse(self.parseRequest()) def parseRequest(self): return {} - - def getResponse(self): - return self.responseData diff --git a/py2-kms/rpcBind.py b/py2-kms/rpcBind.py index bcb0942..42f1a62 100644 --- a/py2-kms/rpcBind.py +++ b/py2-kms/rpcBind.py @@ -2,7 +2,6 @@ import logging import binascii -import struct import uuid import rpcBase @@ -78,12 +77,12 @@ class handler(rpcBase.rpcBase): logging.debug("RPC Bind Request Bytes: \n%s\n" % justify(binascii.b2a_hex(self.data))) logging.debug("RPC Bind Request: \n%s\n%s\n" % (justify(request.dump(print_to_stdout = False)), justify(MSRPCBind(request['pduData']).dump(print_to_stdout = False)))) - + return request - def generateResponse(self): + def generateResponse(self, request): response = MSRPCBindAck() - request = self.requestData + bind = MSRPCBind(request['pduData']) response['ver_major'] = request['ver_major'] @@ -159,11 +158,10 @@ class handler(rpcBase.rpcBase): shell_message(nshell = 0) logging.debug("RPC Bind Request: \n%s\n%s\n" % (justify(request.dump(print_to_stdout = False)), - justify(MSRPCBind(request['pduData']).dump(print_to_stdout = False)))) + justify(MSRPCBind(request['pduData']).dump(print_to_stdout = False)))) logging.debug("RPC Bind Request Bytes: \n%s\n" % justify(binascii.b2a_hex(str(request)))) return request def parseResponse(self): return response - diff --git a/py2-kms/rpcRequest.py b/py2-kms/rpcRequest.py index d31e296..63b2c4a 100644 --- a/py2-kms/rpcRequest.py +++ b/py2-kms/rpcRequest.py @@ -2,8 +2,6 @@ import binascii import logging -import struct -import uuid from dcerpc import MSRPCRequestHeader, MSRPCRespHeader import kmsBase @@ -19,9 +17,7 @@ class handler(rpcBase.rpcBase): return request - def generateResponse(self): - request = self.requestData - + def generateResponse(self, request): responseData = kmsBase.generateKmsResponseData(request['pduData'], self.config) envelopeLength = len(responseData) diff --git a/py2-kms/server.py b/py2-kms/server.py index 85a5e45..950d830 100644 --- a/py2-kms/server.py +++ b/py2-kms/server.py @@ -2,15 +2,14 @@ import argparse import binascii -import hashlib -import random import re +import sys import socket import SocketServer -import struct import uuid import logging import os +import errno import rpcBind, rpcRequest from dcerpc import MSRPCHeader @@ -19,8 +18,30 @@ from formatText import shell_message config = {} +# Valid language identifiers to be used in the EPID (see "kms.c" in vlmcsd) +ValidLcid = [1025, 1026, 1027, 1028, 1029, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1048, 1049, + 1050, 1051, 1052, 1053, 1054, 1056, 1057, 1058, 1059, + 1060, 1061, 1062, 1063, 1065, 1066, 1067, 1068, 1069, + 1071, 1074, 1076, 1077, 1078, 1079, + 1080, 1081, 1082, 1083, 1086, 1087, 1088, 1089, + 1091, 1092, 1093, 1094, 1095, 1097, 1098, 1099, + 1100, 1102, 1103, 1104, 1106, 1110, 1111, 1114, 1125, 1131, 1153, + 2049, 2052, 2055, 2057, 2058, 2060, 2064, 2067, 2068, 2070, 2074, 2077, 2092, 2107, 2110, 2115, 2155, + 3073, 3076, 3079, 3081, 3082, 3084, 3098, 3131, 3179, + 4097, 4100, 4103, 4105, 4106, 4108, 4122, 4155, + 5121, 5124, 5127, 5129, 5130, 5132, 5146, 5179, + 6145, 6153, 6154, 6156, 6170, 6203, + 7169, 7177, 7178, 7194, 7227, + 8193, 8201, 8202, 8251, + 9217, 9225, 9226, 9275, + 10241, 10249, 10250, 11265, 11273, 11274, 12289, 12297, 12298, + 13313, 13321, 13322, 14337, 14346, 15361, 15370, 16385, 16394, 17418, 18442, 19466, 20490] + + def main(): - parser = argparse.ArgumentParser(description='py2-kms: KMS Server Emulator written in Python2', epilog="version: py2-kms_2018-03-01") + parser = argparse.ArgumentParser(description='py2-kms: KMS Server Emulator written in Python2', epilog="version: py2-kms_2018-11-15") parser.add_argument("ip", nargs="?", action="store", default="0.0.0.0", help='The IP address to listen on. The default is \"0.0.0.0\" (all interfaces).', type=str) parser.add_argument("port", nargs="?", action="store", default=1688, @@ -28,10 +49,10 @@ def main(): parser.add_argument("-e", "--epid", dest="epid", default=None, help='Use this flag to manually specify an ePID to use. If no ePID is specified, a random ePID will be generated.', type=str) parser.add_argument("-l", "--lcid", dest="lcid", default=1033, - help='Use this flag to manually specify an LCID for use with randomly generated ePIDs. If an ePID is manually specified,\ -this setting is ignored.', type=int) + help='Use this flag to manually specify an LCID for use with randomly generated ePIDs. Default is 1033 (en-us)', type=int) parser.add_argument("-c", "--client-count", dest="CurrentClientCount", default=26, - help='Use this flag to specify the current client count. Default is 26. A number >25 is required to enable activation.', type=int) + help='Use this flag to specify the current client count. Default is 26. A number >=25 is required to enable \ +activation of client OSes; for server OSes and Office >=5', type=int) parser.add_argument("-a", "--activation-interval", dest="VLActivationInterval", default=120, help='Use this flag to specify the activation interval (in minutes). Default is 120 minutes (2 hours).', type=int) parser.add_argument("-r", "--renewal-interval", dest="VLRenewalInterval", default=1440 * 7, @@ -47,76 +68,95 @@ The default is \"364F463A8863D35F\" or type \"random\" to auto generate the HWID help='Use this flag to set an output Logfile. The default is \"pykms_server.log\".', type=str) config.update(vars(parser.parse_args())) - #Random HWID - if config['hwid'] == "random": - randomhwid = uuid.uuid4().hex - config['hwid'] = randomhwid[:16] - - # Sanitize HWID - try: - config['hwid'] = binascii.a2b_hex(re.sub(r'[^0-9a-fA-F]', '', config['hwid'].strip('0x'))) - if len(binascii.b2a_hex(config['hwid'])) < 16: - logging.error("HWID \"%s\" is invalid. Hex string is too short." % binascii.b2a_hex(config['hwid']).upper()) - return - elif len(binascii.b2a_hex(config['hwid'])) > 16: - logging.error("HWID \"%s\" is invalid. Hex string is too long." % binascii.b2a_hex(config['hwid']).upper()) - return - except TypeError: - logging.error("HWID \"%s\" is invalid. Odd-length hex string." % binascii.b2a_hex(config['hwid']).upper()) - return logging.basicConfig(level=config['loglevel'], format='%(asctime)s %(levelname)-8s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename=config['logfile'], filemode='w') + # Random HWID. + if config['hwid'] == "random": + randomhwid = uuid.uuid4().hex + config['hwid'] = randomhwid[:16] + + # Sanitize HWID. try: - import sqlite3 - config['dbSupport'] = True + config['hwid'] = binascii.a2b_hex(re.sub(r'[^0-9a-fA-F]', '', config['hwid'].strip('0x'))) + if len(binascii.b2a_hex(config['hwid'])) < 16: + logging.error("Error: HWID \"%s\" is invalid. Hex string is too short." % binascii.b2a_hex(config['hwid']).upper()) + return + elif len(binascii.b2a_hex(config['hwid'])) > 16: + logging.error("Error: HWID \"%s\" is invalid. Hex string is too long." % binascii.b2a_hex(config['hwid']).upper()) + return + except TypeError: + logging.error("Error: HWID \"%s\" is invalid. Odd-length hex string." % binascii.b2a_hex(config['hwid']).upper()) + return + + # Check LCID. + # http://stackoverflow.com/questions/3425294/how-to-detect-the-os-default-language-in-python + if not config['lcid'] or (config['lcid'] not in ValidLcid): + if hasattr(sys, 'implementation') and sys.implementation.name == 'cpython': + config['lcid'] = 1033 + elif os.name == 'nt': + import ctypes + + config['lcid'] = ctypes.windll.kernel32.GetUserDefaultUILanguage() # TODO: or GetSystemDefaultUILanguage? + else: + import locale + + try: + config['lcid'] = next(k for k, v in locale.windows_locale.items() if v == locale.getdefaultlocale()[0]) + except StopIteration: + config['lcid'] = 1033 + + try: + import sqlite3 except: logging.warning("Module \"sqlite3\" is not installed, database support disabled.") config['dbSupport'] = False + else: + config['dbSupport'] = True + server = SocketServer.TCPServer((config['ip'], config['port']), kmsServer) server.timeout = 5 logging.info("TCP server listening at %s on port %d." % (config['ip'], config['port'])) logging.info("HWID: %s" % binascii.b2a_hex(config['hwid']).upper()) server.serve_forever() + class kmsServer(SocketServer.BaseRequestHandler): def setup(self): - self.connection = self.request logging.info("Connection accepted: %s:%d" % (self.client_address[0], self.client_address[1])) def handle(self): while True: # self.request is the TCP socket connected to the client try: - self.data = self.connection.recv(1024) + data = self.request.recv(1024) except socket.error, e: - if e[0] == 104: + if e.errno == errno.ECONNRESET: logging.error("Connection reset by peer.") break else: raise - if self.data == '' or not self.data: + if not data: logging.warning("No data received !") break - # self.data = bytearray(self.data.strip()) - # logging.debug(binascii.b2a_hex(str(self.data))) - packetType = MSRPCHeader(self.data)['type'] + # data = bytearray(self.data.strip()) + # logging.debug(binascii.b2a_hex(str(data))) + packetType = MSRPCHeader(data)['type'] if packetType == rpcBase.packetType['bindReq']: logging.info("RPC bind request received.") shell_message(nshell = [-2, 2]) - handler = rpcBind.handler(self.data, config) + handler = rpcBind.handler(data, config) elif packetType == rpcBase.packetType['request']: logging.info("Received activation request.") shell_message(nshell = [-2, 13]) - handler = rpcRequest.handler(self.data, config) + handler = rpcRequest.handler(data, config) else: - logging.error("Invalid RPC request type ", packetType) + logging.error("Error: Invalid RPC request type ", packetType) break - handler.populate() - res = str(handler.getResponse()) - self.connection.send(res) + res = str(handler.populate()) + self.request.send(res) if packetType == rpcBase.packetType['bindReq']: logging.info("RPC bind acknowledged.") @@ -127,7 +167,7 @@ class kmsServer(SocketServer.BaseRequestHandler): break def finish(self): - self.connection.close() + self.request.close() logging.info("Connection closed: %s:%d" % (self.client_address[0], self.client_address[1])) if __name__ == "__main__": diff --git a/py2-kms/structure.py b/py2-kms/structure.py index c8f738c..3b90ba4 100644 --- a/py2-kms/structure.py +++ b/py2-kms/structure.py @@ -7,9 +7,9 @@ # for more information. # -""" Version of https://github.com/CoreSecurity/impacket/blob/master/impacket/structure.py - with modifications in the function dump(...). - Copyright 2018 Matteo Fan <SystemRage@protonmail.com> +""" +Stripped down version of: https://github.com/CoreSecurity/impacket/blob/master/impacket/structure.py +with modifications in the function dump(...). """ from struct import pack, unpack, calcsize @@ -90,18 +90,6 @@ class Structure: else: self.data = None - @classmethod - def fromFile(self, file): - answer = self() - answer.fromString(file.read(len(answer))) - return answer - - def setAlignment(self, alignment): - self.alignment = alignment - - def setData(self, data): - self.data = data - def packField(self, fieldName, format = None): if self.debug: print "packField( %s | %s )" % (fieldName, format) @@ -363,7 +351,7 @@ class Structure: return unpack(format, data)[0] def calcPackSize(self, format, data, field = None): -# # print " calcPackSize %s:%r" % (format, data) + # print " calcPackSize %s:%r" % (format, data) if field: addressField = self.findAddressFieldFor(field) if addressField is not None: @@ -544,26 +532,10 @@ class Structure: if field[1][-l:] == descriptor: return field[0] return None - - def zeroValue(self, format): - two = format.split('*') - if len(two) == 2: - if two[0].isdigit(): - return (self.zeroValue(two[1]),)*int(two[0]) - - if not format.find('*') == -1: return () - if 's' in format: return '' - if format in ['z',':','u']: return '' - if format == 'w': return '\x00\x00' - - return 0 - - def clear(self): - for field in self.commonHdr + self.structure: - self[field[0]] = self.zeroValue(field[1]) def dump(self, msg = None, indent = 0, print_to_stdout = True): - if msg is None: msg = self.__class__.__name__ + if msg is None: + msg = self.__class__.__name__ ind = ' '*indent allstr = "\n%s" % msg fixedFields = []