Puppeteers Blog

Powershelliä UNIX-ylläpitäjille, osa 11

March 11, 2016 

Windowsin tuoteavain ("Product Key") löytyy esiasennetuissa koneissa usein koneen pohjasta, mutta entäpä jos Windows onkin jälkiasennettu, tai koneen pohjassa oleva tarra ei edustakaan todellisuutta? Jos tällainen kone soseutuu, ei tuoteavainta löydy tietenkään mistään fyysisestä paikasta, ja tuloksena on kone ilman Windowsia; tämä voi toki olla toivottavakin asiaintila, mutta lähdetään siitä oletuksesta, ettei näin ole.

Tuoteavain on onneksi tallennettu Windowsin rekisteriin, mistä sen saa otettua talteen useilla eri tavoilla. Koska tässä blogissa keskitytään automaatioon ja Powershellin, mitkään graafiset kikkareet eivät luonnollisestikaan tule kyseeseen. Onneksi homma hoituu myös alla olevalla Powershell-skriptillä (lähde):

Function Get-ProductKey { 
 $map="BCDFGHJKMPQRTVWXY2346789" 
 $value = (get-itemproperty "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion").digitalproductid[0x34..0x42] 
 $ProductKey = "" 
 for ($i = 24; $i -ge 0; $i--) { 
 $r = 0 
 for ($j = 14; $j -ge 0; $j--) { 
 $r = ($r * 256) -bxor $value[$j] 
 $value[$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
 } 
 Get-ProductKey
 

Tämä skripti tallennetaan tiedostoon (esim. getproductkey.ps1) ja ajetaan Powershellissä. Komento tulostaa Windowsin tuoteavaimen, jonka voi pistää hyvään säilöön vastaisuuden varalle.

Powershelliä UNIX-ylläpitäjille -artikkelisarjan muut osat:

Samuli Seppänen
Samuli Seppänen
Author archive
menucross-circle