User Tools

Site Tools


windows:get_the_windows_product_key:using_powershell

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
windows:get_the_windows_product_key:using_powershell [2022/06/14 09:28] peterwindows:get_the_windows_product_key:using_powershell [2022/06/14 09:48] (current) peter
Line 1: Line 1:
 ====== Windows - Get the Windows Product Key - Using Powershell ====== ====== Windows - Get the Windows Product Key - Using Powershell ======
  
-===== Find OEM Key =====+===== RunProdKey.bat =====
  
-Windows has a couple different places where you can find different product keys such as the OEM key from vendors such as Dell, Lenovo, etc; and the BackupProductKeyDefault in the registry.+This runs the powershell script **Get-ProductKey.ps1**.
  
-To find the OEM Key you can find your key using this powershell command. +<code bat
- +@ECHO OFF 
-<code powershell+Powershell.exe -executionpolicy remotesigned -File  ./Get-ProductKey.ps1
-wmic path SoftwareLicensingService get OA3xOriginalProductKey +
 </code> </code>
  
-or +<WRAP info> 
 +**NOTE:**  This sets the Powershell script bypass for running the powershell script. 
 +</WRAP>
  
-<code powershell> 
-powershell "(Get-WmiObject -query 'select * from SoftwareLicensingService').OA3xOriginalProductKey" 
-</code> 
  
 ---- ----
  
-===== Find the backup Windows Key in the registry =====+===== Get-ProductKey.ps1 =====
  
-To find the backup Windows Key in the registry it is located using the regedit path below.+<code vb> 
 +start-process -FilePath "CDKey.vbs" -Wait -Passthru  
 +$SLS = wmic path SoftwareLicensingService get OA3xOriginalProductKey 
 +$RLS = Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform' -Name BackupProductKeyDefault 
 +$SLSKey = $SLS.Split(" ",[System.StringSplitOptions]::RemoveEmptyEntries) 
 +$DPID = Get-ItemPropertyValue 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey2' -Name DigitalProductId 
 +$EditionID = Get-ItemPropertyValue 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey2' -Name EditionId
  
-<code> +function ConvertTo-ProductKey { 
-HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform BackupProductKeyDefault + param ( 
-</code>+ [parameter(Mandatory = $True, Position = 0)] 
 + $Registry, 
 + [parameter()] 
 + [Switch]$x64 
 +  ) 
 + begin { 
 + $map = "BCDFGHJKMPQRTVWXY2346789" 
 +
 + process { 
 + $ProductKey = "" 
 +  
 + $prodkey = $Registry[0x34 .. 0x42] 
 +  
 + for ($i = 24; $i -ge 0; $i--) { 
 + $r = 0 
 + for ($j = 14; $j -ge 0; $j--) { 
 + $r = ($r * 256) -bxor $prodkey[$j] 
 + $prodkey[$j] = [math]::Floor([double]($r/24)) 
 + $r = $r % 24 
 +    } 
 +    $ProductKey = $map[$r] + $ProductKey 
 +    if (($i % 5) -eq 0 -and $i -ne 0) { 
 +    $ProductKey = "-" + $ProductKey 
 +    } 
 +    } 
 +    $ProductKey 
 +    } 
 +}
  
-----+$x = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -name DigitalProductId 
 +key = ConvertTo-ProductKey $x.DigitalProductId
  
-===== Find and save the CD Key =====+$prodKey "Windows Backup Product Key Default: $RLS `nOEM Software Licensing Service Key: $SLSKey `nDigital Product ID Windows Key: $key" 
 + 
 +Add-Content .\ProductKey.txt===== Get-ProductKey.ps1 =====
  
 <code vb> <code vb>
-Option Explicit +    start-process -FilePath "CDKey.vbs-Wait -Passthru  
-Dim objshell,path,DigitalID, Result +    $SLS = wmic path SoftwareLicensingService get OA3xOriginalProductKey 
-Set objshell = CreateObject("WScript.Shell") +    $RLS Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform-Name BackupProductKeyDefault 
-'Set registry key path +    $SLSKey $SLS.Split(" ",[System.StringSplitOptions]::RemoveEmptyEntries
-Path "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\+    $DPID Get-ItemPropertyValue 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey2-Name DigitalProductId 
-'Registry key value +    $EditionID Get-ItemPropertyValue 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey2' -Name EditionId
-DigitalID objshell.RegRead(Path & "DigitalProductId"+
-Dim ProductName,ProductID,ProductKey,ProductData +
-'Get ProductName, ProductID, ProductKey +
-ProductName = "Product Name: " & objshell.RegRead(Path & "ProductName"+
-ProductID = "Product ID" & objshell.RegRead(Path & "ProductID"+
-ProductKey = "Installed Key" & ConvertToKey(DigitalID+
-ProductData ProductName & vbNewLine & ProductID & vbNewLine & ProductKey +
-'Show messbox if save to a file +
-If vbYes = MsgBox(ProductData & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "BackUp Windows Key Information") then +
-Save ProductData +
-End If +
-'Convert binary to chars +
-Function ConvertToKey(Key) +
-Const KeyOffset 52 +
-Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert +
-'Check if OS is Windows +
-isWin8 = (Key(66) 6) And 1 +
-Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4) +
-i = 24 +
-Maps = "BCDFGHJKMPQRTVWXY2346789" +
-Do +
-Current= 0 +
-j = 14 +
-Do +
-Current = Current* 256 +
-Current = Key(j + KeyOffset) + Current +
-Key(j + KeyOffset) = (Current 24) +
-Current=Current Mod 24 +
-j = j -+
-Loop While j >= 0 +
-i = i -1 +
-KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput +
-Last = Current +
-Loop While i >= 0+
  
-If (isWin8 1Then +    function ConvertTo-ProductKey { 
-keypart1 = Mid(KeyOutput2, Last+    param ( 
-insert = "N+    [parameter(Mandatory $True, Position = 0)] 
-KeyOutput Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0) +     $Registry, 
-If Last = 0 Then KeyOutput insert & KeyOutput +    [parameter()] 
-End If +     [Switch]$x64 
-ConvertToKey Mid(KeyOutput, 1, 5& "-" & Mid(KeyOutput, 6, 5& "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5"-" & Mid(KeyOutput, 21, 5) +    ) 
-End Function +    begin { 
-'Save data to a file +    $map = "BCDFGHJKMPQRTVWXY2346789
-Function Save(Data) +     } 
-Dim fso, fName, txt,objshell,UserName +    process { 
-Set objshell = CreateObject("wscript.shell") +    $ProductKey = "" 
-'Get current user name +     
-UserName objshell.ExpandEnvironmentStrings("%UserName%"+    $prodkey $Registry[0x34 .. 0x42] 
-'Create a text file on desktop +     
-fName = "C:\Users\" & UserName & "\Desktop\WindowsKeyInfo.txt" +    for ($i = 24; $i -ge 0; $i--{ 
-Set fso CreateObject("Scripting.FileSystemObject") +     $r = 0 
-Set txt = fso.CreateTextFile(fName) +    for ($j 14; $j -ge 0; $j--) { 
-txt.Writeline Data +     $r = ($r * 256) -bxor $prodkey[$j] 
-txt.Close +    $prodkey[$j] = [math]::Floor([double]($r/24)
-End Function+    $r = $r % 24 
 +    } 
 +    $ProductKey = $map[$r] + $ProductKey 
 +    if (($i % 5) -eq 0 -and $i -ne 0
 +    $ProductKey = "-" + $ProductKey 
 +     } 
 +     } 
 +     $ProductKey 
 +     } 
 +    } 
 + 
 +    $x Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -name DigitalProductId 
 +    $key = ConvertTo-ProductKey $x.DigitalProductId 
 + 
 +    $prodKey = "Windows Backup Product Key Default: $RLS `nOEM Software Licensing Service Key: $SLSKey `nDigital Product ID Windows Key: $key
 + 
 +    Add-Content .\ProductKey.txt $prodKey
 </code> </code>
  
 +----
 +
 + $prodKey
 +</code>
  
 ---- ----
  
 ===== CDKey.vbs ===== ===== CDKey.vbs =====
 +
 +This script is run from the **Get-ProductKey.ps1** powershell script. 
 +
 +The powershell script finds the keys such as the OEM Key and the registry BackupProductKeyDefault then appends it to the text file.
  
 <code vb> <code vb>
Line 163: Line 187:
 ---- ----
  
-===== Get-ProductKey.ps1 ===== 
- 
-<code vb> 
-    start-process -FilePath "CDKey.vbs" -Wait -Passthru  
-    $SLS = wmic path SoftwareLicensingService get OA3xOriginalProductKey 
-    $RLS = Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform' -Name BackupProductKeyDefault 
-    $SLSKey = $SLS.Split(" ",[System.StringSplitOptions]::RemoveEmptyEntries) 
-    $DPID = Get-ItemPropertyValue 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey2' -Name DigitalProductId 
-    $EditionID = Get-ItemPropertyValue 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DefaultProductKey2' -Name EditionId 
- 
-    function ConvertTo-ProductKey { 
-    param ( 
-    [parameter(Mandatory = $True, Position = 0)] 
-    $Registry, 
-    [parameter()] 
-    [Switch]$x64 
-    ) 
-    begin { 
-    $map = "BCDFGHJKMPQRTVWXY2346789" 
-    } 
-    process { 
-    $ProductKey = "" 
-     
-    $prodkey = $Registry[0x34 .. 0x42] 
-     
-    for ($i = 24; $i -ge 0; $i--) { 
-    $r = 0 
-    for ($j = 14; $j -ge 0; $j--) { 
-    $r = ($r * 256) -bxor $prodkey[$j] 
-    $prodkey[$j] = [math]::Floor([double]($r/24)) 
-    $r = $r % 24 
-    } 
-    $ProductKey = $map[$r] + $ProductKey 
-    if (($i % 5) -eq 0 -and $i -ne 0) { 
-    $ProductKey = "-" + $ProductKey 
-    } 
-    } 
-    $ProductKey 
-    } 
-    } 
- 
-    $x = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -name DigitalProductId 
-    $key = ConvertTo-ProductKey $x.DigitalProductId 
- 
-    $prodKey = "Windows Backup Product Key Default: $RLS `nOEM Software Licensing Service Key: $SLSKey `nDigital Product ID Windows Key: $key" 
- 
-    Add-Content .\ProductKey.txt $prodKey 
-</code> 
- 
----- 
- 
- 
-===== RunProdKey.bat ===== 
- 
-The powershell script is run from a bat file which sets the Powershell script bypass for running the powershell script. 
- 
-<code bat> 
-    @ECHO OFF 
-    Powershell.exe -executionpolicy remotesigned -File  ./Get-ProductKey.ps1 
-</code> 
- 
----- 
  
 ===== References ===== ===== References =====
windows/get_the_windows_product_key/using_powershell.1655198933.txt.gz · Last modified: 2022/06/14 09:28 by peter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki