Instalacijski ključ Microsoft Officea nakon aktivacije proizvoda i dalje se pohranjuje u registar sustava. Radi zaštite, ključ proizvoda se ne pohranjuje na otvorenom, već u šifriranom kodiranju base64 a. Ova metoda kodiranja nije postojana, pa ju je lako izdvojiti jednostavnom skriptu (ispitali smo sličnu tehniku u članku koja opisuje kako izvući instalacijski ključ sustava Windows 8). U ovom ćemo članku pokazati kako dobiti aktivacijski kôd već instalirane kopije MS Officea pomoću PowerShell i vbs skripte bez korištenja uslužnih programa drugih proizvođača.
Ove skripte prikladno je koristiti kada gubite dokumente ili naljepnice s instalacijskim ključevima za Microsoft Office.
Prvo razmotrite skriptu za pronalaženje ključa PowerShell
- Izradite novu tekstualnu datoteku (u istom notepad.exe)
- Kopirajte u njega sljedeći kôd:
funkcija Get-MSOfficeProductKey param ([string []] $ computerName = ".") $ product = @ () $ hklm = 2147483650 $ path = "SOFTWARE \ Microsoft \ Office" foreach ($ računalo u $ computerName) $ wmi = [WMIClass] "\\ $ computer \ root \ default: stdRegProv" $ subkeys1 = $ wmi.EnumKey ($ hklm, $ path) foreach ($ subkey1 u $ subkeys1.snames) $ subkeys2 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1") foreach ($ subkey2 u $ subkeys2.snames) $ subkeys3 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1 \ $ subkey2") foreach ($ subkey3 u $ subkeyys3 .snames) $ subkeys4 = $ wmi.EnumValues ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3") foreach ($ subkey4 u $ subkeys4.snames) if ($ subkey4 -eq "digitalproductid") $ temp = "" | odaberite ComputerName, ProductName, ProductKey $ temp.ComputerName = $ computer $ productName = $ wmi.GetStringValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "ime proizvoda") $ temp.ProductName = $ productName. sValue $ data = $ wmi.GetBinaryValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "digitalproductid") $ valueData = ($ data.uValue) [52 ... 66] # dešifriranje base24 kodiranih binarnih podataka $ productKey = "" $ chars = "BCDFGHJKMPQRTVWXY2346789" za ($ i = 24; $ i -ge 0; $ i--) $ r = 0 za ($ j = 14; $ j -ge 0; $ j- -) $ r = ($ r * 256) -bxor $ valueData [$ j] $ valueData [$ j] = [math] :: Skraći ($ r / 24) $ r = $ r% 24 $ productKey = $ chars [$ r] + $ productKaj, ako (($ i% 5) -eq 0 -i $ i -ne 0) $ productKey = "-" + $ productKey $ temp.ProductKey = $ productKey $ product + = $ temp $ proizvoda
- Spremite datoteku s nastavkom .ps1
- Ovisno o verziji MS Officea: ako koristite 32-bitnu verziju sustava Office, pokrenite 32-bitnu PowerShell konzolu kao administrator. U slučaju korištenja 64-bitnog Officea, pokrenite 64-bitnu PowerShell konzolu.Savjet. Office 2007 i noviji su samo 32-bitni. Office 2010, 2013 i 2016 - postoje i 32 i 64 bitni. 64-bitna verzija sustava Office ne može se instalirati na 32-bitni Windows.
- U našem primjeru 32-bitna verzija sustava Office instalirana je na 64-bitnom Windows-u, pa pokrećemo Windows PoweShell (x86).
- Omogući lokalno pokretanje nepotpisanih skripti:
Set-ExecutionPolicy RemoteSigned
Kad se to od vas zatraži, pritisnite Y i Enter. - Uvozimo prethodno spremljenu skriptu sa naredbom i iz nje zovemo funkciju:
Uvozni modul C: \ Alati \ getmsofficekey.ps1; Get-MSOfficeProductKey
- Na ekranu bi se trebao pojaviti znak s informacijama o svim instaliranim verzijama sustava Office. Polje ProductName sadržavat će naziv instaliranog proizvoda, a polje ProductKey sadrži aktivacijski ključ.
Spremna skripta Powershell možete preuzeti ovdje: getmsofficekey-posh.zip
Slična je skripta za dobivanje tipki ProducId i MS Office na Vbscriptu
Const HKLM = & H80000002 Računalo = "." Postavi objWMIService = GetObject ("winmgmts: \\" & Computer & "\ root \ cimv2") Postavi Obj = objWMIService.ExecQuery ("Odaberite * iz Win32_OperatingSystem") dim InsDate za svaku stavku u Obj InsDate = item.InstallDate 'Gathering. Opis o sustavu = Item.Caption OSArchitecture = Item.OSArchitecture CSDVersion = Item.CSDVersion Verzija = 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 & "Office ključevi" & vbCrLf QueryOfficeProductKeys () Funkcija DecodeProductKey (arrKey, intKeyOffset) Ako nije IsArray (arrKey), tada izlazite iz funkcije intIsWin8 = AndShiftRy (aIriSefty) intKeyOffset + 14) = arrKey (intKeyOffset + 14) i 247 Ili BitShiftLeft (intIsWin8 i 2,2) i = 24 strChars = "BCDFGHJKMPQRTVWXY2346789" strKeyOutput = "" Dok i = 0 intXur 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 strha + 1,1) & strKeyOutput intLast = intCur Wend Ako intIsWin8 = 1 Tada strKeyOutput = Srednja (strKeyOutput, 2, intLast) & "N" & Desna (strKeyOutput, Len (strKeyOutput) - (intLast + 1) Konačno str str Mid (strKeyOutput, 1.5) & "-" & Mid (strKeyOutput, 6.5) & "- & Mid (strKeyOutput, 11.5) &" - "& Mid (strKeyOutput, 16.5) &" - "& Mid (strKeyOutput, 21,5) DecodeProductKey = strKeyGUIDOutput Funkcija kraj funkcije Funkcija RegReadBinary (strRegPath, strRegValue) Postavi objReg = GetObject (" winmgmts: impersonationLevel = impersonate! \Ggggggggggggggggggggggggg, pg, pgg, pgg, pgg, pgg, pgg, pgg, pgg, pgg, pgg, pgg, pggg, str. Pg, gg, pg, gg, g.gg, pg, gg, g.gg; HKLM, strRegPath, strRegValue, arrRegBinaryData RegReadBinary = arrRegBinaryData Postavite objReg = Ništa Kraj Funkcija Funkcija BitShiftLeft (intValue, intShift) BitShiftLeft = intValue * 2 ^ intShift Bit Funkcija ftRight = Int (intValue / (2 ^ intShift)) Završna funkcija Funkcija QueryOfficeProductKeys () strBaseKey = "SOFTWARE \" strOfficeKey = strBaseKey & "Microsoft \ Office" Postavi objReg = GetObject ("winmgmtse! impersoLe! \ root \ zadano: StdRegProv ") objReg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Ako IsArray (arrOfficeVersionSubKeys) i na svaki strOfficeVersionKey U arrOfficeVersionSubKeys Select Case strOfficeVersionKey slučaj" 11,0 "CheckOfficeKey strOfficeKey &" \ 11.0 \ Registracija”, 52, intProductCount Slučaj "12.0" CheckOfficeKey strOfficeKey & "\ 12.0 \ Registracija", 52, intProductCount Case "14.0" CheckOfficeKey strOfficeKey & "\ 14.0 \ Registracija", 808, intProductCount Case "15.0" Registracija CheckOfficeKey strOfficeKey & " intProductCount End Odaberite Next End If strBaseKey = "SOFTWARE \ Wow6432Node \" strOfficeKey = strBaseKey & "Microsoft \ Office" Postavite objReg = GetObject ("winmgmts: impersonationLevel = impersonate! \\. \ root \ obn .: obn \ obn \ obn: obn \ obn: obn. \ root" obn. Reg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Ako je IsArray (arrOfficeVersionSubKeys) Tada je za svaki strOfficeVersionKey u arrOfficeVersionSeyKeyKeyeKeyeeeee od 11 \ 12.0 \ Registracija ", 52, intProductCount Case" 14.0 "CheckOfficeKey strOfficeKey &" \ 14.0 \ Registracija ", 808, intProductCount Case" 15.0 "CheckOfficeKey strOfficeKey &" \ 15.0 \ Registracija ", 808, intProductCount End Select Next End If End End „Usluga Stvarajući ključ Sub CheckOfficeKey (strRegPath, intKeyOffset, intProductCount) Set objReg = GetObject ( "winmgmts: impersonationLevel = impersonate \\ \ root \ zadano:. StdRegProv") objReg.EnumKey HKLM, strRegPath, arrOfficeRegistrations Ako je IsArray (arrOfficeRegistrations ) Zatim za svaku strOfficeRegistration u arrOfficeRegistrations objReg.GetStringValue HKLM, strRegPath & "\" & strOfficeRegistration, "ConvertToEdition", strOfficeEdit ion objReg.GetBinaryValue HKLM, strRegPath & "\" & strOfficeRegistration "DigitalProductID", arrProductID Ako strOfficeEdition "" A IsArray (arrProductID) Zatim WriteData "proizvod", strOfficeEdition WriteData "Ključ", DecodeProductKey (arrProductID, intKeyOffset) vbCrLf intProductCount = intProductCount + 1 kraj ako je sljedeći kraj ako završi potfunkcija RegReadBinary (strRegPath, strRegValue) Postavi objReg = GetObject ("winmgmts: impersonationLevel = impersonata! \\. \ root \ default: StdRegProv,) , arrRegBinaryData RegReadBinary = arrRegBinaryData Postavi objReg = Ništa kraj funkcije Funkcija OsArch () Postavi objShell = WScript.CreateObject ("WScript.Shell") Ako objShell.ExpandEnvironmentStrings ("% ProgramFiles (x86)" "Onda OsArch =" x86 "Else OsArch =" x64 "Kraj Ako je postavljeno objShell = Ništa kraj funkcije Funkcija Sub WriteData (strProperty, strValue) WScript.Echo strProperty &": "& Trim (strValue) End Sub
Spremna datoteka * .vbs datoteka: get-office-keys-vbs.zip
Primljeni ključ ovjerit ćemo standardnom funkcijom koja omogućava prikaz zadnjih 5 znakova ključa. Za 32-bitni Office na 64-bitnom Windows-u naredba je:
cscript "C: \ programske datoteke (x86) \ Microsoft Office \ Office14 \ OSPP.VBS" / dstatus
Dio ključa mora odgovarati prethodnim podacima.
primjedba. Na snimci zaslona sustava Office 2010, aktiviran KMS tipkom).Šifra proizvoda: 6f327760-8c5c-417c-9b61-836a98287e0c
NAZIV DOZVOLE: Office 14, izdanje OfficeProPlus-KMS_Client
OPIS LICENCE: Office 14, kanal VOLUME_KMSCLIENT
STATUS DOZVOLE: --- LICENCIRANO---
KOD GREŠKE: 0 kao licencirano
Zadnjih 5 znakova instaliranog ključa proizvoda: H3GVB
REMAINING GRACE: 178 dana (255897 minuta (a) prije isteka)