Как да разберете ключа на Windows 8

В тази статия ще говорим за това как можете да разберете клавиша на Windows 8, с който системата се активира. Спомнете си, че в Windows 8, както и в предишните операционни системи от семейството на Microsoft, продуктовият ключ е последователност от 25 знака, разделена на 5 групи по 5 знака (XXXXX-XXXXX-XXXXX-XXXXX-XXXXX). Този ключ се използва за активиране на всички версии на Windows 8.

Когато активирате Windows 8, трябва да имате предвид следните точки:

  • Ключът за Windows 8 може да се използва само за активиране на изданието на Windows 8, за което е предназначен, а не за който и да е друг (т.е. използването на клавиша Windows 8 Pro няма да работи за активиране на Windows 8 home).
  • OEM ключът може да се използва за активиране на OEM копие на Windows 8 на същия компютър, на който първо е активиран, и на никой друг
  • Ключът на дребно Можете да активирате Windows 8 на всеки компютър, но само на един по един

При покупка на дребно версия на Windows 8, продуктовият ключ се предлага под формата на стикер, който може да бъде залепен към системния блок или лаптоп, ако закупите устройство с предварително инсталиран Windows 8,  OEM- ключът вече ще бъде залепен към кутията на устройството. Този стикер се нарича Сертификат за автентичност (COA).

Често обаче се случва по някаква „трагична причина” текстът на такъв лицензиран стикер да стане нечетлив (кафе разлято, разтрито на колене, току-що изгубено и т.н.). Как в този случай можете програмно да намерите ключа на Windows 8, така че да можете да го активирате по-късно при преинсталиране на системата? Освен това може да се наложи да проверите системата за лицензиране и съвпадението на ключа, инсталиран в системата, и ключа на стикера.

Ключът за активиране на Windows 8 се съхранява в системния регистър, но не в обикновен текст, а в криптиран (кодиращ) база 24). И по принцип тя може да бъде извлечена оттам, дешифрирана и копирана върху лист хартия. Ключовата информация се съхранява в ключа на системния регистър HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ DigitalProductId, трябва само да го извлечем и декриптираме.

По принцип активиран ключ може да бъде извлечен чрез WMI. Можете да направите това, без да използвате програми на трети страни, като използвате инструментите, които вече са налични в Windows 8: VBScrit и Powershell. По-долу са двата начина за определяне на ключа на Windows 8.

Вземете ключ за активиране на Windows 8 с помощта на VBScript

  1. Създайте нов текстов файл с име get_windows_8_key.vbs и го запишете на вашия работен плот
  2. Поставете следния код в него
    Задайте WshShell = CreateObject ("WScript.Shell") regKey = "HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \" DigitalProductId = WshShell.RegRead (regKey & "DigitalProductId") Win8ProductName = "Име на продукта на Windows:" Име на продукта на Windows: " (regKey & "ProductName") & vbNewLine Win8ProductID = "Идентификационен номер на продукта на Windows:" & WshShell.RegRead (regKey & "ProductID") & vbNewLine Win8ProductKey = ConvertToKey (DigitalProductId) strProductKey8 WinProductPame8 "WinProductPame8" WinProductPame8 "WinProductPame8" WinProductPame8 "WinProductPame8" WinProductPame8 "WinProductPame8" WinProductPame8 "WinProductPame8" WinProductPame8 "WinNroductPame8" WinProductPame8 "WinProductPame8 Win8ProductID & strProductKey MsgBox (Win8ProductKey) MsgBox (Win8ProductID) Функция ConvertToKey (regKey) Const KeyOffset = 52 isWin8 = (regKey (66) \ 6) И 1 regKey (66) = () и (regKey) 2) * 4) j = 24 Chars = "BCDFGHJKMPQRTVWXY2346789" Do Cur = 0 y = 14 Do Cur = Cur * 256 Cur = regKey (y + KeyOffset) + Cur regKey (y + KeyOffset) = (Cur \ 24) Cur = Cur Mod 24 y = y -1 Loop Докато y> = 0 j = j -1 winKeyOutput = Mid (Chars, Cur + 1, 1) & winKeyOutput Last = Cur Loop, докато j> = 0 Ако (е Win8 = 1) След това keypart1 = Mid (winKeyOutput, 2, Last) вмъкване = "N" winKeyOutput = Замяна (winKeyOutput, keypart1, keypart1 и вмъкване, 2, 1, 0) Ако последно = 0 Тогава winKeyOutput = вмъкване и winKeyOutput End Ако a = Mid (winKeyOutput, 1, 5) b = Mid (winKeyOutput, 6, 5) c = Mid (winKeyOutput, 11, 5) d = Mid (winKeyOutput, 16, 5) e = Mid (winKeyOutput, 21, 5) ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e End функция
  3. Щракнете двукратно върху файла, след което трябва да се появи прозорец с продуктовия ключ, показан в него. В нашия случай системата се активира от клавиша Windows 8 Release Preview.

Готовият vbs скрипт можете да изтеглите тук: get_windows_8_key_vbs.zip.

Как да разберете ключ за активиране на Windows 8 с помощта на Powershell

Можете също да намерите ключа на инсталирания Windows 8 с помощта на Powerhell.

  1. Създайте файл с разширението get_windows_8_key.ps1 и копирайте следния код в него:
    функция Get-WindowsKey ## вземете продуктовия ключ на Windows от всеки компютър-парам ($ target = ".") $ hklm = 2147483650 $ regPath = "Софтуер \ Microsoft \ Windows NT \ CurrentVersion" $ regValue = "DigitalProductId" Foreach ($ target в $ target) $ productKey = $ null $ win32os = $ null $ wmi = [WMIClass] "\\ $ target \ root \ default: stdRegProv" $ data = $ wmi.GetBinaryValue ($ hklm, $ regPath, $ regValue ) $ binArray = ($ data.uValue) [52 ... 66] $ charsArray = "B", "C", "D", "F", "G", "H", "J", "K", "M", "P", "Q", "R", "T", "V", "W", "X", "Y", "2", "3", "4", "6 "," 7 "," 8 "," 9 "## дешифрират base24 кодирани двоични данни за ($ i = 24; $ i -ge 0; $ i--) $ k = 0 For ($ j = 14; $ j -ge 0; $ j--) $ k = $ k * 256 -bxor $ binArray [$ j] $ binArray [$ j] = [math] :: прекъсване ($ k / 24) $ k = $ k% 24 $ productKey = $ charsArray [$ k] + $ productKey If (($ i% 5 -eq 0) -и ($ i -ne 0)) $ productKey = "-" + $ productKey $ win32os = Get-WmiObject Win32_OperatingSystem -компютър $ target $ obj = Нов обект $ obj | Компютър за бележки за добавка-член-стойност $ target $ obj | Надпис за собственост на бележки за добавка-стойност-стойност $ win32os.Caption $ obj | Свойство на бележника за член-член CSDVersion-стойност $ win32os.CSDVersion $ obj | Add-Member Noteproperty OSArch-стойност $ win32os.OSArchitecture $ obj | Add-Member Noteproperty BuildNumber-стойност $ win32os.BuildNumber $ obj | Добавена бележка за собственост RegisteredTo-стойност $ win32os.RegisteredUser $ obj | Свойство на бележка за добавка-член ProductID-стойност $ win32os.SerialNumber $ obj | Бележка за собственост на Add-Member ProductKey - стойност $ productkey $ obj
  2. Стартирайте командния ред с права на администратор и изпълнете командата на властта в него, за да отворите конзолата PoSh
  3. В прозореца, който се показва, трябва да активирате изпълнението на неподписани скриптове с командата:
    Set-ExecutionPolicy RemoteSigned
  4. Изпълнете команди
    Импорт-модул d: \ myfile.ps1; Get-WindowsKey
  5. В резултат ключът на инсталирания Windows ще се покаже в прозореца на Powershell
  6. Ако трябва да намерите ключове за активиране на отдалечени компютри, използвайте командите Get-WindowsKey "computer1", "serv-dc2", "romp-buh02"

Завършеният скрипт на powerhell е тук: get_windows_8_key_ps.zip

Друга версия на скрипта на Powershell от коментари от akaNeo

   
## Декларация за функцията за получаване на продуктов ключ на Windows ## Скриптът е проектиран от PowerShell версия 2.0 (приложим за всички версии на Windows) Функция Get-WindowsProduct ## Функцията връща инсталирания ключ на Windows от всяка машина в мрежата, плюс кратка информация за инсталираната версия. Безключовото обаждане включва достъп до хоста на парама ($ Targets = [System.Net.Dns] :: GetHostName ()) функция PIDDecoderFromRegistry ($ digitalProductId) New-Variable -Name base24 -Value 'BCDFGHJKMPQRTVWXY2346789' ## -Option символи, използвани в продуктовите ключове за Windows и Office New-Variable -Name decodeLength -Value 14 ## -Option Const ## Шифрована дължина на ключа New-Variable -Name decodeLength -Value 14 ## -Option Const ## Дължина на шифрования ключ продуктът в байтове (символите се съхраняват в nibbles) New-Variable -Name decodedKey -Value ([System.String] :: Empty) ## String, съдържащ дешифрирания ключ на продукта ## Проверка дали ключът на продукта съдържа „N“ (това е възможно за Windows 8 Office 15) $ съдържаN = ($ digitalProductId [$ decodeLength] / 8) -bAnd 1 ## ($ digitalProductId [$ decodeLength] -shr 3) -bAnd 1 ## PS 4.0 $ digitalProductId [$ decodeLength] = [System.Byte ] ($ digitalProductId [$ decodeLength] -bAnd [System.Convert] :: ToByte ('F7', 16)) ## 247 ## Самият процес на декриптиране за ($ i = $ decodeStringLength; $ i -ge 0; $ i--) $ digitMapIndex = 0 за ($ j = $ decodeLength; $ j -ge 0; $ j--) $ digitMapIndex = $ digitMapIndex * 256 -bXor $ digitalProductId [$ j] ## $ digitMapIndex - shl 8 -bXor $ digitalProductId [$ j] ## PS 4.0 $ digitalProductId [$ j] = [System.Math] :: Прекъсване ($ digitMapIndex / $ base24.Length) $ digitMapIndex = $ digitMapIndex% $ base24.Length $ decodedKey = $ decodedKey.Insert (0, $ base24 [$ digitMapIndex]) ## Изтриване на първия символ в ключа и поставяне на N в желаната позиция, ако ([System.Boolean] $ съдържаN) $ firstLetterIndex = 0 за ($ index = 0; $ index -lt $ decodeStringLength; $ index ++) if ($ decodedKey [0] -ne $ base24 [$ index]) продължи $ firstLetterIndex = $ прекъсване на индекс $ keyWithN = $ decodedKey $ keyWithN = $ keyWithN.Remove (0, 1) $ keyWithN = $ keyWithN.Substring (0, $ firstLetterIndex) + 'N' + $ keyWithN.Remove (0, $ firstLetterIndex) $ decodedKey = $ keyWithN;  $ returnValue = $ decodedKey ## Вмъкване на тире на всеки пет символа за ($ t = 20; $ t -ge 5; $ t - = 5) $ returnValue = $ returnValue.Insert ($ t, '-') return $ returnValue ## Main New-Variable -Name hklm -Value 2147483650 ## -Option Const New-Variable -Name regPath -Value 'Софтуер \ Microsoft \ Windows NT \ CurrentVersion' ## -Option Const New-Variable -Name regValue -Value 'DigitalProductId' ## -Опция Const Foreach ($ target в $ Targets) $ win32os = $ null $ wmi = [WMIClass] "\\ $ target \ root \ default: stdRegProv" $ binArray = $ wmi.GetBinaryValue ( $ hklm, $ regPath, $ regValue) .uValue [52 ... 66] $ win32os = Get-WmiObject -Class 'Win32_OperatingSystem' -ComputerName $ target $ product = New-Object -TypeName System.Object ## Constructor $ product | Add-Member -MemberType 'NoteProperty' -Име 'Computer' -Value $ target $ product | Add-Member -MemberType 'NoteProperty' -Name 'Caption' -Value $ win32os.Caption $ product | Add-Member -MemberType 'NoteProperty' -Име 'CSDVersion' -Value $ win32os.CSDVersion $ product | Add-Member -MemberType 'NoteProperty' -Име 'OSArch' -Value $ win32os.OSArchitecture $ product | Add-Member -MemberType 'NoteProperty' -Име 'BuildNumber' -Value $ win32os.BuildNumber $ продукт | Add-Member -MemberType 'NoteProperty' -Име 'RegisteredTo' -Value $ win32os.RegisteredUser $ product | Add-Member -MemberType 'NoteProperty' -Име 'ProductID' -Value $ win32os.SerialNumber $ product | Add-Member -MemberType 'NoteProperty' -Name 'ProductKey' -Value (PIDDecoderFromRegistry ($ binArray)) Изписване-изход $ product ## End Get-WindowsProduct