Cara mengetahui kunci aktivasi MS Office yang diinstal

Kunci Instalasi Microsoft Office setelah aktivasi produk terus disimpan dalam registri sistem. Untuk perlindungan, kunci produk tidak disimpan di tempat terbuka, tetapi dienkripsi dengan penyandian Base64 bentuk. Metode penyandian ini tidak persisten, sehingga mudah untuk mengekstraknya menggunakan skrip sederhana (kami memeriksa teknik serupa dalam artikel yang menjelaskan cara mengekstrak kunci instalasi Windows 8). Dalam artikel ini kami akan menunjukkan cara mendapatkan kode aktivasi salinan MS Office yang sudah diinstal menggunakan skrip PowerShell dan vbs tanpa menggunakan utilitas pihak ketiga.

Script ini nyaman digunakan ketika kehilangan dokumen atau stiker dengan kunci instalasi untuk Microsoft Office.

Pertama, pertimbangkan skrip pengambilan kunci PowerShell

  1. Buat file teks baru (di notepad.exe yang sama)
  2. Salin kode berikut ke dalamnya:
    fungsi Get-MSOfficeProductKey param ([string []] $ computerName = ".") $ product = @ () $ hklm = 2147483650 $ path = "SOFTWARE \ Microsoft \ Office" foreach ($ komputer dalam $ computerName) $ wmi = [WMIClass] "\\ $ computer \ root \ default: stdRegProv" $ subkeys1 = $ wmi.EnumKey ($ hklm, $ path) foreach ($ subkey1 dalam $ subkeys1.snames) $ subkeys2 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1") foreach ($ subkey2 dalam $ subkeys2.snames) $ subkeys3 = $ wmi.EnumKey ($ hklm, "$ path \ $ subkey1 \ $ subkey2") foreach ($ subkey3 dalam $ subkeys3 .snames) $ subkeys4 = $ wmi.EnumValues ​​($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3") foreach ($ subkey4 dalam $ subkeys4.snames) if ($ subkey4 -eq "digitalproductid") $ temp = "" | | pilih ComputerName, ProductName, ProductKey $ temp.ComputerName = $ computer $ productName = $ wmi.GetStringValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "productname") $ temp.ProductName = $ productName. sValue $ data = $ wmi.GetBinaryValue ($ hklm, "$ path \ $ subkey1 \ $ subkey2 \ $ subkey3", "digitalproductid") $ valueData = ($ data.uValue) [52 ... 66] # decrypt base24 data biner yang disandikan $ productKey = "" $ chars = "BCDFGHJKMPQRTVWXY2346789" untuk ($ i = 24; $ i -ge 0; $ i--) $ r = 0 untuk ($ j = 14; $ j -ge 0; $ j- -) $ r = ($ r * 256) -bxor $ valueData [$ j] $ valueData [$ j] = [math] :: Truncate ($ r / 24) $ r = $ r% 24 $ productKey = $ chars [$ r] + $ productKey if (($ i% 5) -eq 0 -dan $ i -ne 0) $ productKey = "-" + $ productKey $ temp.ProductKey = $ productKey $ produk + = $ temp $ produk 
  3. Simpan file dengan ekstensi .ps1
  4. Bergantung pada versi MS Office: jika Anda menggunakan versi Office 32-bit, jalankan konsol PowerShell 32-bit sebagai administrator. Jika menggunakan 64 bit Office, mulai konsol PowerShell 64 bit.Kiat. Office 2007 dan di bawah ini hanya 32 bit. Office 2010, 2013 dan 2016 - ada 32 dan 64 bit. Office versi 64-bit tidak dapat diinstal pada Windows 32-bit.
  5. Dalam contoh kami, Office versi 32-bit diinstal pada Windows 64-bit, jadi kami memulai Windows PoweShell (x86).
  6. Aktifkan peluncuran lokal skrip yang tidak ditandatangani:Set-ExecutionPolicy RemoteSignedSaat diminta, tekan Y dan Enter.
  7. Kami mengimpor skrip yang disimpan sebelumnya dengan perintah dan memanggil fungsi darinya:Modul Impor C: \ Tools \ getmsofficekey.ps1; Dapatkan-MSOfficeProductKey
  8. Tanda akan muncul di layar yang berisi informasi tentang semua versi Office yang diinstal. Bidang ProductName akan berisi nama produk yang diinstal, dan bidang ProductKey akan berisi kunci aktivasi.

Skrip Ready Powershell dapat diunduh di sini: getmsofficekey-posh.zip

Skrip serupa untuk mendapatkan kunci ProducId dan MS Office di Vbscript

Const HKLM = & H80000002 Komputer = "." Set objWMIService = GetObject ("winmgmts: \\" & Computer & "\ root \ cimv2") Set Obj = objWMIService.ExecQuery ("Pilih * dari Win32_OperatingSystem") redup InsDate Untuk Setiap item di Obj InsDate = item.InstallDate 'Kumpulkan Operasi Keterangan Sistem Informasi = 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 & "Office Keys" & vbCrLf QueryOfficeProductKeys () Function DecodeProductKey (arrKey, intKeyOffset) Jika Tidak IsArray (arrKey) Kemudian Keluar Fungsi keIsWin8 = BitShiftRight (arrKey) Dan intKeyOffset + 14) = arrKey (intKeyOffset + 14) Dan 247 Atau BitShiftLeft (intIsWin8 Dan 2,2) i = 24 strChars = "BCDFGHJKMPQRTVWXY2346789" strKeyOutput = "" Sementara saya> -1 intCur = 0 intX = 14 Sementara 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 Jika intIsWin8 = 1 Kemudian strKeyOutput = Mid (strKeyOutput, 2, intLast) & "N" & Kanan (strKeyOutput, Len (strKeyOutput) - (intLast + 1) Akhir Jika strKeyUtUTU = Pertengahan (strKeyOutput, 1.5) & "-" & Pertengahan (strKeyOutput, 6.5) & "- & Pertengahan (strKeyOutput, 11.5) &" - ​​"& Pertengahan (strKeyOutput, 16.5) &" - "& Pertengahan (strKeyOutput, 21,5) DecodeProductKey = strKeyGUIDOutput Fungsi Fungsi Akhir RegReadBinary (strRegPath, strRegValue) Tetapkan objReg = GetObject (" winmgmts: impersonationLevel = impersonate! \\. Root \ defaultPegegregeg HKLM, strRegPath, strRegValue, arrRegBinaryData RegReadBinary = arrRegBinaryData Set objReg = Fungsi Fungsi Tidak Ada Akhir BitShiftLeft (intValue, intShift) BitShiftLeft = intValue * 2 ^ intShift End FunctionShift BitShiftRight (intValhi ftRight = Int (intValue / (2 ^ intShift)) Akhiri Fungsi Fungsi QueryOfficeProductKeys () strBaseKey = "SOFTWARE \" strOfficeKey = strBaseKey & "Microsoft \ Office" Tetapkan objekReg = GetObject ("winmgmts: impersonationLevel impersonateLevel impersonationLevel \ root \ default: StdRegProv ") objReg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Jika IsArray (arrOfficeVersionSubKeys) Lalu Untuk Setiap strOfficeVersionKey Dalam arrOfficeVersionSubKeys Select Case strOfficeVersionKey Case" 11.0 "CheckOfficeKey strOfficeKey &" \ 11.0 \ Registration", 52, intProductCount Kasus "12.0" strOfficeKey strOfficeKey & "\ 12.0 \ Registrasi", 52, intProductCount Case "14.0" CheckOfficeKey strOfficeKey & "\ 14.0 \ Registrasi", 808, intProductCount Case "15.0" PeriksaOfficeKey strOfficeKey & ", \, 80.0 intProductCount End Pilih Next End Jika strBaseKey = "SOFTWARE \ Wow6432Node \" strOfficeKey = strBaseKey & "Microsoft \ Office" Tetapkan objReg = GetObject ("winmgmts: impersonationLevel = impersonate! \\. \ root \ default: StdRegProv Reg.EnumKey HKLM, strOfficeKey, arrOfficeVersionSubKeys intProductCount = 1 Jika IsArray (arrOfficeVersionSubKeys) Kemudian Untuk Setiap strOfficeVersionKey Dalam arrOfficeVersionSeyKeyKeyKeyKeyKeyKeyKeyKeyKeyKeyKeyKeyKey \ 12.0 \ Registrasi ", 52, intProductCount Case" 14.0 "CheckOfficeKey strOfficeKey &" \ 14.0 \ Registration ", 808, intProductCount Case" 15.0 "CheckOfficeKey strOfficeKey &" \ 15.0 \ Registrasi ", 808, intProduct End, Pilih Pilih Fungsi Selanjutnya 'Office Product Key Sub CheckOfficeKey (strRegPath, intKeyOffset, intProductCount) Set objReg = GetObject ( "winmgmts: impersonationLevel = berkedok \\ \ root \ default:!. StdRegProv") objReg.EnumKey HKLM, strRegPath, arrOfficeRegistrations Jika IsArray (arrOfficeRegistrations ) Kemudian Untuk Setiap strOfficeRegistration Dalam arrOfficeRegistrations objReg.GetStringValue HKLM, strRegPath & "\" & strOfficeRegistration, "ConvertToEdition", strOfficeEdit ion intProductCount + 1 End If End Next Jika End Sub Function RegReadBinary (strRegPath, strRegValue) Tetapkan objReg = GetObject ("winmgmts: impersonationLevel = impersonate! \\. \ root \ default: StdRegProv,) , arrRegBinaryData RegReadBinary = arrRegBinaryData Set objReg = Fungsi Fungsi Tidak Ada Akhir OsArch () Tetapkan objShell = WScript.CreateObject ("WScript.Shell") Jika objShell.ExpandEnvironmentStrings ("% ProgramFiles (x86)%") = "% ProgramFiles () "Lalu OsArch =" x86 "Lain OsArch =" x64 "Berakhir Jika Tetapkan objShell = Sub Fungsi Tidak Ada Akhir Sub WriteData (strProperty, strValue) WScript.Echo strProperty &": "& Trim (strValue) End Sub 

File siap * .vbs file: get-office-keys-vbs.zip

Kami akan memeriksa kunci yang diterima menggunakan fungsi standar yang memungkinkan Anda untuk menampilkan 5 karakter terakhir dari kunci tersebut. Untuk Office 32 bit pada Windows 64 bit, perintahnya adalah:

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

Bagian dari kunci harus cocok dengan data sebelumnya.

Catatan. Di tangkapan layar Office 2010, diaktifkan oleh kunci KMS).

ID SKU: 6f327760-8c5c-417c-9b61-836a98287e0c
LICENSE NAME: Office 14, OfficeProPlus-KMS_Client edition
LICENSE DESCRIPTION: Office 14, VOLUME_KMSCLIENT saluran
STATUS LISENSI: --- LISENSI---
KODE KESALAHAN: 0 sebagai berlisensi
5 karakter terakhir dari kunci produk yang dipasang: H3GVB
GRACE SISA: 178 hari (255897 menit sebelum kedaluwarsa)