# encoding: ascii # api: powershell # title: get windows product key # description: retrieve the windows product key of a specified machine using WMI # version: 0.1 # type: function # author: greg zakharov # license: CC0 # function: Get-ProductKey # x-poshcode-id: 5427 # x-derived-from-id: 5477 # x-archived: 2014-10-08T15:45:29 # x-published: 2014-09-14T11:14:00 # # function Get-ProductKey([String]$Computer = '.') { <# .NOTES Author: greg zakharov #> begin { $val = [Byte[]]([wmiclass]('\\' + $Computer + '\root\default:StdRegProv')).GetBinaryValue( 2147483650, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'DigitalProductId' ).uValue[52..66] $map = "BCDFGHJKMPQRTVWXY2346789" $key = "" } process { for ($i = 24; $i -ge 0; $i--) { $k = 0 for ($j = 14; $j -ge 0; $j--) { $k = ($k * 256) -bxor $val[$j] $val[$j] = [Math]::Floor([Double]($k / 24)) $k = $k % 24 } $key = $map[$k] + $key if (($i % 5) -eq 0 -and $i -ne 0) {$key = "-" + $key} } } end {$key} }