A hardware ID, also known as HWID or Windows device ID, serves as a unique identifier for hardware components on your system, allowing Windows and other software to distinguish between devices. This ID helps with tasks like licensing, device recognition, and preventing software piracy by tying certain software licenses to specific hardware configurations.
By using MAS we can effectively activate Windows using the HWID method.
How does HWID activation works?
During the official upgrade process from Windows 7 to Windows 10, if your Windows 7 installation was activated, Microsoft granted a free digital license for Windows 10. As part of the upgrade, a file called gatherosstate.exe (included in the Windows 10/11 ISO) runs in the background to verify the license status of the current installation. If it confirms that the system is activated, it creates a valid GenuineTicket.xml, which is sent to Microsoft to authorize a digital license for Windows 10.
This process can potentially be manipulated. By tricking gatherosstate.exe into believing that all conditions for ticket generation are met, it may produce a valid ticket, which can then be used to obtain a legitimate digital license.
How to convince gatherosstate.exe that Windows is activated?
HWID – New Recommended Method
This method is still working, since 3 Oct 2023 - present
When Microsoft stopped the free upgrade, it started requiring a genuine valid key in the ticket to authorize a digital license. In the new method, we use only the Installation ID of a genuine, valid key. This gets accepted by the server and allows us to get a digital license for free. Check the manual activation process in below section to know how to make working universal tickets.
HWID – Old Legacy Method
This method is no longer working, since Summer of 2018 - Sep 26 2023
There are two methods for it.
- Place a custom slc.dll file beside gatherosstate.exe:
gatherosstate.exe uses the system’sC:\Windows\System32\slc.dll
file to gather the system’s info. If we place a custom slc.dll file beside gatherosstate.exe, it can send rubbish data to it, then it will simply accept it and generate a valid ticket. - Modify the gatherosstate.exe file directly so that it doesn’t check the system’s activation status at all and create a valid ticket.
You can find the workings of this old method here: MAS-Legacy-Methods.
How did Microsoft patch this?
Microsoft made server-side changes to their licensing servers to block the free upgrade, and with that server-side change, this method stopped working. To be clear, only new activation requests coming from new hardware were blocked, already established digital licenses with this method are fine.
Can Microsoft block the new requests or revoke already established digital licenses?
Revoking the licenses would be too extreme and will face many complications and create a risk of voiding valid licenses. However, they can very easily block the new activation requests for new hardware coming from the methods mentioned here.
Supported Products
Windows 10/11 Product Names | EditionID | Generic Retail/OEM/MAK Key |
---|---|---|
Education | Education | YNMGQ-8RYV3-4PGQ3-C8XTP-7CFBY |
Education N | EducationN | 84NGF-MHBT6-FXBX8-QWJK7-DRR8H |
Enterprise | Enterprise | XGVPP-NMH47-7TTHJ-W3FW7-8HV2C |
Enterprise N | EnterpriseN | 3V6Q6-NQXCX-V8YXR-9QCYV-QPFCT |
Enterprise LTSB 2015 | EnterpriseS | FWN7H-PF93Q-4GGP8-M8RF3-MDWWW |
Enterprise LTSB 2016 | EnterpriseS | NK96Y-D9CD8-W44CQ-R8YTK-DYJWX |
Enterprise LTSC 2019 | EnterpriseS | 43TBQ-NH92J-XKTM7-KT3KK-P39PB |
Enterprise N LTSB 2015 | EnterpriseSN | NTX6B-BRYC2-K6786-F6MVQ-M7V2X |
Enterprise N LTSB 2016 | EnterpriseSN | 2DBW3-N2PJG-MVHW3-G7TDK-9HKR4 |
Home | Core | YTMG3-N6DKC-DKB77-7M9GH-8HVX7 |
Home N | CoreN | 4CPRK-NM3K3-X6XXQ-RXX86-WXCHW |
Home China | CoreCountrySpecific | N2434-X9D7W-8PF6X-8DV9T-8TYMD |
Home Single Language | CoreSingleLanguage | BT79Q-G7N6G-PGBYW-4YWX6-6F4BT |
IoT Enterprise | IoTEnterprise | XQQYW-NFFMW-XJPBH-K8732-CKFFD |
IoT Enterprise Subscription | IoTEnterpriseK | P8Q7T-WNK7X-PMFXY-VXHBG-RRK69 |
IoT Enterprise LTSC 2021 | IoTEnterpriseS | QPM6N-7J2WJ-P88HH-P3YRH-YY74H |
IoT Enterprise LTSC 2024 | IoTEnterpriseS | CGK42-GYN6Y-VD22B-BX98W-J8JXD |
IoT Enterprise LTSC Subscription 2024 | IoTEnterpriseSK | N979K-XWD77-YW3GB-HBGH6-D32MH |
Pro | Professional | VK7JG-NPHTM-C97JM-9MPGT-3V66T |
Pro N | ProfessionalN | 2B87N-8KFHP-DKV6R-Y2C8J-PKCKT |
Pro Education | ProfessionalEducation | 8PTT6-RNW4C-6V7J2-C2D3X-MHBPB |
Pro Education N | ProfessionalEducationN | GJTYN-HDMQY-FRR76-HVGC7-QPF8P |
Pro for Workstations | ProfessionalWorkstation | DXG7C-N36C4-C4HTG-X4T3X-2YV77 |
Pro N for Workstations | ProfessionalWorkstationN | WYPNQ-8C467-V2W6J-TX4WX-WT2RQ |
S | Cloud | V3WVW-N2PV2-CGWC3-34QGF-VMJ2C |
S N | CloudN | NH9J3-68WK7-6FB93-4K3DF-DJ4F6 |
SE | CloudEdition | KY7PN-VR6RX-83W6Y-6DDYQ-T6R4W |
SE N | CloudEditionN | K9VKN-3BGWV-Y624W-MCRMQ-BHDCD |
Team | PPIPro | XKCNC-J26Q9-KFHD2-FKTHY-KD72Y |
Info regarding supported products
- Systems in all architectures (x86, x64 and arm64) are supported.
- Any Evaluation version of Windows (i.e. ‘EVAL’ LTSB/C) cannot be activated.
- IoTEnterpriseS (LTSC) 2021 key will be used to activate the unsupported EnterpriseS (LTSC) 2021 edition.
- Windows Server does not support HWID activation.
- ServerRdsh edition officially does not support activation on non-azure systems.
How to remove HWID?
You cannot remove it, just like you cannot remove an official Windows digital license. Once a system is activated, this activation cannot be removed because the license is stored in the Microsoft servers and not in the user’s system. MS checks the hardware ID (HWID) and if a license is found in their database, the system will automatically activate.
If you still want to remove the activation for any XYZ reason, you can either use the change edition option in the extras section in MAS or get the KMS key from here and enter this in the Windows settings activation page.
Command line Switches
Manual Activation
This is for those who wants to perform manual activation. If you want a tool to do this for you, then check here.
We can perform the manual activation process in 2 ways.
1. From Ready-Made Ticket
- Make sure the internet is enabled.
- Open Windows PowerShell as administrator, and enter the following commands in the sequence in which they are given.
- Enter the Key (Replace
<key>
with the key from the above list) with the following command:slmgr /ipk <key>
- Download Universal tickets from here and extract the downloaded file.
- Now enter below code in PowerShell:
(Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\ProductOptions).OSProductPfn
- This command will you show you some text like
Microsoft.Windows.48.X19-98841_8wekyb3d8bbwe
- You need to find the exact same name ticket file in the folder which you have extracted earlier.
- Copy that ticket file and paste it in the following folder:
C:\ProgramData\Microsoft\Windows\ClipSVC\GenuineTicket
- Now run below command in PowerShell to apply the ticket:
clipup -v -o
- Activate Windows with the following command:
slmgr /ato
- Check Activation Status with the following command:
slmgr /xpr
- Done.
2. From Scratch
In this process, we will perform activation from scratch. This is based on the Universal ticket method. Here, we will create identical tickets that are used in the MAS HWID script and activate the system with them.
- Download the file from the official MS link and extract the .cab file.
https://download.microsoft.com/download/9/A/E/9AE69DD5-BA93-44E0-864E-180F5E700AB4/adk/Installers/14f4df8a2a7fc82a4f415cf6a341415d.cab - Find the file named
filf8377e82b29deadca67bc4858ed3fba9
(Size: 330 KB) and rename it togatherosstate.exe
- Make a folder named
Files
in the C drive,C:\Files
and copy thegatherosstate.exe
file into that folder. - Make sure that the internet is enabled.
- Open Windows PowerShell as administrator and enter the following commands in the sequence in which they are given.
- Enter the key (Replace
<key>
with the key from the above list) with the following command:slmgr /ipk <key>
- Copy the below code all at once and enter it in PowerShell to modify the
gatherosstate.exe
file. This code to modify the file is based on GamersOsState.
$bytes = [System.IO.File]::ReadAllBytes("C:\Files\gatherosstate.exe")
$bytes[320] = 0xf8
$bytes[321] = 0xfb
$bytes[322] = 0x05
$bytes[324] = 0x03
$bytes[13672] = 0x25
$bytes[13674] = 0x73
$bytes[13676] = 0x3b
$bytes[13678] = 0x00
$bytes[13680] = 0x00
$bytes[13682] = 0x00
$bytes[13684] = 0x00
$bytes[32748] = 0xe9
$bytes[32749] = 0x9e
$bytes[32750] = 0x00
$bytes[32751] = 0x00
$bytes[32752] = 0x00
$bytes[32894] = 0x8b
$bytes[32895] = 0x44
$bytes[32897] = 0x64
$bytes[32898] = 0x85
$bytes[32899] = 0xc0
$bytes[32900] = 0x0f
$bytes[32901] = 0x85
$bytes[32902] = 0x1c
$bytes[32903] = 0x02
$bytes[32904] = 0x00
$bytes[32906] = 0xe9
$bytes[32907] = 0x3c
$bytes[32908] = 0x01
$bytes[32909] = 0x00
$bytes[32910] = 0x00
$bytes[32911] = 0x85
$bytes[32912] = 0xdb
$bytes[32913] = 0x75
$bytes[32914] = 0xeb
$bytes[32915] = 0xe9
$bytes[32916] = 0x69
$bytes[32917] = 0xff
$bytes[32918] = 0xff
$bytes[32919] = 0xff
$bytes[33094] = 0xe9
$bytes[33095] = 0x80
$bytes[33096] = 0x00
$bytes[33097] = 0x00
$bytes[33098] = 0x00
$bytes[33449] = 0x64
$bytes[33576] = 0x8d
$bytes[33577] = 0x54
$bytes[33579] = 0x24
$bytes[33580] = 0xe9
$bytes[33581] = 0x55
$bytes[33582] = 0x01
$bytes[33583] = 0x00
$bytes[33584] = 0x00
$bytes[33978] = 0xc3
$bytes[34189] = 0x59
$bytes[34190] = 0xeb
$bytes[34191] = 0x28
$bytes[34238] = 0xe9
$bytes[34239] = 0x4f
$bytes[34240] = 0x00
$bytes[34241] = 0x00
$bytes[34242] = 0x00
$bytes[34346] = 0x24
$bytes[34376] = 0xeb
$bytes[34377] = 0x63
[System.IO.File]::WriteAllBytes("C:\Files\gatherosstatemodified.exe", $bytes)
- Now right click on the file
gatherosstatemodified.exe
, go to properties and set the compatibility mode to Windows XP SP3. - Now we need to generate the ticket, to do that, enter the below command
;
$value = (Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\ProductOptions).OSProductPfn
C:\Files\gatherosstatemodified.exe /c Pfn=$value`;PKeyIID=465145217131314304264339481117862266242033457260311819664735280
- A GenuineTicket.xml file should be created in the folder
C:\Files\
. Now, let’s apply it.clipup -v -o -altto C:\Files\
- Activate Windows with the following command:
slmgr /ato
- Check Activation Status with the following command:
slmgr /xpr
- Done.
Notes:
- If the system is already activated then, then the created ticket will be a Lockbox ticket. If not, it will be a Downlevel ticket.
- To make the exact ticket used in MAS HWID script, make sure system is already activated and fix the time with the below PowerShell command and then initiate the ticket generation process as per the steps mentioned above.
Set-TimeZone -Id "UTC"; $date=[datetime]"2022/10/11 12:00";while($true){set-date $date; start-sleep -milliseconds 10}
Setup Preactivate
Troubleshoot
For any issues regarding activating Windows via HWID, read our troubleshooting section.