Hogyan lehet megtudni egy telepített MS Office aktiválási kulcsát

Microsoft Office telepítőkulcs a termék aktiválása után továbbra is tárolják a rendszerleíró adatbázisban. A termék védelme érdekében a termékkulcsot nem szabadon tárolják, hanem kódolással titkosítják Base64 a. Ez a kódolási módszer nem tartós, ezért egyszerű szkript segítségével kibontható (hasonló technikát vizsgáltunk a cikkben, amely leírja a Windows 8 telepítőkulcsának kibontását). Ebben a cikkben bemutatjuk, hogyan lehet beszerezni az MS Office már telepített példányának aktiválási kódját a PowerShell és a vbs parancsfájlok segítségével, külső gyártó segédprogramjainak használata nélkül..

Ezeket a szkripteket kényelmesen lehet használni, ha dokumentumokat vagy matricákat veszítünk a Microsoft Office telepítőkulcsaival.

Először fontolja meg a PowerShell kulcs visszakeresési szkriptet

  1. Hozzon létre új szövegfájlt (ugyanabban a notepad.exe fájlban)
  2. Másolja be a következő kódot:
    függvény Get-MSOfficeProductKey param ([karakterlánc []] $ computerName = ".") $ product = @ () $ hklm = 2147483650 $ path = "SZOFTVER \ Microsoft \ Office" foreach ($ számítógép a $ computerName fájlban) $ wmi = [WMIClass] "\\ $ számítógép \ root \ alapértelmezett: stdRegProv" $ subkeys1 = $ wmi.EnumKey ($ hklm, $ elérési út) foreach ($ subkey1 a $ subkeys1.snames-ben) $ subkeys2 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1") foreach ($ subkey2 a $ subkeys2.snames-ben) $ subkeys3 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1 \ $ subkey2") foreach ($ subkey3 in $ subkeys3 .snames) $ subkeys4 = $ wmi.EnumValues ​​($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3") foreach ($ subkey4 in $ subkeys4.snames) if ($ subkey4 -eq "digitalproductid") $ temp = "" | válassza a ComputerName, ProductName, ProductKey $ temp.ComputerName = $ computer $ productName = $ wmi.GetStringValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "productname") $ temp.ProductName = $ productName lehetőséget. sValue $ data = $ wmi.GetBinaryValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "digitalproductid") $ valueData = ($ data.uValue) [52 ... 66] # base24 kódolt bináris adatok dekódolása $ productKey = "" $ chars = "BCDFGHJKMPQRTVWXY2346789" for ($ i = 24; $ i-ge 0; $ i--) $ r = 0 for ($ j = 14; $ j -ge 0; $ j-) -) $ r = ($ r * 256) -bxor $ valueData [$ j] $ valueData [$ j] = [matematika] :: Csonkolás ($ r / 24) $ r = $ r% 24 $ productKey = $ karakterek [$ r] + $ productKey, ha (($ i% 5) -eq 0 -and $ i -ne 0) $ productKey = "-" + $ productKey $ temp.ProductKey = $ productKey $ product + = $ temp $ product 
  3. Mentse a fájlt .ps1 kiterjesztéssel
  4. Az MS Office verziójától függően: ha az Office 32 bites verzióját használja, futtassa rendszergazdaként a 32 bites PowerShell konzolt. 64 bites Office használata esetén indítsa el a 64 bites PowerShell konzolt.tippek. Az Office 2007 és az újabb verziók csak 32 bitesek. Office 2010, 2013 és 2016 - létezik mind a 32, mind a 64 bit. Az Office 64 bites verziója nem telepíthető 32 bites Windows rendszerre.
  5. Példánkban az Office 32 bites verziója van telepítve a 64 bites Windows rendszerre, így elindítottuk a Windows PoweShell (x86) szoftvert..
  6. Az alá nem írt szkriptek helyi indításának engedélyezése:Set-ExecutionPolicy RemoteSignedAmikor a rendszer kéri, nyomja meg a Y-t és az Enter-t.
  7. Az előzőleg mentett szkriptet importáljuk a paranccsal, és hívjuk be a függvényt:C modul importálása: \ Tools \ getmsofficekey.ps1; Get-MSOfficeProductKey
  8. A képernyőn egy táblának kell megjelennie, amely információkat tartalmaz az Office összes telepített verziójáról. A ProductName mező tartalmazza a telepített termék nevét, a ProductKey mező pedig az aktiválási kulcsot.

A Ready Powershell szkript letölthető itt: getmsofficekey-posh.zip

Hasonló szkript a ProducId és az MS Office kulcsok beolvasására a Vbscript-en

Const HKLM = & H80000002 Computer = "." Set objWMIService = GetObject ("winmgmts: \\" & Computer & "\ root \ cimv2") Állítsa Obj = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem") dim InsDate minden elemhez az Obj InsDate = item.InstallDate 'Gather operációs rendszerben. Rendszerinformációk Caption = Item.Caption OSArchitecture = Item.OSArchitecture CSDVersion = Item.CSDVersion Version = Item.Version Next dim NewDate NewDate = mid (InsDate, 9,2) & ":" & mid (InsDate, 11,2) & " : "& mid (InsDate, 13,2) NewDate = NewDate &" "& mid (InsDate, 7,2) &" / "& mid (InsDate, 5,2) &" / "& mid (InsDate, 1, 4) wscript.echo 'vbCrLf & "Irodai kulcsok" és vbCrLf QueryOfficeProductKeys () Funkció DecodeProductKey (arrKey, intKeyOffset) Ha nincs IsArray (arrKey), akkor lépjen ki az intIsWin8 = BitShiftRight (arrKey) és az 1 intKeyOffset + 14) = arrKey (intKeyOffset + 14) és 247 vagy BitShiftLeft (intIsWin8 és 2,2) i = 24 strChars = "BCDFGHJKMPQRTVWXY2346789" strKeyOutput = "" Miközben i> -1 intCur = 0 intX = 14 míg intX intCur = BitShiftLeft (i ntCur, 8) intCur = arrKey (intX + intKeyOffset) + intCur arrKey (intX + intKeyOffset) = Int (intCur / 24) intCur = intCur Mod 24 intX = intX - 1 Wend i = i - 1 strKeyOutput = Mid (strChars, intCur + 1,1) & strKeyOutput intLast = intCur Wend Ha intIsWin8 = 1 Akkor strKeyOutput = Közepes (strKeyOutput, 2, intLast) & "N" és jobbra (strKeyOutput, Len (strKeyOutput) - (intLast + 1)) Vége, ha strKeyGUIDOutput = Közepes (strKeyOutput, 1.5) & "-" & Mid (strKeyOutput, 6.5) & "- & Mid (strKeyOutput, 11.5) &" - ​​"& Mid (strKeyOutput, 16.5) &" - "& Középső (strKeyOutput, 21,5) DecodeProductKey = strKeyGUIDOutput Vége Funkció Funkció RegReadBinary (strRegPath, strRegValue) Set objReg = GetObject (" winmgmts: impersonationLevel = megszemélyesítés!! \\. HKLM, strRegPath, strRegValue, arrRegBinaryData RegReadBinary = arrRegBinaryData beállítása objReg = Nincs vége Vége Funkció BitShiftLeft (intValue, intShift) BitShiftLeft = intValue * 2 ^ intShift End FunctionShift BitShiftRight ftRight = Int (intValue / (2 ^ intShift)) Vége Funkció Funkció QueryOfficeProductKeys () strBaseKey = "SZOFTVER \" strOfficeKey = strBaseKey & "Microsoft \ Office" Set objReg = GetObject ("winmgmts: impersonationLevel =! \ root \ default: StdRegProv ") objReg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Ha IsArray (arrOfficeVersionSubKeys), akkor minden strOfficeVersionKey A arrOfficeVersionSubKeys Select Case strOfficeVersionKey Case" 11,0 "CheckOfficeKey strOfficeKey &" \ 11.0 \ Regisztráció”, 52, intProductCount "12.0. Eset" CheckOfficeKey strOfficeKey & "\ 12.0 \ regisztráció", 52, intProductCount Case "14.0" CheckOfficeKey strOfficeKey & "\ 14.0 \ Registration", 808, intProductCount "15.0" CheckOfficeKey strOfficeKey & "\ 15.0 \ Registration", 808, 808, 808, 808, 808, 808, 808, 808, 808 intProductCount End Válassza a Következő vég elemet, ha strBaseKey = "SOFTWARE \ Wow6432Node \" strOfficeKey = strBaseKey & "Microsoft \ Office" Set objReg = GetObject ("winmgmts: impersonationLevel = megszemélyesítés! \\. \ root \ alapértelmezett: StdRegProv" Reg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Ha IsArray (arrOfficeVersionSubKeys), akkor minden strOfficeVersionKey számára az arrOfficeVersionSeyKeyKeyKeyKeyKeyKeyIkey 0 \ 12.0 \ Registration ", 52, intProductCount Case" 14.0 "CheckOfficeKey strOfficeKey &" \ 14.0 \ Registration ", 808, intProductCount Case" 15.0 "CheckOfficeKey strOfficeKey &" \ 15.0 \ Registration ", 808, intProductCount End Select Next End if Function Function Function „Office Product Key Sub CheckOfficeKey (strRegPath, intKeyOffset, intProductCount) Set objReg = GetObject ( "winmgmts: impersonationLevel = impersonate \\ \ root \ default:!. StdRegProv") objReg.EnumKey HKLM, strRegPath, arrOfficeRegistrations Ha IsArray (arrOfficeRegistrations ) Majd minden strOfficeRegistration in arrOfficeRegistrations objReg.GetStringValue HKLM, strRegPath & "\" & strOfficeRegistration, "ConvertToEdition", strOfficeEdit ion objReg.GetBinaryValue HKLM, strRegPath & "\" & strOfficeRegistration "DigitalProductID" arrProductID Ha strOfficeEdition "" És IsArray (arrProductID) Ezután WriteData "termék", strOfficeEdition WriteData "Key", DecodeProductKey (arrProductID, intKeyOffset) & vbCrLf intProductCount = intProductCount + 1 Vége, ha Következő vége, Ha vége RegReadBinary alfunkció (strRegPath, strRegValue) Állítsa be objReg = GetObject ("winmgmts: impersonationLevel = megszemélyesíteni!! \\. \ root \ alapértelmezés: StdRegProv,) , arrRegBinaryData RegReadBinary = arrRegBinaryData beállítása objReg = Nincs vége Vége Funkció Funkció OsArch () Állítsa be objShell = WScript.CreateObject ("WScript.Shell") Ha objShell.ExpandEnvironmentStrings ("% ProgramFiles (x86)%") "Majd OsArch =" x86 "Else OsArch =" x64 "Vége, ha Beállítva objShell = Semmi Vége Funkció Sub WriteData (strProperty, strValue) WScript.Echo strProperty &": "& Trim (strValue) End Sub 

Kész fájl * .vbs fájl: get-office-keys-vbs.zip

A kapott kulcsot egy olyan standard funkcióval ellenőrizjük, amely lehetővé teszi a kulcs utolsó öt karakterének megjelenítését. 32 bites Office 64 bites Windows rendszeren a következő parancsot adja meg:

cscript "C: \ Program Files (x86) \ Microsoft Office \ Office14 \ OSPP.VBS" / dstatus

A kulcs egy részének meg kell egyeznie a korábbi adatokkal.

megjegyzés. Az Office 2010 képernyőképe, aktiválva a KMS-kulcsmal).

SKU-azonosító: 6f327760-8c5c-417c-9b61-836a98287e0c
LICENCNÉV: Office 14, OfficeProPlus-KMS_Client kiadás
LICENC LEÍRÁS: Office 14, VOLUME_KMSCLIENT csatorna
LICENC STATUS: --- LICENSED---
HIBA KÓD: 0 engedéllyel
A telepített termékkulcs utolsó 5 karaktere: H3GVB
FENNTARTHATÓ SZABAD: 178 nap (255897 perc (ek) a lejárat előtt)