(Win32) Windows XP CD Key anzeigen
Verfasst: 07.12.2004 16:44
ich bin im englischen forum, auf folgenden code gestossen, welcher es ermöglicht die seriennummer von windows xp anzeigen zu lassen.
ist bestimmt für einige von uns hier interessant.
der ursprüngliche VB code stammt von Snytax und wurde von HeX0R für PB übersetzt.
c ya,
nco2k
ist bestimmt für einige von uns hier interessant.

Code: Alles auswählen
;**************************************
; Name: View Windows XP CD Key
; Description:Function: sGetXPCDKey() wi
; ll Return the CD Key For Windows XP in t
; he format XXXXX-XXXXX-XXXXX-XXXXX-XXXXX.
;
; By: Snytax
;
; Inputs:Nothing.
;
; Returns:Your Windows XP CD Key.
;
;This code is copyrighted And has' limited warranties.Please see http://w
; ww.Planet-Source-Code.com/vb/scripts/Sho
; wCode.asp?txtCodeId=57164&lngWId=1'For details.'**************************************
;
;sGetXPCDKey() -
;Returns the Windows XP CD Key If succes
; sful.
;Returns nothing upon failure.
Procedure.s sGetXPCDKey()
;Read the value of:
;HKLM\SOFTWARE\MICROSOFT\Windows NT\Curr
; entVersion\DigitalProductId
*bDigitalProductID = AllocateMemory(164)
*bProductKey.b = AllocateMemory(15)
ilByte.l
lDataLen.l
hKey.l
;Open the registry key: HKLM\SOFTWARE\MI
; CROSOFT\Windows NT\CurrentVersion
If RegOpenKey_(#HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", @hKey) = #ERROR_SUCCESS
lDataLen = 164
;ReDim Preserve bDigitalProductID(lDataLen)
;Read the value of DigitalProductID
If RegQueryValueEx_(hKey, "DigitalProductId", 0, "REG_BINARY", *bDigitalProductID, @lDataLen) = #ERROR_SUCCESS
;Get the Product Key, 15 bytes long, off
; set by 52 bytes
For ilByte = 52 To 66
Byte.l = PeekB(*bDigitalProductID + ilByte) & 255
PokeB(*bProductKey + ilByte - 52, Byte)
Next ilByte
RegCloseKey_(hKey)
Else
;ERROR: Could not Read "DigitalProductID
RegCloseKey_(hKey)
ProcedureReturn ""
EndIf
Else
;ERROR: Could not open "HKLM\SOFTWARE\MI
; CROSOFT\Windows NT\CurrentVersion"
ProcedureReturn ""
EndIf
;Now we are going To 'base24' decode the
; Product Key
Dim bKeyChars.l(23)
;Possible characters in the CD Key:
bKeyChars(0) = Asc("B")
bKeyChars(1) = Asc("C")
bKeyChars(2) = Asc("D")
bKeyChars(3) = Asc("F")
bKeyChars(4) = Asc("G")
bKeyChars(5) = Asc("H")
bKeyChars(6) = Asc("J")
bKeyChars(7) = Asc("K")
bKeyChars(8) = Asc("M")
bKeyChars(9) = Asc("P")
bKeyChars(10) = Asc("Q")
bKeyChars(11) = Asc("R")
bKeyChars(12) = Asc("T")
bKeyChars(13) = Asc("V")
bKeyChars(14) = Asc("W")
bKeyChars(15) = Asc("X")
bKeyChars(16) = Asc("Y")
bKeyChars(17) = Asc("2")
bKeyChars(18) = Asc("3")
bKeyChars(19) = Asc("4")
bKeyChars(20) = Asc("6")
bKeyChars(21) = Asc("7")
bKeyChars(22) = Asc("8")
bKeyChars(23) = Asc("9")
nCur.l
sCDKey.s
ilKeyByte.l
ilByte.l
Byte.l
For ilByte = 24 To 0 Step -1
;Step through each character in the CD k
; ey
nCur = 0
For ilKeyByte = 14 To 0 Step -1
;Step through each byte in the Product K
; ey
Byte = PeekB(*bProductKey + ilKeyByte) & 255
nCur = ((nCur & 255) * 256) ! Byte
PokeB(*bProductKey + ilKeyByte, (Int(nCur / 24)))
nCur = nCur % 24
Next ilKeyByte
sCDKey = Chr(bKeyChars(nCur)) + sCDKey
If ilByte % 5 = 0 And ilByte <> 0
sCDKey = "-" + sCDKey
EndIf
Next ilByte
ProcedureReturn sCDKey
EndProcedure
Debug sGetXPCDKey()
End
c ya,
nco2k