mirror of
https://github.com/SystemRage/py-kms.git
synced 2024-11-26 10:15:38 +01:00
uploaded version 2018_11_15 for python3
This commit is contained in:
parent
7130486efc
commit
e98858c9d0
798
py3-kms/KmsDataBase.xml
Normal file
798
py3-kms/KmsDataBase.xml
Normal file
@ -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>
|
@ -3,7 +3,8 @@
|
|||||||
# aes.py: implements AES - Advanced Encryption Standard
|
# aes.py: implements AES - Advanced Encryption Standard
|
||||||
# from the SlowAES project, http://code.google.com/p/slowaes/
|
# 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 )
|
# Copyright (c) 2008 Josh Davis ( http://www.josh-davis.org )
|
||||||
|
# Alex Martelli ( http://www.aleax.it )
|
||||||
#
|
#
|
||||||
# Ported from C code written by Laurent Haan ( http://www.progressive-coding.com )
|
# Ported from C code written by Laurent Haan ( http://www.progressive-coding.com )
|
||||||
|
|
||||||
@ -12,8 +13,8 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
Modified for py-kms;
|
||||||
Ported to Python3 with minimal changements.
|
Ported to Python3 with minimal changements.
|
||||||
© Copyright 2018 Matteo ℱan <SystemRage@protonmail.com>
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@ -160,7 +161,7 @@ class AES( object ):
|
|||||||
|
|
||||||
def expandKey(self, key, size, expandedKeySize):
|
def expandKey(self, key, size, expandedKeySize):
|
||||||
""" Method performing Rijndael's key expansion.
|
""" Method performing Rijndael's key expansion.
|
||||||
Expands an 128, 192, 256 key into an 176, 208, 240 bit key.
|
Expands an 128, 192, 256 key into an 176, 208, 240 bytes key.
|
||||||
"""
|
"""
|
||||||
# Current expanded keySize, in bytes.
|
# Current expanded keySize, in bytes.
|
||||||
currentSize = 0
|
currentSize = 0
|
||||||
@ -238,14 +239,12 @@ class AES( object ):
|
|||||||
state[i] = getter(state[i])
|
state[i] = getter(state[i])
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
||||||
def shiftRows(self, state, isInv):
|
def shiftRows(self, state, isInv):
|
||||||
""" Method to iterate over the 4 rows and call shiftRow(...) with that row. """
|
""" Method to iterate over the 4 rows and call shiftRow(...) with that row. """
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
state = self.shiftRow(state, i * 4, i, isInv)
|
state = self.shiftRow(state, i * 4, i, isInv)
|
||||||
return state
|
return state
|
||||||
|
|
||||||
|
|
||||||
def shiftRow(self, state, statePointer, nbr, isInv):
|
def shiftRow(self, state, statePointer, nbr, isInv):
|
||||||
""" Method to shift the row to the left. """
|
""" Method to shift the row to the left. """
|
||||||
for i in range(nbr):
|
for i in range(nbr):
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import re
|
||||||
import argparse
|
import argparse
|
||||||
import binascii
|
import binascii
|
||||||
import datetime
|
import datetime
|
||||||
import random
|
import random
|
||||||
import socket
|
import socket
|
||||||
import string
|
import string
|
||||||
import struct
|
|
||||||
import sys
|
import sys
|
||||||
import uuid
|
import uuid
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import errno
|
||||||
|
|
||||||
import filetimes, rpcBind, rpcRequest
|
import filetimes, rpcBind, rpcRequest
|
||||||
from dcerpc import MSRPCHeader, MSRPCBindNak, MSRPCRequestHeader, MSRPCRespHeader
|
from dcerpc import MSRPCHeader, MSRPCBindNak, MSRPCRequestHeader, MSRPCRespHeader
|
||||||
@ -19,6 +20,7 @@ from kmsRequestV4 import kmsRequestV4
|
|||||||
from kmsRequestV5 import kmsRequestV5
|
from kmsRequestV5 import kmsRequestV5
|
||||||
from kmsRequestV6 import kmsRequestV6
|
from kmsRequestV6 import kmsRequestV6
|
||||||
from rpcBase import rpcBase
|
from rpcBase import rpcBase
|
||||||
|
from kmsDB2Dict import kmsDB2Dict
|
||||||
from formatText import shell_message, justify, byterize
|
from formatText import shell_message, justify, byterize
|
||||||
|
|
||||||
config = {}
|
config = {}
|
||||||
@ -29,7 +31,8 @@ def main():
|
|||||||
parser.add_argument("port", nargs="?", action="store", default=1688,
|
parser.add_argument("port", nargs="?", action="store", default=1688,
|
||||||
help='The port the KMS service is listening on. The default is \"1688\".', type=int)
|
help='The port the KMS service is listening on. The default is \"1688\".', type=int)
|
||||||
parser.add_argument("-m", "--mode", dest="mode",
|
parser.add_argument("-m", "--mode", dest="mode",
|
||||||
choices=["WindowsVista","Windows7","Windows8","Windows81","Windows10","Office2010","Office2013","Office2016"], default="Windows7",
|
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)
|
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,
|
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)
|
help='Use this flag to manually specify a CMID to use. If no CMID is specified, a random CMID will be generated.', type=str)
|
||||||
@ -54,15 +57,15 @@ a random machineName will be generated.', type=str)
|
|||||||
s.connect((config['ip'], config['port']))
|
s.connect((config['ip'], config['port']))
|
||||||
logging.info("Connection successful !")
|
logging.info("Connection successful !")
|
||||||
binder = rpcBind.handler(None, config)
|
binder = rpcBind.handler(None, config)
|
||||||
RPC_Bind = str(binder.generateRequest()).encode('latin-1') #*2to3*
|
RPC_Bind = str(binder.generateRequest()).encode('latin-1')
|
||||||
logging.info("Sending RPC bind request...")
|
logging.info("Sending RPC bind request...")
|
||||||
shell_message(nshell = [-1, 1])
|
shell_message(nshell = [-1, 1])
|
||||||
s.send(RPC_Bind)
|
s.send(RPC_Bind)
|
||||||
try:
|
try:
|
||||||
shell_message(nshell = [-4, 7])
|
shell_message(nshell = [-4, 7])
|
||||||
bindResponse = s.recv(1024)
|
bindResponse = s.recv(1024)
|
||||||
except socket.error as e: #*2to3*
|
except socket.error as e:
|
||||||
if e[0] == 104:
|
if e.errno == errno.ECONNRESET:
|
||||||
logging.error("Connection reset by peer. Exiting...")
|
logging.error("Connection reset by peer. Exiting...")
|
||||||
sys.exit()
|
sys.exit()
|
||||||
else:
|
else:
|
||||||
@ -76,10 +79,10 @@ a random machineName will be generated.', type=str)
|
|||||||
shell_message(nshell = 8)
|
shell_message(nshell = 8)
|
||||||
kmsRequest = createKmsRequest()
|
kmsRequest = createKmsRequest()
|
||||||
requester = rpcRequest.handler(kmsRequest, config)
|
requester = rpcRequest.handler(kmsRequest, config)
|
||||||
s.send(str(requester.generateRequest()).encode('latin-1')) #*2to3*
|
s.send(str(requester.generateRequest()).encode('latin-1'))
|
||||||
shell_message(nshell = [-1, 12])
|
shell_message(nshell = [-1, 12])
|
||||||
response = s.recv(1024)
|
response = s.recv(1024)
|
||||||
logging.debug("Response: \n%s\n" % justify(binascii.b2a_hex(response).decode('latin-1'))) #*2to3*
|
logging.debug("Response: \n%s\n" % justify(binascii.b2a_hex(response).decode('latin-1')))
|
||||||
shell_message(nshell = [-4, 20])
|
shell_message(nshell = [-4, 20])
|
||||||
parsed = MSRPCRespHeader(response)
|
parsed = MSRPCRespHeader(response)
|
||||||
kmsData = readKmsResponse(parsed['pduData'], kmsRequest, config)
|
kmsData = readKmsResponse(parsed['pduData'], kmsRequest, config)
|
||||||
@ -87,12 +90,10 @@ a random machineName will be generated.', type=str)
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
hwid = kmsData['hwid']
|
hwid = kmsData['hwid']
|
||||||
except:
|
logging.info("KMS Host HWID: %s" % binascii.b2a_hex(hwid.encode('latin-1')).upper().decode('utf-8'))
|
||||||
hwid = None
|
except KeyError:
|
||||||
logging.info("KMS Host ePID: %s" % kmsResp['kmsEpid'].encode('utf-8').decode('utf-16le')) #*2to3*
|
pass
|
||||||
if hwid is not None:
|
logging.info("KMS Host ePID: %s" % kmsResp['kmsEpid'].encode('utf-8').decode('utf-16le'))
|
||||||
logging.info("KMS Host HWID: %s" % binascii.b2a_hex(hwid.encode('latin-1')).upper().decode('utf-8')) #*2to3*
|
|
||||||
|
|
||||||
logging.info("KMS Host Current Client Count: %s" % kmsResp['currentClientCount'])
|
logging.info("KMS Host Current Client Count: %s" % kmsResp['currentClientCount'])
|
||||||
logging.info("KMS VL Activation Interval: %s" % kmsResp['vLActivationInterval'])
|
logging.info("KMS VL Activation Interval: %s" % kmsResp['vLActivationInterval'])
|
||||||
logging.info("KMS VL Renewal Interval: %s" % kmsResp['vLRenewalInterval'])
|
logging.info("KMS VL Renewal Interval: %s" % kmsResp['vLRenewalInterval'])
|
||||||
@ -110,79 +111,44 @@ def checkConfig():
|
|||||||
if config['cmid'] is not None:
|
if config['cmid'] is not None:
|
||||||
try:
|
try:
|
||||||
uuid.UUID(config['cmid'])
|
uuid.UUID(config['cmid'])
|
||||||
except:
|
except ValueError:
|
||||||
logging.error("Bad CMID. Exiting...")
|
logging.error("Bad CMID. Exiting...")
|
||||||
sys.exit()
|
sys.exit()
|
||||||
if config['machineName'] is not None:
|
if config['machineName'] is not None:
|
||||||
if len(config['machineName']) < 2 or len(config['machineName']) > 63:
|
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()
|
sys.exit()
|
||||||
|
|
||||||
def updateConfig():
|
def updateConfig():
|
||||||
if config['mode'] == 'WindowsVista':
|
kmsdb = kmsDB2Dict()
|
||||||
config['RequiredClientCount'] = 25
|
|
||||||
config['KMSProtocolMajorVersion'] = 4
|
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['KMSProtocolMinorVersion'] = 0
|
||||||
config['KMSClientLicenseStatus'] = 2
|
config['KMSClientLicenseStatus'] = 2
|
||||||
config['KMSClientAppID'] = "55c92734-d682-4d71-983e-d6ec3f16059f"
|
config['KMSClientAppID'] = appitem['Id']
|
||||||
config['KMSClientSkuID'] = "cfd8ff08-c0d7-452b-9f60-ef5c70c32094"
|
config['KMSClientKMSCountedID'] = kmsitem['Id']
|
||||||
config['KMSClientKMSCountedID'] = "212a64dc-43b1-4d3d-a30c-2fc69d2095c6"
|
break
|
||||||
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"
|
|
||||||
|
|
||||||
def createKmsRequestBase():
|
def createKmsRequestBase():
|
||||||
requestDict = kmsBase.kmsRequestStruct()
|
requestDict = kmsBase.kmsRequestStruct()
|
||||||
@ -243,9 +209,9 @@ def readKmsResponse(data, request, config):
|
|||||||
|
|
||||||
def readKmsResponseV4(data, request):
|
def readKmsResponseV4(data, request):
|
||||||
response = kmsRequestV4.ResponseV4(data)
|
response = kmsRequestV4.ResponseV4(data)
|
||||||
hashed = kmsRequestV4(data, config).generateHash(bytearray(str(response['response']).encode('latin-1'))) #*2to3*
|
hashed = kmsRequestV4(data, config).generateHash(bytearray(str(response['response']).encode('latin-1')))
|
||||||
if hashed.decode('latin-1') == response['hash']:
|
if hashed.decode('latin-1') == response['hash']:
|
||||||
logging.info("Response Hash has expected value !!")
|
logging.info("Response Hash has expected value !")
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def readKmsResponseV5(data):
|
def readKmsResponseV5(data):
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# Copyright (c) 2003-2014 CORE Security Technologies
|
# Copyright (c) 2003-2016 CORE Security Technologies
|
||||||
#
|
#
|
||||||
# This software is provided under under a slightly modified version
|
# This software is provided under under a slightly modified version
|
||||||
# of the Apache Software License. See the accompanying LICENSE file
|
# of the Apache Software License. See the accompanying LICENSE file
|
||||||
@ -20,11 +20,10 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Stripped down version of `https://github.com/CoreSecurity/impacket/blob/master/impacket/dcerpc/v5/rpcrt.py`,
|
Stripped down version of: https://github.com/SecureAuthCorp/impacket/blob/python36/impacket/dcerpc/v5/rpcrt.py
|
||||||
modified for Python3.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from structure import Structure, pack, unpack
|
from structure import Structure
|
||||||
|
|
||||||
# MS/RPC Constants
|
# MS/RPC Constants
|
||||||
MSRPC_REQUEST = 0x00
|
MSRPC_REQUEST = 0x00
|
||||||
@ -49,8 +48,8 @@ MSRPC_CO_CANCEL = 0x12
|
|||||||
MSRPC_ORPHANED = 0x13
|
MSRPC_ORPHANED = 0x13
|
||||||
|
|
||||||
# MS/RPC Packet Flags
|
# MS/RPC Packet Flags
|
||||||
MSRPC_FIRSTFRAG = 0x01
|
PFC_FIRST_FRAG = 0x01
|
||||||
MSRPC_LASTFRAG = 0x02
|
PFC_LAST_FRAG = 0x02
|
||||||
|
|
||||||
# For PDU types bind, bind_ack, alter_context, and
|
# For PDU types bind, bind_ack, alter_context, and
|
||||||
# alter_context_resp, this flag MUST be interpreted as PFC_SUPPORT_HEADER_SIGN
|
# alter_context_resp, this flag MUST be interpreted as PFC_SUPPORT_HEADER_SIGN
|
||||||
@ -60,12 +59,11 @@ MSRPC_SUPPORT_SIGN = 0x04
|
|||||||
#remaining PDU types, this flag MUST be interpreted as PFC_PENDING_CANCEL.
|
#remaining PDU types, this flag MUST be interpreted as PFC_PENDING_CANCEL.
|
||||||
MSRPC_PENDING_CANCEL= 0x04
|
MSRPC_PENDING_CANCEL= 0x04
|
||||||
|
|
||||||
MSRPC_NOTAFRAG = 0x04
|
PFC_RESERVED_1 = 0x08
|
||||||
MSRPC_RECRESPOND = 0x08
|
PFC_CONC_MPX = 0x10
|
||||||
MSRPC_NOMULTIPLEX = 0x10
|
PFC_DID_NOT_EXECUTE = 0x20
|
||||||
MSRPC_NOTFORIDEMP = 0x20
|
PFC_MAYBE = 0x40
|
||||||
MSRPC_NOTFORBCAST = 0x40
|
PFC_OBJECT_UUID = 0x80
|
||||||
MSRPC_NOUUID = 0x80
|
|
||||||
|
|
||||||
# Auth Types - Security Providers
|
# Auth Types - Security Providers
|
||||||
RPC_C_AUTHN_NONE = 0x00
|
RPC_C_AUTHN_NONE = 0x00
|
||||||
@ -112,7 +110,6 @@ rpc_cont_def_result = {
|
|||||||
#winerror.h
|
#winerror.h
|
||||||
#http://www.opengroup.org/onlinepubs/9629399/apdxn.htm
|
#http://www.opengroup.org/onlinepubs/9629399/apdxn.htm
|
||||||
|
|
||||||
#*2to3* 0x00000005L -> 0x00000005.....
|
|
||||||
rpc_status_codes = {
|
rpc_status_codes = {
|
||||||
0x00000005 : 'rpc_s_access_denied',
|
0x00000005 : 'rpc_s_access_denied',
|
||||||
0x00000008 : 'Authentication type not recognized',
|
0x00000008 : 'Authentication type not recognized',
|
||||||
@ -537,28 +534,6 @@ rpc_status_codes = {
|
|||||||
0x16c9a171 : "rpc_s_no_context_available",
|
0x16c9a171 : "rpc_s_no_context_available",
|
||||||
}
|
}
|
||||||
|
|
||||||
class Exception(Exception):
|
|
||||||
pass
|
|
||||||
|
|
||||||
##class DCERPCException(Exception):
|
|
||||||
## def __init__( self, error_code):
|
|
||||||
## Exception.__init__(self)
|
|
||||||
## self.error_code = error_code
|
|
||||||
##
|
|
||||||
## def get_error_code( self ):
|
|
||||||
## return self.error_code
|
|
||||||
##
|
|
||||||
## def get_packet( self ):
|
|
||||||
## return self.packet
|
|
||||||
##
|
|
||||||
## def __str__( self ):
|
|
||||||
## key = self.error_code
|
|
||||||
## if (rpc_status_codes.has_key(key)):
|
|
||||||
## error_msg_short = rpc_status_codes[key]
|
|
||||||
## return 'DCERPC Runtime Error: code: 0x%x - %s ' % (self.error_code, error_msg_short)
|
|
||||||
## else:
|
|
||||||
## return 'DCERPC Runtime Error: unknown error code: 0x%x' % (self.error_code)
|
|
||||||
|
|
||||||
# Context Item
|
# Context Item
|
||||||
class CtxItem(Structure):
|
class CtxItem(Structure):
|
||||||
structure = (
|
structure = (
|
||||||
@ -569,7 +544,6 @@ class CtxItem(Structure):
|
|||||||
('TransferSyntax','20s=""'),
|
('TransferSyntax','20s=""'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class CtxItemResult(Structure):
|
class CtxItemResult(Structure):
|
||||||
structure = (
|
structure = (
|
||||||
('Result','<H=0'),
|
('Result','<H=0'),
|
||||||
@ -577,7 +551,6 @@ class CtxItemResult(Structure):
|
|||||||
('TransferSyntax','20s=""'),
|
('TransferSyntax','20s=""'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class SEC_TRAILER(Structure):
|
class SEC_TRAILER(Structure):
|
||||||
commonHdr = (
|
commonHdr = (
|
||||||
('auth_type', 'B=10'),
|
('auth_type', 'B=10'),
|
||||||
@ -587,7 +560,6 @@ class SEC_TRAILER(Structure):
|
|||||||
('auth_ctx_id','<L=747920'),
|
('auth_ctx_id','<L=747920'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class MSRPCHeader(Structure):
|
class MSRPCHeader(Structure):
|
||||||
_SIZE = 16
|
_SIZE = 16
|
||||||
commonHdr = (
|
commonHdr = (
|
||||||
@ -617,20 +589,20 @@ class MSRPCHeader(Structure):
|
|||||||
if data is None:
|
if data is None:
|
||||||
self['ver_major'] = 5
|
self['ver_major'] = 5
|
||||||
self['ver_minor'] = 0
|
self['ver_minor'] = 0
|
||||||
self['flags'] = MSRPC_FIRSTFRAG | MSRPC_LASTFRAG
|
self['flags'] = PFC_FIRST_FRAG | PFC_LAST_FRAG
|
||||||
self['type'] = MSRPC_REQUEST
|
self['type'] = MSRPC_REQUEST
|
||||||
self.__frag_len_set = 0
|
self.__frag_len_set = 0
|
||||||
self['auth_len'] = 0
|
self['auth_len'] = 0
|
||||||
self['pduData'] = ''
|
self['pduData'] = b''
|
||||||
self['auth_data'] = ''
|
self['auth_data'] = b''
|
||||||
self['sec_trailer'] = ''
|
self['sec_trailer'] = b''
|
||||||
self['pad'] = ''
|
self['pad'] = b''
|
||||||
|
|
||||||
def get_header_size(self):
|
def get_header_size(self):
|
||||||
return self._SIZE + (16 if (self["flags"] & MSRPC_NOUUID) > 0 else 0)
|
return self._SIZE + (16 if (self["flags"] & PFC_OBJECT_UUID) > 0 else 0)
|
||||||
|
|
||||||
def get_packet(self):
|
def get_packet(self):
|
||||||
if self['auth_data'] != '':
|
if self['auth_data'] != b'':
|
||||||
self['auth_len'] = len(self['auth_data'])
|
self['auth_len'] = len(self['auth_data'])
|
||||||
# The sec_trailer structure MUST be 4-byte aligned with respect to
|
# The sec_trailer structure MUST be 4-byte aligned with respect to
|
||||||
# the beginning of the PDU. Padding octets MUST be used to align the
|
# the beginning of the PDU. Padding octets MUST be used to align the
|
||||||
@ -639,7 +611,6 @@ class MSRPCHeader(Structure):
|
|||||||
|
|
||||||
return self.getData()
|
return self.getData()
|
||||||
|
|
||||||
|
|
||||||
class MSRPCRequestHeader(MSRPCHeader):
|
class MSRPCRequestHeader(MSRPCHeader):
|
||||||
_SIZE = 24
|
_SIZE = 24
|
||||||
commonHdr = MSRPCHeader.commonHdr + (
|
commonHdr = MSRPCHeader.commonHdr + (
|
||||||
@ -655,8 +626,7 @@ class MSRPCRequestHeader(MSRPCHeader):
|
|||||||
if data is None:
|
if data is None:
|
||||||
self['type'] = MSRPC_REQUEST
|
self['type'] = MSRPC_REQUEST
|
||||||
self['ctx_id'] = 0
|
self['ctx_id'] = 0
|
||||||
self['uuid'] = ''
|
self['uuid'] = b''
|
||||||
|
|
||||||
|
|
||||||
class MSRPCRespHeader(MSRPCHeader):
|
class MSRPCRespHeader(MSRPCHeader):
|
||||||
_SIZE = 24
|
_SIZE = 24
|
||||||
@ -673,7 +643,6 @@ class MSRPCRespHeader(MSRPCHeader):
|
|||||||
self['type'] = MSRPC_RESPONSE
|
self['type'] = MSRPC_RESPONSE
|
||||||
self['ctx_id'] = 0
|
self['ctx_id'] = 0
|
||||||
|
|
||||||
|
|
||||||
class MSRPCBind(Structure):
|
class MSRPCBind(Structure):
|
||||||
_CTX_ITEM_LEN = len(CtxItem())
|
_CTX_ITEM_LEN = len(CtxItem())
|
||||||
structure = (
|
structure = (
|
||||||
@ -694,7 +663,7 @@ class MSRPCBind(Structure):
|
|||||||
self['max_rfrag'] = 4280
|
self['max_rfrag'] = 4280
|
||||||
self['assoc_group'] = 0
|
self['assoc_group'] = 0
|
||||||
self['ctx_num'] = 1
|
self['ctx_num'] = 1
|
||||||
self['ctx_items'] = ''
|
self['ctx_items'] = b''
|
||||||
self.__ctx_items = []
|
self.__ctx_items = []
|
||||||
|
|
||||||
def addCtxItem(self, item):
|
def addCtxItem(self, item):
|
||||||
@ -706,7 +675,6 @@ class MSRPCBind(Structure):
|
|||||||
self['ctx_items'] += i.getData()
|
self['ctx_items'] += i.getData()
|
||||||
return Structure.getData(self)
|
return Structure.getData(self)
|
||||||
|
|
||||||
|
|
||||||
class MSRPCBindAck(MSRPCHeader):
|
class MSRPCBindAck(MSRPCHeader):
|
||||||
_SIZE = 26 # Up to SecondaryAddr
|
_SIZE = 26 # Up to SecondaryAddr
|
||||||
_CTX_ITEM_LEN = len(CtxItemResult())
|
_CTX_ITEM_LEN = len(CtxItemResult())
|
||||||
@ -732,10 +700,10 @@ class MSRPCBindAck(MSRPCHeader):
|
|||||||
self.__ctx_items = []
|
self.__ctx_items = []
|
||||||
MSRPCHeader.__init__(self,data,alignment)
|
MSRPCHeader.__init__(self,data,alignment)
|
||||||
if data is None:
|
if data is None:
|
||||||
self['Pad'] = ''
|
self['Pad'] = b''
|
||||||
self['ctx_items'] = ''
|
self['ctx_items'] = b''
|
||||||
self['sec_trailer'] = ''
|
self['sec_trailer'] = b''
|
||||||
self['auth_data'] = ''
|
self['auth_data'] = b''
|
||||||
|
|
||||||
def getCtxItems(self):
|
def getCtxItems(self):
|
||||||
return self.__ctx_items
|
return self.__ctx_items
|
||||||
@ -752,7 +720,6 @@ class MSRPCBindAck(MSRPCHeader):
|
|||||||
self.__ctx_items.append(item)
|
self.__ctx_items.append(item)
|
||||||
data = data[len(item):]
|
data = data[len(item):]
|
||||||
|
|
||||||
|
|
||||||
class MSRPCBindNak(Structure):
|
class MSRPCBindNak(Structure):
|
||||||
structure = (
|
structure = (
|
||||||
('RejectedReason','<H=0'),
|
('RejectedReason','<H=0'),
|
||||||
@ -761,5 +728,4 @@ class MSRPCBindNak(Structure):
|
|||||||
def __init__(self, data = None, alignment = 0):
|
def __init__(self, data = None, alignment = 0):
|
||||||
Structure.__init__(self,data,alignment)
|
Structure.__init__(self,data,alignment)
|
||||||
if data is None:
|
if data is None:
|
||||||
self['SupportedVersions'] = ''
|
self['SupportedVersions'] = b''
|
||||||
|
|
||||||
|
@ -103,4 +103,3 @@ if __name__ == "__main__":
|
|||||||
import doctest
|
import doctest
|
||||||
|
|
||||||
doctest.testmod()
|
doctest.testmod()
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
def byterize(obj):
|
def byterize(obj):
|
||||||
objdict = obj.__dict__['fields']
|
objdict = obj.__dict__['fields']
|
||||||
|
|
||||||
@ -70,8 +68,6 @@ class ShellStyle(object):
|
|||||||
return self.style(s, '\033[4m')
|
return self.style(s, '\033[4m')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def shell_message(nshell):
|
def shell_message(nshell):
|
||||||
|
|
||||||
shelldict = {0: ShellStyle().yellow("Client generating RPC Bind Request..."),
|
shelldict = {0: ShellStyle().yellow("Client generating RPC Bind Request..."),
|
||||||
@ -108,6 +104,3 @@ def shell_message(nshell):
|
|||||||
else:
|
else:
|
||||||
print(shelldict[nshell])
|
print(shelldict[nshell])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,25 +2,23 @@
|
|||||||
|
|
||||||
import binascii
|
import binascii
|
||||||
import logging
|
import logging
|
||||||
import datetime
|
|
||||||
import os
|
import os
|
||||||
import struct
|
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
from structure import Structure
|
from structure import Structure
|
||||||
import filetimes
|
from kmsDB2Dict import kmsDB2Dict
|
||||||
import kmsPidGenerator
|
import kmsPidGenerator
|
||||||
|
import filetimes
|
||||||
from formatText import justify, shell_message, byterize
|
from formatText import justify, shell_message, byterize
|
||||||
|
|
||||||
# sqlite3 is optional
|
# sqlite3 is optional
|
||||||
try:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
except:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class UUID(Structure):
|
class UUID(Structure):
|
||||||
commonHdr = ()
|
commonHdr = ()
|
||||||
structure = (
|
structure = (
|
||||||
@ -28,9 +26,13 @@ class UUID(Structure):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
return uuid.UUID(bytes_le=str(self).encode('latin-1')) #*2to3*
|
return uuid.UUID(bytes_le=str(self).encode('latin-1'))
|
||||||
|
|
||||||
class kmsBase:
|
class kmsBase:
|
||||||
|
def __init__(self, data, config):
|
||||||
|
self.data = data
|
||||||
|
self.config = config
|
||||||
|
|
||||||
class kmsRequestStruct(Structure):
|
class kmsRequestStruct(Structure):
|
||||||
commonHdr = ()
|
commonHdr = ()
|
||||||
structure = (
|
structure = (
|
||||||
@ -81,359 +83,6 @@ class kmsBase:
|
|||||||
('remainder', '_'),
|
('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 = {
|
licenseStates = {
|
||||||
0 : "Unlicensed",
|
0 : "Unlicensed",
|
||||||
1 : "Activated",
|
1 : "Activated",
|
||||||
@ -464,29 +113,9 @@ class kmsBase:
|
|||||||
'SL_E_VL_MACHINE_NOT_BOUND' : 0xC004F056
|
'SL_E_VL_MACHINE_NOT_BOUND' : 0xC004F056
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, data, config):
|
def getPadding(self, bodyLength):
|
||||||
self.data = data
|
## https://forums.mydigitallife.info/threads/71213-Source-C-KMS-Server-from-Microsoft-Toolkit?p=1277542&viewfull=1#post1277542
|
||||||
self.config = config
|
return 4 + (((~bodyLength & 3) + 1) & 3)
|
||||||
|
|
||||||
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 serverLogic(self, kmsRequest):
|
def serverLogic(self, kmsRequest):
|
||||||
if self.config['sqlite'] and self.config['dbSupport']:
|
if self.config['sqlite'] and self.config['dbSupport']:
|
||||||
@ -497,11 +126,11 @@ class kmsBase:
|
|||||||
try:
|
try:
|
||||||
con = sqlite3.connect(self.dbName)
|
con = sqlite3.connect(self.dbName)
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
cur.execute("CREATE TABLE clients(clientMachineId TEXT, machineName TEXT, \
|
cur.execute("CREATE TABLE clients(clientMachineId TEXT, machineName TEXT, applicationId TEXT, \
|
||||||
applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kmsEpid TEXT, requestCount INTEGER)")
|
skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kmsEpid TEXT, requestCount INTEGER)")
|
||||||
|
|
||||||
except sqlite3.Error as e: #*2to3*
|
except sqlite3.Error as e:
|
||||||
logging.error("%s:" % e.args[0])
|
logging.error("Error %s:" % e.args[0])
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
@ -511,7 +140,7 @@ applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kms
|
|||||||
|
|
||||||
shell_message(nshell = 15)
|
shell_message(nshell = 15)
|
||||||
kmsRequest = byterize(kmsRequest)
|
kmsRequest = byterize(kmsRequest)
|
||||||
logging.debug("KMS Request Bytes: \n%s\n" % justify(binascii.b2a_hex(str(kmsRequest).encode('latin-1')).decode('utf-8'))) #*2to3*
|
logging.debug("KMS Request Bytes: \n%s\n" % justify(binascii.b2a_hex(str(kmsRequest).encode('latin-1')).decode('utf-8')))
|
||||||
logging.debug("KMS Request: \n%s\n" % justify(kmsRequest.dump(print_to_stdout = False)))
|
logging.debug("KMS Request: \n%s\n" % justify(kmsRequest.dump(print_to_stdout = False)))
|
||||||
|
|
||||||
clientMachineId = kmsRequest['clientMachineId'].get()
|
clientMachineId = kmsRequest['clientMachineId'].get()
|
||||||
@ -519,19 +148,57 @@ applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kms
|
|||||||
skuId = kmsRequest['skuId'].get()
|
skuId = kmsRequest['skuId'].get()
|
||||||
requestDatetime = filetimes.filetime_to_dt(kmsRequest['requestTime'])
|
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:
|
try:
|
||||||
import timezones
|
from tzlocal import get_localzone
|
||||||
from pytz import utc
|
from pytz.exceptions import UnknownTimeZoneError
|
||||||
local_dt = utc.localize(requestDatetime).astimezone(timezones.localtz())
|
try:
|
||||||
except ImportError:
|
tz = get_localzone()
|
||||||
|
local_dt = tz.localize(requestDatetime)
|
||||||
|
except UnknownTimeZoneError:
|
||||||
|
logging.warning('Unknown time zone ! Request time not localized.')
|
||||||
local_dt = requestDatetime
|
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 = {
|
infoDict = {
|
||||||
"machineName" : kmsRequest.getMachineName(),
|
"machineName" : kmsRequest.getMachineName(),
|
||||||
"clientMachineId" : str(clientMachineId),
|
"clientMachineId" : str(clientMachineId),
|
||||||
"appId" : self.appIds.get(applicationId, str(applicationId)),
|
"appId" : appName,
|
||||||
"skuId" : self.skuIds.get(skuId, str(skuId)),
|
"skuId" : skuName,
|
||||||
"licenseStatus" : kmsRequest.getLicenseStatus(),
|
"licenseStatus" : kmsRequest.getLicenseStatus(),
|
||||||
"requestTime" : int(time.time()),
|
"requestTime" : int(time.time()),
|
||||||
"kmsEpid" : None
|
"kmsEpid" : None
|
||||||
@ -555,9 +222,8 @@ applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kms
|
|||||||
data = cur.fetchone()
|
data = cur.fetchone()
|
||||||
if not data:
|
if not data:
|
||||||
#print "Inserting row..."
|
#print "Inserting row..."
|
||||||
cur.execute("INSERT INTO clients (clientMachineId, machineName, \
|
cur.execute("INSERT INTO clients (clientMachineId, machineName, applicationId, \
|
||||||
applicationId, skuId, licenseStatus, lastRequestTime, requestCount) VALUES (:clientMachineId, :machineName, :appId, \
|
skuId, licenseStatus, lastRequestTime, requestCount) VALUES (:clientMachineId, :machineName, :appId, :skuId, :licenseStatus, :requestTime, 1);", infoDict)
|
||||||
:skuId, :licenseStatus, :requestTime, 1);", infoDict)
|
|
||||||
else:
|
else:
|
||||||
#print "Data:", data
|
#print "Data:", data
|
||||||
if data[1] != infoDict["machineName"]:
|
if data[1] != infoDict["machineName"]:
|
||||||
@ -579,33 +245,33 @@ clientMachineId=:clientMachineId;", infoDict)
|
|||||||
cur.execute("UPDATE clients SET requestCount=requestCount+1 WHERE \
|
cur.execute("UPDATE clients SET requestCount=requestCount+1 WHERE \
|
||||||
clientMachineId=:clientMachineId;", infoDict)
|
clientMachineId=:clientMachineId;", infoDict)
|
||||||
|
|
||||||
except sqlite3.Error as e: #*2to3*
|
except sqlite3.Error as e:
|
||||||
logging.error("%s:" % e.args[0])
|
logging.error("Error %s:" % e.args[0])
|
||||||
|
|
||||||
except sqlite3.Error as e: #*2to3*
|
except sqlite3.Error as e:
|
||||||
logging.error("%s:" % e.args[0])
|
logging.error("Error %s:" % e.args[0])
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
finally:
|
finally:
|
||||||
if con:
|
if con:
|
||||||
con.commit()
|
con.commit()
|
||||||
con.close()
|
con.close()
|
||||||
|
|
||||||
return self.createKmsResponse(kmsRequest)
|
return self.createKmsResponse(kmsRequest, currentClientCount)
|
||||||
|
|
||||||
def createKmsResponse(self, kmsRequest):
|
def createKmsResponse(self, kmsRequest, currentClientCount):
|
||||||
response = self.kmsResponseStruct()
|
response = self.kmsResponseStruct()
|
||||||
response['versionMinor'] = kmsRequest['versionMinor']
|
response['versionMinor'] = kmsRequest['versionMinor']
|
||||||
response['versionMajor'] = kmsRequest['versionMajor']
|
response['versionMajor'] = kmsRequest['versionMajor']
|
||||||
|
|
||||||
if not self.config["epid"]:
|
if not self.config["epid"]:
|
||||||
response["kmsEpid"] = kmsPidGenerator.epidGenerator(kmsRequest['applicationId'].get(),
|
response["kmsEpid"] = kmsPidGenerator.epidGenerator(kmsRequest['kmsCountedId'].get(), kmsRequest['versionMajor'],
|
||||||
kmsRequest['versionMajor'], self.config["lcid"]).encode('utf-16le')
|
self.config["lcid"]).encode('utf-16le')
|
||||||
else:
|
else:
|
||||||
response["kmsEpid"] = self.config["epid"].encode('utf-16le')
|
response["kmsEpid"] = self.config["epid"].encode('utf-16le')
|
||||||
|
|
||||||
response['clientMachineId'] = kmsRequest['clientMachineId']
|
response['clientMachineId'] = kmsRequest['clientMachineId']
|
||||||
response['responseTime'] = kmsRequest['requestTime']
|
response['responseTime'] = kmsRequest['requestTime']
|
||||||
response['currentClientCount'] = self.config["CurrentClientCount"]
|
response['currentClientCount'] = currentClientCount
|
||||||
response['vLActivationInterval'] = self.config["VLActivationInterval"]
|
response['vLActivationInterval'] = self.config["VLActivationInterval"]
|
||||||
response['vLRenewalInterval'] = self.config["VLRenewalInterval"]
|
response['vLRenewalInterval'] = self.config["VLRenewalInterval"]
|
||||||
|
|
||||||
@ -623,11 +289,11 @@ clientMachineId=:clientMachineId;", infoDict)
|
|||||||
cur.execute("UPDATE clients SET kmsEpid=? WHERE clientMachineId=?;",
|
cur.execute("UPDATE clients SET kmsEpid=? WHERE clientMachineId=?;",
|
||||||
(str(response["kmsEpid"].decode('utf-16le')), str(kmsRequest['clientMachineId'].get())))
|
(str(response["kmsEpid"].decode('utf-16le')), str(kmsRequest['clientMachineId'].get())))
|
||||||
|
|
||||||
except sqlite3.Error as e: #*2to3*
|
except sqlite3.Error as e:
|
||||||
logging.error("%s:" % e.args[0])
|
logging.error("Error %s:" % e.args[0])
|
||||||
|
|
||||||
except sqlite3.Error as e: #*2to3*
|
except sqlite3.Error as e:
|
||||||
logging.error("%s:" % e.args[0])
|
logging.error("Error %s:" % e.args[0])
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
finally:
|
finally:
|
||||||
if con:
|
if con:
|
||||||
@ -643,22 +309,19 @@ import kmsRequestV4, kmsRequestV5, kmsRequestV6, kmsRequestUnknown
|
|||||||
|
|
||||||
def generateKmsResponseData(data, config):
|
def generateKmsResponseData(data, config):
|
||||||
version = kmsBase.GenericRequestHeader(data)['versionMajor']
|
version = kmsBase.GenericRequestHeader(data)['versionMajor']
|
||||||
currentDate = datetime.datetime.now().ctime()
|
currentDate = time.strftime("%a %b %d %H:%M:%S %Y")
|
||||||
|
|
||||||
if version == 4:
|
if version == 4:
|
||||||
logging.info("Received V%d request on %s." % (version, currentDate))
|
logging.info("Received V%d request on %s." % (version, currentDate))
|
||||||
messagehandler = kmsRequestV4.kmsRequestV4(data, config)
|
messagehandler = kmsRequestV4.kmsRequestV4(data, config)
|
||||||
messagehandler.executeRequestLogic()
|
|
||||||
elif version == 5:
|
elif version == 5:
|
||||||
logging.info("Received V%d request on %s." % (version, currentDate))
|
logging.info("Received V%d request on %s." % (version, currentDate))
|
||||||
messagehandler = kmsRequestV5.kmsRequestV5(data, config)
|
messagehandler = kmsRequestV5.kmsRequestV5(data, config)
|
||||||
messagehandler.executeRequestLogic()
|
|
||||||
elif version == 6:
|
elif version == 6:
|
||||||
logging.info("Received V%d request on %s." % (version, currentDate))
|
logging.info("Received V%d request on %s." % (version, currentDate))
|
||||||
messagehandler = kmsRequestV6.kmsRequestV6(data, config)
|
messagehandler = kmsRequestV6.kmsRequestV6(data, config)
|
||||||
messagehandler.executeRequestLogic()
|
|
||||||
else:
|
else:
|
||||||
logging.info("Unhandled KMS version V%d." % version)
|
logging.info("Unhandled KMS version V%d." % version)
|
||||||
messagehandler = kmsRequestUnknown.kmsRequestUnknown(data, config)
|
messagehandler = kmsRequestUnknown.kmsRequestUnknown(data, config)
|
||||||
|
|
||||||
return messagehandler.getResponse()
|
return messagehandler.executeRequestLogic()
|
||||||
|
45
py3-kms/kmsDB2Dict.py
Normal file
45
py3-kms/kmsDB2Dict.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
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
|
@ -4,133 +4,86 @@ import datetime
|
|||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
|
from ast import literal_eval
|
||||||
|
|
||||||
APP_ID_WINDOWS = uuid.UUID("55C92734-D682-4D71-983E-D6EC3F16059F")
|
from kmsDB2Dict import kmsDB2Dict
|
||||||
APP_ID_OFFICE14 = uuid.UUID("59A52881-A989-479D-AF46-F275C6370663")
|
|
||||||
APP_ID_OFFICE15 = uuid.UUID("0FF1CE15-A989-479D-AF46-F275C6370663") # also valid for Office 16 (2016).
|
|
||||||
|
|
||||||
|
|
||||||
# KMS Host OS Type
|
def epidGenerator(kmsId, version, lcid):
|
||||||
hostOsList = {}
|
kmsdb = kmsDB2Dict()
|
||||||
# Windows Server 2008 R2 SP1
|
winbuilds, csvlkitems, appitems = kmsdb[0], kmsdb[1], kmsdb[2]
|
||||||
hostOsList["HOST_SERVER2008R2"] = {
|
hosts, pkeys = [ [] for _ in range(2) ]
|
||||||
"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(list(hostOsList.keys())) #*2to3*
|
|
||||||
hostOsDict = hostOsList[hostOsType]
|
|
||||||
|
|
||||||
|
# Product Specific Detection (Get all CSVLK GroupID and PIDRange good for EPID generation), then
|
||||||
# Generate Part 2: Group ID and Product Key ID Range
|
# Generate Part 2: Group ID and Product Key ID Range
|
||||||
if appId == APP_ID_OFFICE14:
|
for csvlkitem in csvlkitems:
|
||||||
keyConfig = pkeyConfigList["office14"]
|
try:
|
||||||
elif appId == APP_ID_OFFICE15:
|
if kmsId in [ uuid.UUID(kmsitem) for kmsitem in csvlkitem['Activate'] ]:
|
||||||
keyConfig = pkeyConfigList["office15"]
|
pkeys.append( (csvlkitem['GroupId'], csvlkitem['MinKeyId'], csvlkitem['MaxKeyId'], csvlkitem['InvalidWinBuild']) )
|
||||||
else:
|
except IndexError:
|
||||||
# Default to Windows
|
# fallback to Windows Server 2019 parameters.
|
||||||
if hostOsDict['osBuild'] == 14393:
|
GroupId, MinKeyId, MaxKeyId, Invalid = 206, 551000000, 570999999, [0,1,2]
|
||||||
keyConfig = pkeyConfigList["windows2012r2"]
|
|
||||||
elif hostOsDict['osBuild'] == 9600:
|
pkey = random.choice(pkeys)
|
||||||
keyConfig = pkeyConfigList["windows2012r2"]
|
GroupId, MinKeyId, MaxKeyId, Invalid = int(pkey[0]), int(pkey[1]), int(pkey[2]), literal_eval(pkey[3])
|
||||||
else:
|
|
||||||
keyConfig = pkeyConfigList["windows"]
|
# 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
|
# 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,
|
# Generate Part 5: License Channel (00=Retail, 01=Retail, 02=OEM, 03=Volume(GVLK,MAK)) - always 03
|
||||||
# 03=Volume(GVLK,MAK)) - always 03
|
|
||||||
licenseChannel = 3
|
licenseChannel = 3
|
||||||
|
|
||||||
# Generate Part 6: Language - use system default language
|
# Generate Part 6: Language - use system default language, 1033 is en-us
|
||||||
# 1033 is en-us
|
languageCode = lcid # (C# CultureInfo.InstalledUICulture.LCID)
|
||||||
languageCode = lcid # C# CultureInfo.InstalledUICulture.LCID
|
|
||||||
|
|
||||||
# Generate Part 8: KMS Host Activation Date
|
# Generate Part 8: KMS Host Activation Date
|
||||||
# Get Minimum Possible Date: Newer Products first
|
d = datetime.datetime.strptime(MinDate, "%d/%m/%Y")
|
||||||
if hostOsType == "HOST_SERVER2016":
|
minTime = datetime.date(d.year, d.month, d.day)
|
||||||
# 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)
|
|
||||||
|
|
||||||
# Generate Year and Day Number
|
# Generate Year and Day Number
|
||||||
randomDate = datetime.date.fromtimestamp(random.randint(time.mktime(minTime.timetuple()), time.mktime(datetime.datetime.now().timetuple())))
|
randomDate = datetime.date.fromtimestamp(random.randint(time.mktime(minTime.timetuple()), time.mktime(datetime.datetime.now().timetuple())))
|
||||||
firstOfYear = datetime.date(randomDate.year, 1, 1)
|
firstOfYear = datetime.date(randomDate.year, 1, 1)
|
||||||
randomDayNumber = int((time.mktime(randomDate.timetuple()) - time.mktime(firstOfYear.timetuple())) / 86400 + 0.5)
|
randomDayNumber = int((time.mktime(randomDate.timetuple()) - time.mktime(firstOfYear.timetuple())) / 86400 + 0.5)
|
||||||
|
|
||||||
# generate the epid string
|
# Generate the EPID string
|
||||||
result = []
|
result = []
|
||||||
result.append(str(hostOsDict["type"]).rjust(5, "0"))
|
result.append(str(PlatformId).rjust(5, "0"))
|
||||||
result.append("-")
|
result.append("-")
|
||||||
result.append(str(keyConfig["GroupID"]).rjust(5, "0"))
|
result.append(str(GroupId).rjust(5, "0"))
|
||||||
result.append("-")
|
result.append("-")
|
||||||
result.append(str(productKeyID // 10**6).rjust(3, "0")) #*2to3*
|
result.append(str(productKeyID // 1000000).rjust(3, "0"))
|
||||||
result.append("-")
|
result.append("-")
|
||||||
result.append(str(productKeyID % 10**6).rjust(6, "0"))
|
result.append(str(productKeyID % 1000000).rjust(6, "0"))
|
||||||
result.append("-")
|
result.append("-")
|
||||||
result.append(str(licenseChannel).rjust(2, "0"))
|
result.append(str(licenseChannel).rjust(2, "0"))
|
||||||
result.append("-")
|
result.append("-")
|
||||||
result.append(str(languageCode))
|
result.append(str(languageCode))
|
||||||
result.append("-")
|
result.append("-")
|
||||||
result.append(str(hostOsDict["osBuild"]).rjust(4, "0"))
|
result.append(str(BuildNumber).rjust(4, "0"))
|
||||||
result.append(".0000-")
|
result.append(".0000-")
|
||||||
result.append(str(randomDayNumber).rjust(3, "0"))
|
result.append(str(randomDayNumber).rjust(3, "0"))
|
||||||
result.append(str(randomDate.year).rjust(4, "0"))
|
result.append(str(randomDate.year).rjust(4, "0"))
|
||||||
|
|
||||||
return "".join(result)
|
return "".join(result)
|
||||||
|
@ -5,9 +5,9 @@ import struct
|
|||||||
from kmsBase import kmsBase
|
from kmsBase import kmsBase
|
||||||
|
|
||||||
class kmsRequestUnknown(kmsBase):
|
class kmsRequestUnknown(kmsBase):
|
||||||
def getResponse(self):
|
def executeRequestLogic(self):
|
||||||
finalResponse = bytearray()
|
finalResponse = bytearray()
|
||||||
finalResponse.extend(bytearray(struct.pack('<I', 0)))
|
finalResponse.extend(bytearray(struct.pack('<I', 0)))
|
||||||
finalResponse.extend(bytearray(struct.pack('<I', 0)))
|
finalResponse.extend(bytearray(struct.pack('<I', 0)))
|
||||||
finalResponse.extend(bytearray(struct.pack('<I', self.errorCodes['SL_E_VL_KEY_MANAGEMENT_SERVICE_ID_MISMATCH'])))
|
finalResponse.extend(bytearray(struct.pack('<I', self.errorCodes['SL_E_VL_KEY_MANAGEMENT_SERVICE_ID_MISMATCH'])))
|
||||||
return finalResponse.decode('utf-8').encode('utf-8') #*2to3*
|
return finalResponse.decode('utf-8').encode('utf-8')
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import binascii
|
import binascii
|
||||||
import struct
|
|
||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -10,7 +9,6 @@ from structure import Structure
|
|||||||
from aes import AES
|
from aes import AES
|
||||||
from formatText import shell_message, justify, byterize
|
from formatText import shell_message, justify, byterize
|
||||||
|
|
||||||
|
|
||||||
# v4 AES Key
|
# v4 AES Key
|
||||||
key = bytearray([0x05, 0x3D, 0x83, 0x07, 0xF9, 0xE5, 0xF0, 0x88, 0xEB, 0x5E, 0xA6, 0x68, 0x6C, 0xF0, 0x37, 0xC7, 0xE4, 0xEF, 0xD2, 0xD6])
|
key = bytearray([0x05, 0x3D, 0x83, 0x07, 0xF9, 0xE5, 0xF0, 0x88, 0xEB, 0x5E, 0xA6, 0x68, 0x6C, 0xF0, 0x37, 0xC7, 0xE4, 0xEF, 0xD2, 0xD6])
|
||||||
|
|
||||||
@ -33,9 +31,9 @@ class kmsRequestV4(kmsBase):
|
|||||||
class ResponseV4(Structure):
|
class ResponseV4(Structure):
|
||||||
commonHdr = ()
|
commonHdr = ()
|
||||||
structure = (
|
structure = (
|
||||||
('bodyLength1', '<I=len(response) + len(hash)'),
|
('bodyLength1', '<I'),
|
||||||
('unknown', '!I=0x00000200'),
|
('unknown', '!I=0x00000200'),
|
||||||
('bodyLength2', '<I=len(response) + len(hash)'),
|
('bodyLength2', '<I'),
|
||||||
('response', ':', kmsBase.kmsResponseStruct),
|
('response', ':', kmsBase.kmsResponseStruct),
|
||||||
('hash', '16s'),
|
('hash', '16s'),
|
||||||
('padding', ':'),
|
('padding', ':'),
|
||||||
@ -45,13 +43,14 @@ class kmsRequestV4(kmsBase):
|
|||||||
requestData = self.RequestV4(self.data)
|
requestData = self.RequestV4(self.data)
|
||||||
|
|
||||||
response = self.serverLogic(requestData['request'])
|
response = self.serverLogic(requestData['request'])
|
||||||
|
thehash = self.generateHash(bytearray(str(response).encode('latin-1')))
|
||||||
|
|
||||||
thehash = self.generateHash(bytearray(str(response).encode('latin-1'))) #*2to3*
|
responseData = self.generateResponse(response, thehash)
|
||||||
|
|
||||||
self.responseData = self.generateResponse(response, thehash)
|
|
||||||
|
|
||||||
time.sleep(1) # request sent back too quick for Windows 2008 R2, slow it down.
|
time.sleep(1) # request sent back too quick for Windows 2008 R2, slow it down.
|
||||||
|
|
||||||
|
return responseData
|
||||||
|
|
||||||
def generateHash(self, message):
|
def generateHash(self, message):
|
||||||
"""
|
"""
|
||||||
The KMS v4 hash is a variant of CMAC-AES-128. There are two key differences:
|
The KMS v4 hash is a variant of CMAC-AES-128. There are two key differences:
|
||||||
@ -90,42 +89,40 @@ class kmsRequestV4(kmsBase):
|
|||||||
xorBuffer(lastBlock, 0, hashBuffer, 16)
|
xorBuffer(lastBlock, 0, hashBuffer, 16)
|
||||||
hashBuffer = bytearray(aes.encrypt(hashBuffer, key, len(key)))
|
hashBuffer = bytearray(aes.encrypt(hashBuffer, key, len(key)))
|
||||||
|
|
||||||
return hashBuffer #*2to3*
|
return hashBuffer
|
||||||
|
|
||||||
def generateResponse(self, responseBuffer, thehash):
|
def generateResponse(self, responseBuffer, thehash):
|
||||||
bodyLength = len(responseBuffer) + len(thehash)
|
|
||||||
response = self.ResponseV4()
|
response = self.ResponseV4()
|
||||||
|
bodyLength = len(responseBuffer) + len(thehash)
|
||||||
|
response['bodyLength1'] = bodyLength
|
||||||
|
response['bodyLength2'] = bodyLength
|
||||||
response['response'] = responseBuffer
|
response['response'] = responseBuffer
|
||||||
response['hash'] = thehash.decode('latin-1') #*2to3*
|
response['hash'] = thehash.decode('latin-1')
|
||||||
response['padding'] = self.getResponsePadding(bodyLength).decode('latin-1') #*2to3*
|
response['padding'] = bytearray(self.getPadding(bodyLength)).decode('latin-1')
|
||||||
|
|
||||||
## Debug stuff.
|
## Debug stuff.
|
||||||
shell_message(nshell = 16)
|
shell_message(nshell = 16)
|
||||||
response = byterize(response)
|
response = byterize(response)
|
||||||
logging.debug("KMS V4 Response: \n%s\n" % justify(response.dump(print_to_stdout = False)))
|
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).encode('latin-1')).decode('utf-8'))) #*2to3*
|
logging.debug("KMS V4 Response Bytes: \n%s\n" % justify(binascii.b2a_hex(str(response).encode('latin-1')).decode('utf-8')))
|
||||||
|
|
||||||
return str(response)
|
return str(response)
|
||||||
|
|
||||||
def getResponse(self):
|
|
||||||
return self.responseData
|
|
||||||
|
|
||||||
def generateRequest(self, requestBase):
|
def generateRequest(self, requestBase):
|
||||||
thehash = self.generateHash(bytearray(str(requestBase).encode('latin-1'))) #*2to3*
|
thehash = self.generateHash(bytearray(str(requestBase).encode('latin-1')))
|
||||||
|
|
||||||
bodyLength = len(requestBase) + len(thehash)
|
|
||||||
|
|
||||||
request = kmsRequestV4.RequestV4()
|
request = kmsRequestV4.RequestV4()
|
||||||
|
bodyLength = len(requestBase) + len(thehash)
|
||||||
request['bodyLength1'] = bodyLength
|
request['bodyLength1'] = bodyLength
|
||||||
request['bodyLength2'] = bodyLength
|
request['bodyLength2'] = bodyLength
|
||||||
request['request'] = requestBase
|
request['request'] = requestBase
|
||||||
request['hash'] = thehash.decode('latin-1') #*2to3*
|
request['hash'] = thehash.decode('latin-1')
|
||||||
request['padding'] = self.getResponsePadding(bodyLength).decode('latin-1') #*2to3*
|
request['padding'] = bytearray(self.getPadding(bodyLength)).decode('latin-1')
|
||||||
|
|
||||||
## Debug stuff.
|
## Debug stuff.
|
||||||
shell_message(nshell = 10)
|
shell_message(nshell = 10)
|
||||||
request = byterize(request)
|
request = byterize(request)
|
||||||
logging.debug("Request V4 Data: \n%s\n" % justify(request.dump(print_to_stdout = False)))
|
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).encode('latin-1')).decode('utf-8'))) #*2to3*
|
logging.debug("Request V4: \n%s\n" % justify(binascii.b2a_hex(str(request).encode('latin-1')).decode('utf-8')))
|
||||||
|
|
||||||
return request
|
return request
|
||||||
|
@ -4,11 +4,10 @@ import logging
|
|||||||
import binascii
|
import binascii
|
||||||
import hashlib
|
import hashlib
|
||||||
import random
|
import random
|
||||||
import struct
|
|
||||||
|
|
||||||
|
import aes
|
||||||
from kmsBase import kmsBase
|
from kmsBase import kmsBase
|
||||||
from structure import Structure
|
from structure import Structure
|
||||||
import aes
|
|
||||||
from formatText import justify, shell_message, byterize
|
from formatText import justify, shell_message, byterize
|
||||||
|
|
||||||
class kmsRequestV5(kmsBase):
|
class kmsRequestV5(kmsBase):
|
||||||
@ -17,7 +16,7 @@ class kmsRequestV5(kmsBase):
|
|||||||
commonHdr = ()
|
commonHdr = ()
|
||||||
structure = (
|
structure = (
|
||||||
('salt', '16s'),
|
('salt', '16s'),
|
||||||
('encrypted', '236s'), #kmsBase.kmsRequestStruct
|
('encrypted', '240s'), #kmsBase.kmsRequestStruct
|
||||||
('padding', ':'),
|
('padding', ':'),
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -40,9 +39,9 @@ class kmsRequestV5(kmsBase):
|
|||||||
class ResponseV5(Structure):
|
class ResponseV5(Structure):
|
||||||
commonHdr = ()
|
commonHdr = ()
|
||||||
structure = (
|
structure = (
|
||||||
('bodyLength1', '<I=2 + 2 + len(salt) + len(encrypted)'),
|
('bodyLength1', '<I'),
|
||||||
('unknown', '!I=0x00000200'),
|
('unknown', '!I=0x00000200'),
|
||||||
('bodyLength2', '<I=2 + 2 + len(salt) + len(encrypted)'),
|
('bodyLength2', '<I'),
|
||||||
('versionMinor', '<H'),
|
('versionMinor', '<H'),
|
||||||
('versionMajor', '<H'),
|
('versionMajor', '<H'),
|
||||||
('salt', '16s'),
|
('salt', '16s'),
|
||||||
@ -65,106 +64,104 @@ class kmsRequestV5(kmsBase):
|
|||||||
ver = 5
|
ver = 5
|
||||||
|
|
||||||
def executeRequestLogic(self):
|
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'])
|
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):
|
def decryptRequest(self, request):
|
||||||
encrypted = bytearray(str(request['message']).encode('latin-1')) #*2to3*
|
encrypted = bytearray(str(request['message']).encode('latin-1'))
|
||||||
iv = bytearray(request['message']['salt'].encode('latin-1')) #*2to3*
|
iv = bytearray(request['message']['salt'].encode('latin-1'))
|
||||||
|
|
||||||
moo = aes.AESModeOfOperation()
|
moo = aes.AESModeOfOperation()
|
||||||
moo.aes.v6 = self.v6
|
moo.aes.v6 = self.v6
|
||||||
decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv) #*2to3*
|
decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv) #*2to3*
|
||||||
decrypted = aes.strip_PKCS7_padding(decrypted)
|
decrypted = aes.strip_PKCS7_padding(decrypted)
|
||||||
decrypted = bytes(decrypted) #*2to3*
|
decrypted = bytes(decrypted)
|
||||||
|
|
||||||
return self.DecryptedRequest(decrypted)
|
return self.DecryptedRequest(decrypted)
|
||||||
|
|
||||||
def encryptResponse(self, request, decrypted, response):
|
def encryptResponse(self, request, decrypted, response):
|
||||||
randomSalt = self.getRandomSalt()
|
randomSalt = self.getRandomSalt()
|
||||||
sha256 = hashlib.sha256()
|
result = hashlib.sha256(randomSalt).digest()
|
||||||
sha256.update(randomSalt) #*2to3*
|
iv = bytearray(request['message']['salt'].encode('latin-1'))
|
||||||
result = sha256.digest()
|
|
||||||
|
|
||||||
iv = bytearray(request['message']['salt'].encode('latin-1')) #*2to3*
|
|
||||||
|
|
||||||
randomStuff = bytearray(16)
|
randomStuff = bytearray(16)
|
||||||
for i in range(0,16):
|
for i in range(0,16):
|
||||||
randomStuff[i] = (bytearray(decrypted['salt'].encode('latin-1'))[i] ^ iv[i] ^ randomSalt[i]) & 0xff #*2to3*
|
randomStuff[i] = (bytearray(decrypted['salt'].encode('latin-1'))[i] ^ iv[i] ^ randomSalt[i]) & 0xff
|
||||||
|
|
||||||
responsedata = self.DecryptedResponse()
|
responsedata = self.DecryptedResponse()
|
||||||
responsedata['response'] = response
|
responsedata['response'] = response
|
||||||
responsedata['keys'] = randomStuff #*2to3*
|
responsedata['keys'] = randomStuff
|
||||||
responsedata['hash'] = result
|
responsedata['hash'] = result
|
||||||
|
|
||||||
padded = aes.append_PKCS7_padding(str(responsedata).encode('latin-1')) #*2to3*
|
padded = aes.append_PKCS7_padding(str(responsedata).encode('latin-1'))
|
||||||
moo = aes.AESModeOfOperation()
|
moo = aes.AESModeOfOperation()
|
||||||
moo.aes.v6 = self.v6
|
moo.aes.v6 = self.v6
|
||||||
mode, orig_len, crypted = moo.encrypt(padded, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv) #*2to3*
|
mode, orig_len, crypted = moo.encrypt(padded, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv)
|
||||||
|
|
||||||
return iv.decode('latin-1').encode('latin-1'), crypted #*2to3*
|
|
||||||
|
|
||||||
|
return iv.decode('latin-1').encode('latin-1'), crypted
|
||||||
|
|
||||||
def decryptResponse(self, response):
|
def decryptResponse(self, response):
|
||||||
paddingLength = response['bodyLength1'] % 8
|
paddingLength = self.getPadding(response['bodyLength1'])
|
||||||
iv = bytearray(response['salt'].encode('latin-1')) #*2to3*
|
|
||||||
encrypted = bytearray(response['encrypted'][:-paddingLength].encode('latin-1')) #*2to3*
|
iv = bytearray(response['salt'].encode('latin-1'))
|
||||||
|
encrypted = bytearray(response['encrypted'][:-paddingLength].encode('latin-1'))
|
||||||
moo = aes.AESModeOfOperation()
|
moo = aes.AESModeOfOperation()
|
||||||
moo.aes.v6 = self.v6
|
moo.aes.v6 = self.v6
|
||||||
decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv) #*2to3*
|
decrypted = moo.decrypt(encrypted, 256, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], iv)
|
||||||
decrypted = aes.strip_PKCS7_padding(decrypted)
|
decrypted = aes.strip_PKCS7_padding(decrypted)
|
||||||
decrypted = bytes(decrypted) #*2to3*
|
decrypted = bytes(decrypted)
|
||||||
|
|
||||||
return self.DecryptedResponse(decrypted)
|
return self.DecryptedResponse(decrypted)
|
||||||
|
|
||||||
def getRandomSalt(self):
|
def getRandomSalt(self):
|
||||||
return bytearray(random.getrandbits(8) for i in range(16))
|
return bytearray(random.getrandbits(8) for i in range(16))
|
||||||
|
|
||||||
def generateResponse(self, iv, encryptedResponse):
|
def generateResponse(self, iv, encryptedResponse, requestData):
|
||||||
bodyLength = 4 + len(iv) + len(encryptedResponse)
|
|
||||||
response = self.ResponseV5()
|
response = self.ResponseV5()
|
||||||
response['versionMinor'] = self.requestData['versionMinor']
|
bodyLength = 2 + 2 + len(iv) + len(encryptedResponse)
|
||||||
response['versionMajor'] = self.requestData['versionMajor']
|
response['bodyLength1'] = bodyLength
|
||||||
|
response['bodyLength2'] = bodyLength
|
||||||
|
response['versionMinor'] = requestData['versionMinor']
|
||||||
|
response['versionMajor'] = requestData['versionMajor']
|
||||||
response['salt'] = iv
|
response['salt'] = iv
|
||||||
response['encrypted'] = bytes(encryptedResponse) #*2to3*
|
response['encrypted'] = bytes(encryptedResponse)
|
||||||
response['padding'] = self.getResponsePadding(bodyLength).decode('latin-1').encode('latin-1') #*2to3*
|
response['padding'] = bytearray(self.getPadding(bodyLength)).decode('latin-1').encode('latin-1')
|
||||||
|
|
||||||
shell_message(nshell = 16)
|
shell_message(nshell = 16)
|
||||||
response = byterize(response)
|
response = byterize(response)
|
||||||
logging.info("KMS V%d Response: \n%s\n" % (self.ver, justify(response.dump(print_to_stdout = False))))
|
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).encode('latin-1')).decode('utf-8')))) #*2to3*
|
logging.info("KMS V%d Structure Bytes: \n%s\n" % (self.ver, justify(binascii.b2a_hex(str(response).encode('latin-1')).decode('utf-8'))))
|
||||||
|
|
||||||
return str(response)
|
return str(response)
|
||||||
|
|
||||||
def getResponse(self):
|
|
||||||
return self.responseData
|
|
||||||
|
|
||||||
def generateRequest(self, requestBase):
|
def generateRequest(self, requestBase):
|
||||||
esalt = self.getRandomSalt()
|
esalt = self.getRandomSalt()
|
||||||
|
|
||||||
moo = aes.AESModeOfOperation()
|
moo = aes.AESModeOfOperation()
|
||||||
moo.aes.v6 = self.v6
|
moo.aes.v6 = self.v6
|
||||||
dsalt = moo.decrypt(esalt, 16, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], esalt) #*2to3*
|
dsalt = moo.decrypt(esalt, 16, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], esalt)
|
||||||
dsalt = bytearray(dsalt)
|
dsalt = bytearray(dsalt)
|
||||||
|
|
||||||
decrypted = self.DecryptedRequest()
|
decrypted = self.DecryptedRequest()
|
||||||
decrypted['salt'] = dsalt #*2to3*
|
decrypted['salt'] = dsalt
|
||||||
decrypted['request'] = requestBase
|
decrypted['request'] = requestBase
|
||||||
|
|
||||||
padded = aes.append_PKCS7_padding(str(decrypted).encode('latin-1')) #*2to3*
|
padded = aes.append_PKCS7_padding(str(decrypted).encode('latin-1'))
|
||||||
mode, orig_len, crypted = moo.encrypt(padded, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], esalt) #*2to3*
|
mode, orig_len, crypted = moo.encrypt(padded, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], esalt)
|
||||||
|
|
||||||
message = self.RequestV5.Message(bytes(crypted)) #*2to3*
|
message = self.RequestV5.Message(bytes(crypted))
|
||||||
|
|
||||||
bodyLength = len(message) + 2 + 2
|
|
||||||
|
|
||||||
request = self.RequestV5()
|
request = self.RequestV5()
|
||||||
|
bodyLength = 2 + 2 + len(message)
|
||||||
request['bodyLength1'] = bodyLength
|
request['bodyLength1'] = bodyLength
|
||||||
request['bodyLength2'] = bodyLength
|
request['bodyLength2'] = bodyLength
|
||||||
request['versionMinor'] = requestBase['versionMinor']
|
request['versionMinor'] = requestBase['versionMinor']
|
||||||
@ -174,6 +171,6 @@ class kmsRequestV5(kmsBase):
|
|||||||
shell_message(nshell = 10)
|
shell_message(nshell = 10)
|
||||||
request = byterize(request)
|
request = byterize(request)
|
||||||
logging.info("Request V%d Data: \n%s\n" % (self.ver, justify(request.dump(print_to_stdout = False))))
|
logging.info("Request V%d Data: \n%s\n" % (self.ver, justify(request.dump(print_to_stdout = False))))
|
||||||
logging.info("Request V%d: \n%s\n" % (self.ver, justify(binascii.b2a_hex(str(request).encode('latin-1')).decode('utf-8')))) #*2to3*
|
logging.info("Request V%d: \n%s\n" % (self.ver, justify(binascii.b2a_hex(str(request).encode('latin-1')).decode('utf-8'))))
|
||||||
|
|
||||||
return request
|
return request
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import binascii
|
|
||||||
import hashlib
|
import hashlib
|
||||||
import hmac
|
import hmac
|
||||||
import random
|
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
import aes
|
import aes
|
||||||
@ -37,13 +35,10 @@ class kmsRequestV6(kmsRequestV5):
|
|||||||
|
|
||||||
def encryptResponse(self, request, decrypted, response):
|
def encryptResponse(self, request, decrypted, response):
|
||||||
randomSalt = self.getRandomSalt()
|
randomSalt = self.getRandomSalt()
|
||||||
|
result = hashlib.sha256(randomSalt).digest()
|
||||||
|
|
||||||
sha256 = hashlib.sha256()
|
SaltC = bytearray(request['message']['salt'].encode('latin-1'))
|
||||||
sha256.update(randomSalt) #*2to3*
|
DSaltC = bytearray(decrypted['salt'].encode('latin-1'))
|
||||||
result = sha256.digest()
|
|
||||||
|
|
||||||
SaltC = bytearray(request['message']['salt'].encode('latin-1')) #*2to3*
|
|
||||||
DSaltC = bytearray(decrypted['salt'].encode('latin-1')) #*2to3*
|
|
||||||
|
|
||||||
randomStuff = bytearray(16)
|
randomStuff = bytearray(16)
|
||||||
for i in range(0,16):
|
for i in range(0,16):
|
||||||
@ -56,9 +51,9 @@ class kmsRequestV6(kmsRequestV5):
|
|||||||
|
|
||||||
message = self.DecryptedResponse.Message()
|
message = self.DecryptedResponse.Message()
|
||||||
message['response'] = response
|
message['response'] = response
|
||||||
message['keys'] = randomStuff #*2to3*
|
message['keys'] = randomStuff
|
||||||
message['hash'] = result
|
message['hash'] = result
|
||||||
message['xorSalts'] = XorSalts #*2to3*
|
message['xorSalts'] = XorSalts
|
||||||
message['hwid'] = self.config['hwid']
|
message['hwid'] = self.config['hwid']
|
||||||
|
|
||||||
# SaltS
|
# SaltS
|
||||||
@ -66,7 +61,7 @@ class kmsRequestV6(kmsRequestV5):
|
|||||||
|
|
||||||
moo = aes.AESModeOfOperation()
|
moo = aes.AESModeOfOperation()
|
||||||
moo.aes.v6 = True
|
moo.aes.v6 = True
|
||||||
decry = moo.decrypt(SaltS, 16, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], SaltS) #*2to3*
|
decry = moo.decrypt(SaltS, 16, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], SaltS)
|
||||||
|
|
||||||
# DSaltS
|
# DSaltS
|
||||||
DSaltS = bytearray(decry)
|
DSaltS = bytearray(decry)
|
||||||
@ -75,22 +70,22 @@ class kmsRequestV6(kmsRequestV5):
|
|||||||
HMacMsg = bytearray(16)
|
HMacMsg = bytearray(16)
|
||||||
for i in range(0,16):
|
for i in range(0,16):
|
||||||
HMacMsg[i] = (SaltS[i] ^ DSaltS[i]) & 0xff
|
HMacMsg[i] = (SaltS[i] ^ DSaltS[i]) & 0xff
|
||||||
HMacMsg.extend(str(message).encode('latin-1')) #*2to3*
|
HMacMsg.extend(str(message).encode('latin-1'))
|
||||||
|
|
||||||
# HMacKey
|
# HMacKey
|
||||||
requestTime = decrypted['request']['requestTime']
|
requestTime = decrypted['request']['requestTime']
|
||||||
HMacKey = self.getMACKey(requestTime)
|
HMacKey = self.getMACKey(requestTime)
|
||||||
HMac = hmac.new(HMacKey, HMacMsg, hashlib.sha256) #*2to3*
|
HMac = hmac.new(HMacKey, HMacMsg, hashlib.sha256)
|
||||||
digest = HMac.digest()
|
digest = HMac.digest()
|
||||||
|
|
||||||
responsedata = self.DecryptedResponse()
|
responsedata = self.DecryptedResponse()
|
||||||
responsedata['message'] = message
|
responsedata['message'] = message
|
||||||
responsedata['hmac'] = digest[16:]
|
responsedata['hmac'] = digest[16:]
|
||||||
|
|
||||||
padded = aes.append_PKCS7_padding(str(responsedata).encode('latin-1')) #*2to3*
|
padded = aes.append_PKCS7_padding(str(responsedata).encode('latin-1'))
|
||||||
mode, orig_len, crypted = moo.encrypt(padded, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], SaltS) #*2to3*
|
mode, orig_len, crypted = moo.encrypt(padded, moo.ModeOfOperation["CBC"], self.key, moo.aes.KeySize["SIZE_128"], SaltS)
|
||||||
|
|
||||||
return SaltS.decode('latin-1').encode('latin-1'), crypted #*2to3*
|
return SaltS.decode('latin-1').encode('latin-1'), crypted
|
||||||
|
|
||||||
|
|
||||||
def getMACKey(self, t):
|
def getMACKey(self, t):
|
||||||
@ -98,7 +93,7 @@ class kmsRequestV6(kmsRequestV5):
|
|||||||
c2 = 0x000000208CBAB5ED
|
c2 = 0x000000208CBAB5ED
|
||||||
c3 = 0x3156CD5AC628477A
|
c3 = 0x3156CD5AC628477A
|
||||||
|
|
||||||
i1 = (t // c1) & 0xFFFFFFFFFFFFFFFF #*2to3*
|
i1 = (t // c1) & 0xFFFFFFFFFFFFFFFF
|
||||||
i2 = (i1 * c2) & 0xFFFFFFFFFFFFFFFF
|
i2 = (i1 * c2) & 0xFFFFFFFFFFFFFFFF
|
||||||
seed = (i2 + c3) & 0xFFFFFFFFFFFFFFFF
|
seed = (i2 + c3) & 0xFFFFFFFFFFFFFFFF
|
||||||
|
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import struct
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
class rpcBase:
|
class rpcBase:
|
||||||
packetType = {
|
packetType = {
|
||||||
'request': 0,
|
'request': 0,
|
||||||
@ -42,21 +39,7 @@ class rpcBase:
|
|||||||
self.config = config
|
self.config = config
|
||||||
|
|
||||||
def populate(self):
|
def populate(self):
|
||||||
self.requestData = self.parseRequest()
|
return self.generateResponse(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
|
|
||||||
|
|
||||||
def parseRequest(self):
|
def parseRequest(self):
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def getResponse(self):
|
|
||||||
return self.responseData
|
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
import binascii
|
import binascii
|
||||||
import struct
|
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import rpcBase
|
import rpcBase
|
||||||
@ -10,7 +9,6 @@ from dcerpc import MSRPCHeader, MSRPCBindAck
|
|||||||
from structure import Structure
|
from structure import Structure
|
||||||
from formatText import shell_message, justify, byterize
|
from formatText import shell_message, justify, byterize
|
||||||
|
|
||||||
|
|
||||||
uuidNDR32 = uuid.UUID('8a885d04-1ceb-11c9-9fe8-08002b104860')
|
uuidNDR32 = uuid.UUID('8a885d04-1ceb-11c9-9fe8-08002b104860')
|
||||||
uuidNDR64 = uuid.UUID('71710533-beba-4937-8319-b5dbef9ccc36')
|
uuidNDR64 = uuid.UUID('71710533-beba-4937-8319-b5dbef9ccc36')
|
||||||
uuidTime = uuid.UUID('6cb71c2c-9812-4540-0300-000000000000')
|
uuidTime = uuid.UUID('6cb71c2c-9812-4540-0300-000000000000')
|
||||||
@ -28,7 +26,7 @@ class CtxItem(Structure):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def ts(self):
|
def ts(self):
|
||||||
return uuid.UUID(bytes_le=self['TransferSyntaxUUID'].encode('latin-1')) #*2to3*
|
return uuid.UUID(bytes_le=self['TransferSyntaxUUID'].encode('latin-1'))
|
||||||
|
|
||||||
class CtxItemResult(Structure):
|
class CtxItemResult(Structure):
|
||||||
structure = (
|
structure = (
|
||||||
@ -75,7 +73,6 @@ class MSRPCBind(Structure):
|
|||||||
class handler(rpcBase.rpcBase):
|
class handler(rpcBase.rpcBase):
|
||||||
def parseRequest(self):
|
def parseRequest(self):
|
||||||
request = MSRPCHeader(self.data)
|
request = MSRPCHeader(self.data)
|
||||||
|
|
||||||
shell_message(nshell = 3)
|
shell_message(nshell = 3)
|
||||||
request = byterize(request)
|
request = byterize(request)
|
||||||
logging.debug("RPC Bind Request Bytes: \n%s\n" % justify(binascii.b2a_hex(self.data).decode('utf-8')))
|
logging.debug("RPC Bind Request Bytes: \n%s\n" % justify(binascii.b2a_hex(self.data).decode('utf-8')))
|
||||||
@ -84,9 +81,9 @@ class handler(rpcBase.rpcBase):
|
|||||||
|
|
||||||
return request
|
return request
|
||||||
|
|
||||||
def generateResponse(self):
|
def generateResponse(self, request):
|
||||||
response = MSRPCBindAck()
|
response = MSRPCBindAck()
|
||||||
request = self.requestData
|
|
||||||
bind = MSRPCBind(request['pduData'])
|
bind = MSRPCBind(request['pduData'])
|
||||||
|
|
||||||
response['ver_major'] = request['ver_major']
|
response['ver_major'] = request['ver_major']
|
||||||
@ -123,7 +120,7 @@ class handler(rpcBase.rpcBase):
|
|||||||
shell_message(nshell = 4)
|
shell_message(nshell = 4)
|
||||||
response = byterize(response)
|
response = byterize(response)
|
||||||
logging.debug("RPC Bind Response: \n%s\n" % justify(response.dump(print_to_stdout = False)))
|
logging.debug("RPC Bind Response: \n%s\n" % justify(response.dump(print_to_stdout = False)))
|
||||||
logging.debug("RPC Bind Response Bytes: \n%s\n" % justify(binascii.b2a_hex(str(response).encode('latin-1')).decode('utf-8'))) #*2to3*
|
logging.debug("RPC Bind Response Bytes: \n%s\n" % justify(binascii.b2a_hex(str(response).encode('latin-1')).decode('utf-8')))
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@ -151,7 +148,7 @@ class handler(rpcBase.rpcBase):
|
|||||||
bind['max_rfrag'] = 5840
|
bind['max_rfrag'] = 5840
|
||||||
bind['assoc_group'] = 0
|
bind['assoc_group'] = 0
|
||||||
bind['ctx_num'] = 2
|
bind['ctx_num'] = 2
|
||||||
bind['ctx_items'] = str(bind.CtxItemArray(str(firstCtxItem) + str(secondCtxItem))) #*2to3*
|
bind['ctx_items'] = str(bind.CtxItemArray(str(firstCtxItem) + str(secondCtxItem)))
|
||||||
|
|
||||||
request = MSRPCHeader()
|
request = MSRPCHeader()
|
||||||
request['ver_major'] = 5
|
request['ver_major'] = 5
|
||||||
@ -166,10 +163,9 @@ class handler(rpcBase.rpcBase):
|
|||||||
request = byterize(request)
|
request = byterize(request)
|
||||||
logging.debug("RPC Bind Request: \n%s\n%s\n" % (justify(request.dump(print_to_stdout = False)),
|
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).encode('latin-1')).decode('utf-8'))) #*2to3*
|
logging.debug("RPC Bind Request Bytes: \n%s\n" % justify(binascii.b2a_hex(str(request).encode('latin-1')).decode('utf-8')))
|
||||||
|
|
||||||
return request
|
return request
|
||||||
|
|
||||||
def parseResponse(self):
|
def parseResponse(self):
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
@ -2,19 +2,15 @@
|
|||||||
|
|
||||||
import binascii
|
import binascii
|
||||||
import logging
|
import logging
|
||||||
import struct
|
|
||||||
import uuid
|
|
||||||
|
|
||||||
from dcerpc import MSRPCRequestHeader, MSRPCRespHeader
|
from dcerpc import MSRPCRequestHeader, MSRPCRespHeader
|
||||||
import kmsBase
|
import kmsBase
|
||||||
import rpcBase
|
import rpcBase
|
||||||
from formatText import justify, shell_message, byterize
|
from formatText import justify, shell_message, byterize
|
||||||
|
|
||||||
|
|
||||||
class handler(rpcBase.rpcBase):
|
class handler(rpcBase.rpcBase):
|
||||||
def parseRequest(self):
|
def parseRequest(self):
|
||||||
request = MSRPCRequestHeader(self.data)
|
request = MSRPCRequestHeader(self.data)
|
||||||
|
|
||||||
shell_message(nshell = 14)
|
shell_message(nshell = 14)
|
||||||
request = byterize(request)
|
request = byterize(request)
|
||||||
logging.debug("RPC Message Request Bytes: \n%s\n" % justify(binascii.b2a_hex(self.data).decode('utf-8')))
|
logging.debug("RPC Message Request Bytes: \n%s\n" % justify(binascii.b2a_hex(self.data).decode('utf-8')))
|
||||||
@ -22,9 +18,7 @@ class handler(rpcBase.rpcBase):
|
|||||||
|
|
||||||
return request
|
return request
|
||||||
|
|
||||||
def generateResponse(self):
|
def generateResponse(self, request):
|
||||||
request = self.requestData
|
|
||||||
|
|
||||||
responseData = kmsBase.generateKmsResponseData(request['pduData'], self.config)
|
responseData = kmsBase.generateKmsResponseData(request['pduData'], self.config)
|
||||||
envelopeLength = len(responseData)
|
envelopeLength = len(responseData)
|
||||||
|
|
||||||
@ -45,7 +39,7 @@ class handler(rpcBase.rpcBase):
|
|||||||
shell_message(nshell = 17)
|
shell_message(nshell = 17)
|
||||||
response = byterize(response)
|
response = byterize(response)
|
||||||
logging.debug("RPC Message Response: \n%s\n" % justify(response.dump(print_to_stdout = False)))
|
logging.debug("RPC Message Response: \n%s\n" % justify(response.dump(print_to_stdout = False)))
|
||||||
logging.debug("RPC Message Response Bytes: \n%s\n" % justify(binascii.b2a_hex(str(response).encode('latin-1')).decode('utf-8'))) #*2to3*
|
logging.debug("RPC Message Response Bytes: \n%s\n" % justify(binascii.b2a_hex(str(response).encode('latin-1')).decode('utf-8')))
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@ -64,7 +58,7 @@ class handler(rpcBase.rpcBase):
|
|||||||
shell_message(nshell = 11)
|
shell_message(nshell = 11)
|
||||||
request = byterize(request)
|
request = byterize(request)
|
||||||
logging.debug("RPC Message Request: \n%s\n" % justify(request.dump(print_to_stdout = False)))
|
logging.debug("RPC Message Request: \n%s\n" % justify(request.dump(print_to_stdout = False)))
|
||||||
logging.debug("RPC Message Request Bytes: \n%s\n" % justify(binascii.b2a_hex(str(request).encode('latin-1')).decode('utf-8'))) #*2to3*
|
logging.debug("RPC Message Request Bytes: \n%s\n" % justify(binascii.b2a_hex(str(request).encode('latin-1')).decode('utf-8')))
|
||||||
|
|
||||||
return request
|
return request
|
||||||
|
|
||||||
|
@ -2,15 +2,14 @@
|
|||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import binascii
|
import binascii
|
||||||
import hashlib
|
|
||||||
import random
|
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
import socket
|
import socket
|
||||||
import socketserver
|
import socketserver
|
||||||
import struct
|
|
||||||
import uuid
|
import uuid
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
import errno
|
||||||
|
|
||||||
import rpcBind, rpcRequest
|
import rpcBind, rpcRequest
|
||||||
from dcerpc import MSRPCHeader
|
from dcerpc import MSRPCHeader
|
||||||
@ -19,8 +18,30 @@ from formatText import shell_message
|
|||||||
|
|
||||||
config = {}
|
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():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description='py3-kms: KMS Server Emulator written in Python3', epilog="version: py3-kms_2018-03-01")
|
parser = argparse.ArgumentParser(description='py3-kms: KMS Server Emulator written in Python3', epilog="version: py3-kms_2018-11-15")
|
||||||
parser.add_argument("ip", nargs="?", action="store", default="0.0.0.0",
|
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)
|
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,
|
parser.add_argument("port", nargs="?", action="store", default=1688,
|
||||||
@ -28,10 +49,10 @@ def main():
|
|||||||
parser.add_argument("-e", "--epid", dest="epid", default=None,
|
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)
|
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,
|
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,\
|
help='Use this flag to manually specify an LCID for use with randomly generated ePIDs. Default is 1033 (en-us)', type=int)
|
||||||
this setting is ignored.', type=int)
|
|
||||||
parser.add_argument("-c", "--client-count", dest="CurrentClientCount", default=26,
|
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,
|
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)
|
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,
|
parser.add_argument("-r", "--renewal-interval", dest="VLRenewalInterval", default=1440 * 7,
|
||||||
@ -47,6 +68,9 @@ 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)
|
help='Use this flag to set an output Logfile. The default is \"pykms_server.log\".', type=str)
|
||||||
|
|
||||||
config.update(vars(parser.parse_args()))
|
config.update(vars(parser.parse_args()))
|
||||||
|
|
||||||
|
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.
|
# Random HWID.
|
||||||
if config['hwid'] == "random":
|
if config['hwid'] == "random":
|
||||||
randomhwid = uuid.uuid4().hex
|
randomhwid = uuid.uuid4().hex
|
||||||
@ -56,24 +80,40 @@ The default is \"364F463A8863D35F\" or type \"random\" to auto generate the HWID
|
|||||||
try:
|
try:
|
||||||
config['hwid'] = binascii.a2b_hex(re.sub(r'[^0-9a-fA-F]', '', config['hwid'].strip('0x')))
|
config['hwid'] = binascii.a2b_hex(re.sub(r'[^0-9a-fA-F]', '', config['hwid'].strip('0x')))
|
||||||
if len(binascii.b2a_hex(config['hwid'])) < 16:
|
if len(binascii.b2a_hex(config['hwid'])) < 16:
|
||||||
logging.error("HWID \"%s\" is invalid. Hex string is too short." % binascii.b2a_hex(config['hwid']).decode('utf-8').upper())
|
logging.error("Error: HWID \"%s\" is invalid. Hex string is too short." % binascii.b2a_hex(config['hwid']).decode('utf-8').upper())
|
||||||
return
|
return
|
||||||
elif len(binascii.b2a_hex(config['hwid'])) > 16:
|
elif len(binascii.b2a_hex(config['hwid'])) > 16:
|
||||||
logging.error("HWID \"%s\" is invalid. Hex string is too long." % binascii.b2a_hex(config['hwid']).decode('utf-8').upper())
|
logging.error("Error: HWID \"%s\" is invalid. Hex string is too long." % binascii.b2a_hex(config['hwid']).decode('utf-8').upper())
|
||||||
return
|
return
|
||||||
except TypeError:
|
except TypeError:
|
||||||
logging.error("HWID \"%s\" is invalid. Odd-length hex string." % binascii.b2a_hex(config['hwid']).decode('utf-8').upper())
|
logging.error("Error: HWID \"%s\" is invalid. Odd-length hex string." % binascii.b2a_hex(config['hwid']).decode('utf-8').upper())
|
||||||
return
|
return
|
||||||
|
|
||||||
logging.basicConfig(level=config['loglevel'], format='%(asctime)s %(levelname)-8s %(message)s',
|
# Check LCID.
|
||||||
datefmt='%a, %d %b %Y %H:%M:%S', filename=config['logfile'], filemode='w')
|
# 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:
|
try:
|
||||||
import sqlite3
|
import sqlite3
|
||||||
config['dbSupport'] = True
|
|
||||||
except:
|
except:
|
||||||
logging.warning("Module \"sqlite3\" is not installed, database support disabled.")
|
logging.warning("Module \"sqlite3\" is not installed, database support disabled.")
|
||||||
config['dbSupport'] = False
|
config['dbSupport'] = False
|
||||||
|
else:
|
||||||
|
config['dbSupport'] = True
|
||||||
|
|
||||||
server = socketserver.TCPServer((config['ip'], config['port']), kmsServer)
|
server = socketserver.TCPServer((config['ip'], config['port']), kmsServer)
|
||||||
server.timeout = 5
|
server.timeout = 5
|
||||||
logging.info("TCP server listening at %s on port %d." % (config['ip'], config['port']))
|
logging.info("TCP server listening at %s on port %d." % (config['ip'], config['port']))
|
||||||
@ -83,16 +123,15 @@ The default is \"364F463A8863D35F\" or type \"random\" to auto generate the HWID
|
|||||||
|
|
||||||
class kmsServer(socketserver.BaseRequestHandler):
|
class kmsServer(socketserver.BaseRequestHandler):
|
||||||
def setup(self):
|
def setup(self):
|
||||||
self.connection = self.request
|
|
||||||
logging.info("Connection accepted: %s:%d" % (self.client_address[0], self.client_address[1]))
|
logging.info("Connection accepted: %s:%d" % (self.client_address[0], self.client_address[1]))
|
||||||
|
|
||||||
def handle(self):
|
def handle(self):
|
||||||
while True:
|
while True:
|
||||||
# self.request is the TCP socket connected to the client
|
# self.request is the TCP socket connected to the client
|
||||||
try:
|
try:
|
||||||
self.data = self.connection.recv(1024)
|
self.data = self.request.recv(1024)
|
||||||
except socket.error as e: #*2to3*
|
except socket.error as e:
|
||||||
if e[0] == 104:
|
if e.errno == errno.ECONNRESET:
|
||||||
logging.error("Connection reset by peer.")
|
logging.error("Connection reset by peer.")
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
@ -100,8 +139,8 @@ class kmsServer(socketserver.BaseRequestHandler):
|
|||||||
if self.data == '' or not self.data:
|
if self.data == '' or not self.data:
|
||||||
logging.warning("No data received !")
|
logging.warning("No data received !")
|
||||||
break
|
break
|
||||||
# self.data = bytearray(self.data.strip())
|
# data = bytearray(self.data.strip())
|
||||||
# logging.debug(binascii.b2a_hex(str(self.data)))
|
# logging.debug(binascii.b2a_hex(str(data)))
|
||||||
packetType = MSRPCHeader(self.data)['type']
|
packetType = MSRPCHeader(self.data)['type']
|
||||||
if packetType == rpcBase.packetType['bindReq']:
|
if packetType == rpcBase.packetType['bindReq']:
|
||||||
logging.info("RPC bind request received.")
|
logging.info("RPC bind request received.")
|
||||||
@ -112,12 +151,11 @@ class kmsServer(socketserver.BaseRequestHandler):
|
|||||||
shell_message(nshell = [-2, 13])
|
shell_message(nshell = [-2, 13])
|
||||||
handler = rpcRequest.handler(self.data, config)
|
handler = rpcRequest.handler(self.data, config)
|
||||||
else:
|
else:
|
||||||
logging.error("Invalid RPC request type ", packetType)
|
logging.error("Error: Invalid RPC request type ", packetType)
|
||||||
break
|
break
|
||||||
|
|
||||||
handler.populate()
|
res = str(handler.populate()).encode('latin-1')
|
||||||
res = str(handler.getResponse()).encode('latin-1') #*2to3*
|
self.request.send(res)
|
||||||
self.connection.send(res)
|
|
||||||
|
|
||||||
if packetType == rpcBase.packetType['bindReq']:
|
if packetType == rpcBase.packetType['bindReq']:
|
||||||
logging.info("RPC bind acknowledged.")
|
logging.info("RPC bind acknowledged.")
|
||||||
@ -128,7 +166,7 @@ class kmsServer(socketserver.BaseRequestHandler):
|
|||||||
break
|
break
|
||||||
|
|
||||||
def finish(self):
|
def finish(self):
|
||||||
self.connection.close()
|
self.request.close()
|
||||||
logging.info("Connection closed: %s:%d" % (self.client_address[0], self.client_address[1]))
|
logging.info("Connection closed: %s:%d" % (self.client_address[0], self.client_address[1]))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
# of the Apache Software License. See the accompanying LICENSE file
|
# of the Apache Software License. See the accompanying LICENSE file
|
||||||
# for more information.
|
# for more information.
|
||||||
#
|
#
|
||||||
""" Version of https://github.com/CoreSecurity/impacket/blob/python3/impacket/structure.py
|
"""
|
||||||
|
Stripped down version of: https://github.com/CoreSecurity/impacket/blob/python3/impacket/structure.py
|
||||||
with modifications in the function dump(...).
|
with modifications in the function dump(...).
|
||||||
© Copyright 2018 Matteo ℱan <SystemRage@protonmail.com>
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from struct import pack, unpack, calcsize
|
from struct import pack, unpack, calcsize
|
||||||
@ -34,7 +34,6 @@ else:
|
|||||||
else:
|
else:
|
||||||
return x
|
return x
|
||||||
|
|
||||||
|
|
||||||
class Structure:
|
class Structure:
|
||||||
""" sublcasses can define commonHdr and/or structure.
|
""" sublcasses can define commonHdr and/or structure.
|
||||||
each of them is an tuple of either two: (fieldName, format) or three: (fieldName, ':', class) fields.
|
each of them is an tuple of either two: (fieldName, format) or three: (fieldName, ':', class) fields.
|
||||||
@ -111,18 +110,6 @@ class Structure:
|
|||||||
else:
|
else:
|
||||||
self.data = None
|
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):
|
def packField(self, fieldName, format = None):
|
||||||
if self.debug:
|
if self.debug:
|
||||||
print("packField( %s | %s )" % (fieldName, format))
|
print("packField( %s | %s )" % (fieldName, format))
|
||||||
@ -579,25 +566,7 @@ class Structure:
|
|||||||
return field[0]
|
return field[0]
|
||||||
return None
|
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 b''
|
|
||||||
if format in ['z',':','u']: return ''
|
|
||||||
if format == 'w': return b'\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):
|
def dump(self, msg = None, indent = 0, print_to_stdout = True):
|
||||||
|
|
||||||
if msg is None:
|
if msg is None:
|
||||||
msg = self.__class__.__name__
|
msg = self.__class__.__name__
|
||||||
ind = ' '*indent
|
ind = ' '*indent
|
||||||
|
Loading…
Reference in New Issue
Block a user