Speccy 1.23.569 also reports the wrong product key for windows 8 and windows 8.1
for what it's worth - Here is some vb.net code that will properly display the windows 8 and windows 8.1 key.
I've used this in my Own Key finder application, so I know it works correctly.
'// Open source product key decryptor by 'The Dev'
'// No limitations on this code, you may pass, share
'// and use it however you like. Enjoy.
'//
'// Thanks to nononsense for the decryptor method
'This option is important, remove it and see what happens.
Option Explicit Off
Public Class main
#Region "Form Load Event" ' We call our key decryption here in the load event.
Private Sub loadevent(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' Calling the decryption method and specifying the location of our encrypted product key
Me.decodedkey.Text = ConvertToKey(WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" & "\DigitalProductId"))
End Sub
#End Region
'Original decryptor without the bugfix has been commented out.
#Region "Previous DigitalProductId Decryptor"
' Public KeyOutput As String
' Public WshShell As Object = CreateObject("WScript.Shell")
' Function ConvertToKey(ByVal Key)
'Offsets for Windows are 52-67
' Try
' Const KeyOffset = 52
' isWin8 = (Key(66) \ 6) And 1
' Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
' i = 24
'Hex
' Chars = "BCDFGHJKMPQRTVWXY2346789"
' Do
' Cur = 0
' X = 14
' Do
' Cur = Cur * 256
' Cur = Key(X + KeyOffset) + Cur
' Key(X + KeyOffset) = (Cur \ 24)
' Cur = Cur Mod 24
' X = X - 1
' Loop While X >= 0
' i = i - 1
' KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
' Last = Cur
' Loop While i >= 0
' If (isWin8 = 1) Then
' keypart1 = Mid(KeyOutput, 2, Last)
' insert = "N"
' KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
' End If
' aa = Mid(KeyOutput, 1, 5)
' bb = Mid(KeyOutput, 6, 5)
' cc = Mid(KeyOutput, 11, 5)
' dd = Mid(KeyOutput, 16, 5)
' ee = Mid(KeyOutput, 21, 5)
' ConvertToKey = aa & "-" & bb & "-" & cc & "-" & dd & "-" & ee
' Catch ex As Exception
' MessageBox.Show(ex.Message)
' End Try
' End Function
#End Region
#Region "Updated DigitalProductId Decryptor"
Public KeyOutput As String
Public WshShell As Object = CreateObject("WScript.Shell")
Function ConvertToKey(Key)
Const KeyOffset = 52
isWin8 = (Key(66) \ 6) And 1
Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
i = 24
Chars = "BCDFGHJKMPQRTVWXY2346789"
Do
Cur = 0
X = 14
Do
Cur = Cur * 256
Cur = Key(X + KeyOffset) + Cur
Key(X + KeyOffset) = (Cur \ 24)
Cur = Cur Mod 24
X = X - 1
Loop While X >= 0
i = i - 1
KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput
Last = Cur
Loop While i >= 0
If (isWin8 = 1) Then
keypart1 = Mid(KeyOutput, 2, Last)
insert = "N"
KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
If Last = 0 Then KeyOutput = insert & KeyOutput
End If
a = Mid(KeyOutput, 1, 5)
b = Mid(KeyOutput, 6, 5)
c = Mid(KeyOutput, 11, 5)
d = Mid(KeyOutput, 16, 5)
e = Mid(KeyOutput, 21, 5)
ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e
End Function
#End Region
End Class
If it helps make Speccy better,
i'd accept a copy of the pro version as a thank you gift...