Jump to content
Sign in to follow this  
unknownwarezorg

Office 2007 key extraction help

Recommended Posts

unknownwarezorg

I need to extract my key. Can anyone tell me whats wrong with this?

Dim $var = RegEnumKey($officeKey, $i)
    If @error <> 0 Then
        GUICtrlSetData($status_L, "Info: Unable to find REG_BINARY 'DigitalProductID', maybe no Office installed!")
        Return "No Office XP, 2003, or 2007 found"
      EndIf
        If $var <> "" Then
        $product = "2007"
        Dim $officeKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Registration\{91120000-0014-0000-0000-0000000FF1CE}"
        EndIf
    EndIf
;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Registration\{91120000-0014-0000-0000-0000000FF1CE}
    Dim $var = RegRead($officeKey,"ProductID")
    If @error <> 0 Then
Edited by unknownwarezorg

Share this post


Link to post
Share on other sites
BrettF
Danny35d

This a set of UDF I put together while back that give you windows key or office key. Enjoy it...

WAP_UDF.au3

#include-once

;===============================================================================
;
; Function Name:    _GetWindowsKey()
; Description:      gets the Windows DigitalProductID from the registry
; Parameter(s):     none
; Requirement(s):   none
; Return Value(s):  Returns the binary Windows DigitalProductID as stored in the registry
; Author(s):        Danny35d
;
;===============================================================================
; TBD: Error checking and SetError
Func _GetWindowsKey($sRemoteComputer = '')
    Dim $aKeys[2][5]
    
    If $sRemoteComputer <> '' Then $sRemoteComputer = '\\' & StringReplace($sRemoteComputer, '\', '') & '\'
    Local Const $sRegKey = $sRemoteComputer & 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
    
    $aKeys[0][0] = 1
    $aKeys[1][0] = RegRead($sRegKey, 'ProductName')
    $aKeys[1][1] = RegRead($sRegKey, 'ProductID')
    $aKeys[1][2] = _DecodeProductKey(RegRead($sRegKey, 'DigitalProductID'))
    $aKeys[1][3] = RegRead($sRegKey, 'RegisteredOwner')
    $aKeys[1][4] = RegRead($sRegKey, 'RegisteredOrganization')
    Return($aKeys)
EndFunc   ;==>_GetWindowsKey

;===============================================================================
;
; Function Name:    _GetOfficeKey()
; Description:      gets the Office DigitalProductID from the registry
; Parameter(s):     none
; Requirement(s):   none
; Return Value(s):  Returns the binary 2003 Office DigitalProductID as stored in the registry
; Author(s):        Danny35d
;
;===============================================================================
; TBD: Error checking and SetError
Func _GetOfficeKey($sRemoteComputer = '')
    Dim $aKeys[1][3]
    If $sRemoteComputer <> '' Then $sRemoteComputer = '\\' & StringReplace($sRemoteComputer, '\', '') & '\'
    Local $sRegKey1 = $sRemoteComputer & 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office'
    Local $sRegKey2 = $sRemoteComputer & 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
    Local $iCount1 = 1, $iCount2 = 1
    
    While 1
        $sKey1 = RegEnumKey($sRegKey1, $iCount1)
        If @error <> 0 Then ExitLoop
        While 1
            $ProductID = ''
            $ProductName = ''
            $DigitalProductID = ''
            $sKey2 = RegEnumKey($sRegKey1 & '\' & $sKey1 & '\Registration', $iCount2)
            If @error <> 0 Then ExitLoop
            $ProductID = RegRead($sRegKey1 & '\' & $sKey1 & '\Registration\' & $sKey2, 'ProductID')
            $ProductName = RegRead($sRegKey1 & '\' & $sKey1 & '\Registration\' & $sKey2, 'ProductName')
            $DigitalProductID = RegRead($sRegKey1 & '\' & $sKey1 & '\Registration\' & $sKey2, 'DigitalProductID')
            If $ProductName = '' Then $ProductName = RegRead($sRegKey2 & '\' & $sKey2, 'DisplayName')
            $DigitalProductID = _DecodeProductKey($DigitalProductID)
            If $DigitalProductID <> 'BBBBB-BBBBB-BBBBB-BBBBB-BBBBB' Then 
                ReDim $aKeys[UBound($aKeys) + 1][3]
                $aKeys[0][0] = UBound($aKeys) - 1
                $aKeys[UBound($aKeys) - 1][0] = $ProductName
                $aKeys[UBound($aKeys) - 1][1] = $ProductID
                $aKeys[UBound($aKeys) - 1][2] = $DigitalProductID               
            EndIf
            $iCount2 += 1
        WEnd        
        $iCount1 += 1       
    WEnd
    Return($aKeys)
EndFunc   ;==>_GetOfficeKey

;===============================================================================
;
; Function Name:    _DecodeProductKey()
; Description:      decodes the PID to get the product key
; Parameter(s):     $BinaryDPID - the PID as stored in registry
; Requirement(s):   none
; Return Value(s):  Returns the decoded Windows/Office/Visual studio/etc. product key
; Author(s):        found this in the Forum, who made it?!
;
;===============================================================================
Func _DecodeProductKey($BinaryDPID)
    Local $bKey[15]
    Local $sKey[29]
    Local $Digits[24]
    Local $Value = 0
    Local $hi = 0
    Local $n = 0
    Local $i = 0
    Local $dlen = 29
    Local $slen = 15
    Local $Result
    
    $Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
    $binaryDPID = StringMid($binaryDPID, 105, 30)
    For $i = 1 To 29 Step 2
        $bKey[Int($i / 2) ] = Dec(StringMid($binaryDPID, $i, 2))
    Next
    
    For $i = $dlen - 1 To 0 Step - 1
        If Mod(($i + 1), 6) = 0 Then
            $sKey[$i] = "-" 
        Else
            $hi = 0
            For $n = $slen - 1 To 0 Step - 1
                $Value = BitOR(BitShift($hi, -8), $bKey[$n])
                $bKey[$n] = Int($Value / 24)
                $hi = Mod($Value, 24)
            Next
            $sKey[$i] = $Digits[$hi + 1]
        EndIf       
    Next
    For $i = 0 To 28
        $Result = $Result & $sKey[$i]
    Next    
    Return $Result
EndFunc   ;==>_DecodeProductKeyoÝ÷ ØLZ^jëh×6#include <Array.au3>
#include 'WAP_UDF.au3'


; Get windows registration
;   Return a two dimension array in which
;   $WindowsKey[1][0] = ProductName
;   $WindowsKey[1][1] = ProductID
;   $WindowsKey[1][2] = DigitalProductID
;   $WindowsKey[1][3] = RegisteredOwner
;   $WindowsKey[1][4] = RegisteredOrganization
$WindowsKey = _GetWindowsKey()
_ArrayDisplay($WindowsKey, 'Windows Key')

;Get All Office registration. This also include any Visio, Project, etc.
;   Return a two dimension array in which
;   $OfficeKey[n][0] = $ProductName
;   $OfficeKey[n][1] = $ProductID
;   $OfficeKey[n][2] = $DigitalProductID                

$OfficeKey = _GetOfficeKey()
_ArrayDisplay($OfficeKey, 'Office Key')

AutoIt Scripts:NetPrinter - Network Printer UtilityRobocopyGUI - GUI interface for M$ robocopy command line

Share this post


Link to post
Share on other sites
unknownwarezorg

Thank you much, much appriciated

Share this post


Link to post
Share on other sites
unknownwarezorg

Well I couldnt get that to work. Can someone look over my code?

Thanks in advanced

Please dont tell me what to put where... Im a noob coder. I took this and wanted to make it extract office 2007

#include <GUIConstants.au3>

;GUI
$GUI = GUICreate("Windows Information", 685, 450, 158, 127)

;Labels
$windowsInformation_L = GUICtrlCreateLabel("Windows Information", 8, 8, 659, 25)
$status_L = GUICtrlCreateLabel("Information read out ...", 24, 80, 400, 17)
$description_L = GUICtrlCreateLabel("Description", 16, 112, 103, 17)
$windowsType_L = GUICtrlCreateLabel("Windows Type", 16, 152, 103, 17)
$serialNumber_L = GUICtrlCreateLabel("Serial Number", 16, 192, 103, 17)
$ProductKey_L = GUICtrlCreateLabel("Product Key", 16, 232, 103, 17)
$InstallDate_L = GUICtrlCreateLabel("Install Date", 16, 272, 103, 17)
$LastBootUpTime_L = GUICtrlCreateLabel("Last Boot Up Time", 16, 312, 103, 17)
$RegisteredOwner_L = GUICtrlCreateLabel("Registered Owner", 16, 352, 103, 17)
$officeKey_L = GUICtrlCreateLabel("Office Key", 16, 392, 103, 17)

;Input
$description_I = GUICtrlCreateInput("Description", 130, 112, 389, 21)
$windowsType_I = GUICtrlCreateInput("Windows Type", 130, 152, 389, 21)
$serialNumber_I = GUICtrlCreateInput("Serial Number", 130, 192, 389, 21)
$ProductKey_I = GUICtrlCreateInput("Product Key", 130, 232, 389, 21)
$InstallDate_I = GUICtrlCreateInput("Install Date", 130, 272, 389, 21)
$LastBootUpTime_I = GUICtrlCreateInput("Last Boot Up Time", 130, 312, 389, 21)
$RegisteredOwner_I = GUICtrlCreateInput("Registered Owner", 130, 352, 389, 21)
$officeKey_I = GUICtrlCreateInput("Office Key", 130, 392, 389, 21)

;Groups
$informationPanel_G = GUICtrlCreateGroup("Information Panel", 8, 48, 585, 393)
$status_G = GUICtrlCreateGroup("Status", 14, 64, 553, 41)
$buttins_G = GUICtrlCreateGroup("Buttons", 608, 48, 65, 393)
$office_G = GUICtrlCreateGroup("Microsoft Office", 14, 375, 553, 48)

;Buttons
$exit_B = GUICtrlCreateButton("Exit", 616, 72, 49, 25, 0)
$Description_B = GUICtrlCreateButton("Clipboard", 616, 112, 49, 25, 0)
$WindowsType_B = GUICtrlCreateButton("Clipboard", 616, 152, 49, 25, 0)
$SerialNumber_B = GUICtrlCreateButton("Clipboard", 616, 192, 49, 25, 0)
$ProductKey_B = GUICtrlCreateButton("Clipboard", 616, 232, 49, 25, 0)
$InstallDate_B = GUICtrlCreateButton("Clipboard", 616, 272, 49, 25, 0)
$LastBootUpTime_B = GUICtrlCreateButton("Clipboard", 616, 312, 49, 25, 0)
$registeredOwner_B = GUICtrlCreateButton("Clipboard", 616, 352, 49, 25, 0)
$OfficeKey_B = GUICtrlCreateButton("Clipboard", 616, 392, 49, 25, 0)

; SetFont
$font = "Comic Sans MS"
GUICtrlSetFont($windowsInformation_L, 16, 400, 4, $font)

;ProgressBar
$progressbar = GUICtrlCreateProgress(140, 75, 400, 25)

;Global variables
Global $product = ""; Office product Version (XP or 2003)
Global $counter = 3; Counter for progressBar
Global $wait = 150; Wait for progessBar

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    If $counter = 3 Then
        Sleep(500)
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 2 Then
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 1 Then
        GUICtrlSetData($status_L, "Initialize... " & $counter)
        progress()
        $counter -= 1
    ElseIf $counter = 0 Then
        GUICtrlSetData($status_L, "Ready ...")
        progress()
        $counter -= 1
    ElseIf $counter = -1 Then
        $Bin = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductID")
        $key4RegisteredOwner = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
        $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
        $colSettings = $objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
        
        For $objOperatingSystem In $colSettings
        Next
        GUICtrlSetData($description_I, StringMid($objOperatingSystem.Description, 1))
        GUICtrlSetData($windowsType_I, '(' & @OSVersion & ') ' & StringMid($objOperatingSystem.Caption, 19))
        GUICtrlSetData($serialNumber_I, StringMid($objOperatingSystem.SerialNumber, 1))
        GUICtrlSetData($ProductKey_I, DecodeProductKey($Bin))
        GUICtrlSetData($InstallDate_I, WMIDateStringToDate($objOperatingSystem.InstallDate))
        GUICtrlSetData($LastBootUpTime_I, WMIDateStringToDate($objOperatingSystem.LastBootUpTime))
        GUICtrlSetData($RegisteredOwner_I, RegRead($key4RegisteredOwner, "RegisteredOwner"))
      
        GUICtrlSetData($officeKey_L, "Office " & $product)
        $counter -= 1
    ElseIf $counter < - 1 Then
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
            Case $msg = $exit_B
                GUICtrlSetData($status_L, "So long, Mega")
                Sleep(1500)
                ExitLoop
            Case $msg = $Description_B
                ClipPut(StringMid($objOperatingSystem.Description, 1))
                GUICtrlSetData($status_L, "Description copied to clipboard")
            Case $msg = $WindowsType_B
                ClipPut('(' & @OSVersion & ') ' & StringMid($objOperatingSystem.Caption, 19))
                GUICtrlSetData($status_L, "WindowsType copied to clipboard")
            Case $msg = $SerialNumber_B
                ClipPut(StringMid($objOperatingSystem.SerialNumber, 1))
                GUICtrlSetData($status_L, "SerialNumber copied to clipboard")
            Case $msg = $ProductKey_B
                ClipPut(DecodeProductKey($Bin))
                GUICtrlSetData($status_L, "ProductKey copied to clipboard")
            Case $msg = $InstallDate_B
                ClipPut(WMIDateStringToDate($objOperatingSystem.InstallDate))
                GUICtrlSetData($status_L, "InstallDate copied to clipboard")
            Case $msg = $LastBootUpTime_B
                ClipPut(WMIDateStringToDate($objOperatingSystem.LastBootUpTime))
                GUICtrlSetData($status_L, "LastBootUpTime copied to clipboard")
            Case $msg = $registeredOwner_B
                ClipPut(RegRead($key4RegisteredOwner, "RegisteredOwner"))
                GUICtrlSetData($status_L, "RegisteredOwner copied to clipboard")
            Case $msg = $OfficeKey_B
                ClipPut($BinaryDPID)
                GUICtrlSetData($status_L, "OfficeKey copied to clipboard")
            Case Else
          ;;;;;;;
        EndSelect
    EndIf
WEnd
Exit



Func DecodeProductKey($BinaryDPID)
    Local $bKey[15]
    Local $sKey[29]
    Local $Digits[24]
    Local $Value = 0
    Local $hi = 0
    Local $n = 0
    Local $i = 0
    Local $dlen = 29
    Local $slen = 15
    Local $Result
    
    $Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
    $BinaryDPID = StringMid($BinaryDPID, 105, 30)
    For $i = 1 To 29 Step 2
        $bKey[Int($i / 2) ] = Dec(StringMid($BinaryDPID, $i, 2))
    Next
    For $i = $dlen - 1 To 0 Step - 1
        If Mod(($i + 1), 6) = 0 Then
            $sKey[$i] = "-"
        Else
            $hi = 0
            For $n = $slen - 1 To 0 Step - 1
                $Value = BitOR(BitShift($hi, -8), $bKey[$n])
                $bKey[$n] = Int($Value / 24)
                $hi = Mod($Value, 24)
            Next
            $sKey[$i] = $Digits[$hi + 1]
        EndIf
    Next
    For $i = 0 To 28
        $Result = $Result & $sKey[$i]
    Next
    Return $Result
EndFunc;==>DecodeProductKey


Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 7, 2) & "/" & _
            StringMid($dtmDate, 5, 2) & "/" & StringLeft($dtmDate, 4) _
             & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc;==>WMIDateStringToDate



Func progress()
    If $counter = 3 Then
        For $i = 0 To 20 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 20)
        Next
    ElseIf $counter = 2 Then
        For $i = 20 To 50 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 30)
        Next
    ElseIf $counter = 1 Then
        For $i = 50 To 80 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 30)
        Next
    ElseIf $counter = 0 Then
        For $i = 80 To 100 Step 1
            GUICtrlSetData($progressbar, $i)
            Sleep($wait / 20)
        Next
        GUICtrlSetState($progressbar, $GUI_HIDE)
    EndIf
EndFunc;==>progress



;===============================================================================
;
; Function Name:    _GetOfficeKey()
; Description:    gets the Office DigitalProductID from the registry
; Parameter(s):  none
; Requirement(s):   none
; Return Value(s):  Returns the binary 2003 Office DigitalProductID as stored in the registry
; Author(s):        Danny35d
;
;===============================================================================
; TBD: Error checking and SetError
Func _GetOfficeKey($sRemoteComputer = '')
    Dim $aKeys[1][3]
    If $sRemoteComputer <> '' Then $sRemoteComputer = '\\' & StringReplace($sRemoteComputer, '\', '') & '\'
    Local $sRegKey1 = $sRemoteComputer & 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office'
    Local $sRegKey2 = $sRemoteComputer & 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
    Local $iCount1 = 1, $iCount2 = 1
   
    While 1
        $sKey1 = RegEnumKey($sRegKey1, $iCount1)
        If @error <> 0 Then ExitLoop
        While 1
            $ProductID = ''
            $ProductName = ''
            $DigitalProductID = ''
            $sKey2 = RegEnumKey($sRegKey1 & '\' & $sKey1 & '\Registration', $iCount2)
            If @error <> 0 Then ExitLoop
            $ProductID = RegRead($sRegKey1 & '\' & $sKey1 & '\Registration\' & $sKey2, 'ProductID')
            $ProductName = RegRead($sRegKey1 & '\' & $sKey1 & '\Registration\' & $sKey2, 'ProductName')
            $DigitalProductID = RegRead($sRegKey1 & '\' & $sKey1 & '\Registration\' & $sKey2, 'DigitalProductID')
            If $ProductName = '' Then $ProductName = RegRead($sRegKey2 & '\' & $sKey2, 'DisplayName')
            $DigitalProductID = _DecodeProductKey($DigitalProductID)
            If $DigitalProductID <> 'BBBBB-BBBBB-BBBBB-BBBBB-BBBBB' Then
                ReDim $aKeys[UBound($aKeys) + 1][3]
                $aKeys[0][0] = UBound($aKeys) - 1
                $aKeys[UBound($aKeys) - 1][0] = $ProductName
                $aKeys[UBound($aKeys) - 1][1] = $ProductID
                $aKeys[UBound($aKeys) - 1][2] = $DigitalProductID           
            EndIf
            $iCount2 += 1
        WEnd       
        $iCount1 += 1     
    WEnd
    Return($aKeys)
EndFunc ;==>_GetOfficeKey

;===============================================================================
;
; Function Name:    _DecodeProductKey()
; Description:    decodes the PID to get the product key
; Parameter(s):  $BinaryDPID - the PID as stored in registry
; Requirement(s):   none
; Return Value(s):  Returns the decoded Windows/Office/Visual studio/etc. product key
; Author(s):        found this in the Forum, who made it?!
;
;===============================================================================
Func _DecodeProductKey($BinaryDPID)
    Local $bKey[15]
    Local $sKey[29]
    Local $Digits[24]
    Local $Value = 0
    Local $hi = 0
    Local $n = 0
    Local $i = 0
    Local $dlen = 29
    Local $slen = 15
    Local $Result
   
    $Digits = StringSplit("BCDFGHJKMPQRTVWXY2346789", "")
    $binaryDPID = StringMid($binaryDPID, 105, 30)
    For $i = 1 To 29 Step 2
        $bKey[Int($i / 2) ] = Dec(StringMid($binaryDPID, $i, 2))
    Next
   
    For $i = $dlen - 1 To 0 Step - 1
        If Mod(($i + 1), 6) = 0 Then
            $sKey[$i] = "-"
        Else
            $hi = 0
            For $n = $slen - 1 To 0 Step - 1
                $Value = BitOR(BitShift($hi, -8), $bKey[$n])
                $bKey[$n] = Int($Value / 24)
                $hi = Mod($Value, 24)
            Next
            $sKey[$i] = $Digits[$hi + 1]
        EndIf     
    Next
    For $i = 0 To 28
        $Result = $Result & $sKey[$i]
    Next   
    Return $Result
EndFunc ;==>_DecodeProductKey
Edited by unknownwarezorg

Share this post


Link to post
Share on other sites
PsaltyDS

Well I couldnt get that to work. Can someone look over my code?

Thanks in advanced

Please dont tell me what to put where... Im a noob coder. I took this and wanted to make it extract office 2007

; ...<snip>

;===============================================================================
;
; Function Name:    _GetOfficeKey()
; Description:    gets the Office DigitalProductID from the registry
; Parameter(s):  none
; Requirement(s):   none
; Return Value(s):  Returns the binary 2003 Office DigitalProductID as stored in the registry
; Author(s):        Danny35d
;
;===============================================================================

; ...<snip>

;===============================================================================
;
; Function Name:    _DecodeProductKey()
; Description:    decodes the PID to get the product key
; Parameter(s):  $BinaryDPID - the PID as stored in registry
; Requirement(s):   none
; Return Value(s):  Returns the decoded Windows/Office/Visual studio/etc. product key
; Author(s):        found this in the Forum, who made it?!
;
;===============================================================================

; ...<snip>
Cracking product keys is not supported on this forum. Take it elsewhere.

:mellow:


Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post


Link to post
Share on other sites
unknownwarezorg

I am not cracking, I have lost my case and need my key before i reformat.

Share this post


Link to post
Share on other sites
CounterCraft

(spoiler)I swear I recall something like this in other section of forum in this site... wonder what you can do to find that thread?(/spoiler)

*walks away*

Share this post


Link to post
Share on other sites
Mobius

I am not cracking, I have lost my case and need my key before i reformat.

Dude, if you were that desperate then you wouldn't be trying to write a script to do it,

You would just browse a warez site and download an office 07 key dump tool.

good attempt though man, keep at it!  :mellow:


wtfpl-badge-1.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×