Any way to display raw REG_BINARY data as text?

Discussion in 'Mixed Languages' started by Muerto, Apr 25, 2012.

Tags:
  1. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #1 Muerto, Apr 25, 2012
    Last edited: Jan 12, 2021
    ...
     
  2. stevemk14ebr

    stevemk14ebr MDL Senior Member

    Jun 23, 2010
    267
    48
    10
    i have been trying to solve this for about an hr and its really stumped me, can u post ur process of converting to hex so i can have more to work with
     
  3. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    #3 Alphawaves, Apr 26, 2012
    Last edited by a moderator: Apr 20, 2017
    Hi, this should work:
    Code:
     Public Function GetRD(ByVal Path As String, ByVal Value As String) As String
            Dim str As String = String.Empty
            Dim Format As String = String.Empty
            Dim Data As Object = Registry.GetValue(Path, Value, Nothing)
            If Data Is Nothing Then Return "N/A"
            For j As Integer = LBound(Data) To UBound(Data)
                str = str & Hex(Data(j))
            Next
            str = BitConverter.ToString(Data).Replace("-", "")
            str = Regex.Replace(str, "(.{2})", "$0 ")
            For i As Integer = 0 To str.Length - 1 Step 1
                If i > 0 And i Mod 24 = 0 Then
                    Format &= Environment.NewLine
                End If
                Format &= str(i).ToString
            Next
            Return Format
        End Function
    Usage:
    Code:
    TextBox1.Text = GetRD("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion", "DigitalProductId")
    ;)
     
  4. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #4 Muerto, Apr 26, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  5. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #5 Muerto, Apr 26, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  6. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    #6 Alphawaves, Apr 26, 2012
    Last edited by a moderator: Apr 20, 2017
    Ok didn't really need the values, this new function has values removed..

    Code:
     Public Function GetRD(ByVal Path As String, ByVal Value As String) As String
            Dim str As String = String.Empty
            Dim Format As String = String.Empty
            Dim Data As Object = Registry.GetValue(Path, Value, Nothing)
            If Data Is Nothing Then Return "N/A"
            For j As Integer = LBound(Data) To UBound(Data)
                str = str & Hex(Data(j))
            Next
            str = BitConverter.ToString(Data).Replace("-", "")
            str = Regex.Replace(str, "(.{2})", "$0 ")
            For i As Integer = 0 To str.Length - 1 Step 1
                If i > 0 And i Mod 24 = 0 Then
                    Format &= Environment.NewLine
                End If
                Format &= str(i).ToString
            Next
            Return Format
        End Function
     
  7. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #7 Muerto, Apr 27, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  8. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    Well im always here if you need help.;)
     
  9. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #9 Muerto, Apr 27, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  10. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    If you want the right side data let me know..:D;)
     
  11. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #11 Muerto, Apr 27, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  12. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    #12 Alphawaves, Apr 27, 2012
    Last edited by a moderator: Apr 20, 2017
    Not had time today to look at this, i do however have a vbscript to display it in messagebox (should be simple enough to convert).
    Code:
    Const HKLM = &H80000002 
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    sKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
    sValueName = "DigitalProductId"
    oReg.GetBinaryValue HKLM, sKeyPath, sValueName, sValue
    sContents = ""
    For i = 0 To UBound(sValue)
      vByte = sValue(i)
      If vByte <> 0 And vByte <> "" Then
        sContents = sContents & Chr(vByte)
      End If
    Next
    WScript.Echo sContents
    Ill have a look in a bit, have to go im real busy today..
    :eek: ;)
     
  13. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #13 Muerto, Apr 29, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  14. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    #14 Alphawaves, Apr 29, 2012
    Last edited: Apr 29, 2012
    lol i got the correct function here but only diplaying first char..:eek: :laie:

    encoding should be utf7 or default, all others display incorrectly

    Ill aslo have a look at converting the vbscript.

    Ill try again when im soba..:rofl:
     
  15. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #15 Muerto, Apr 29, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  16. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    #16 Alphawaves, Apr 29, 2012
    Last edited by a moderator: Apr 20, 2017
    Ok here is code :
    Code:
     Public Function PID()
            Dim Reg As Object = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion", False)
            Dim Data As Byte()
            Dim str As String = String.Empty
            Data = Reg.GetValue("DigitalProductId")
            Reg.Close()
            For j As Integer = 0 To UBound(Data)
                Dim byt As Byte = Data(j)
                If byt = 0 Then
                    byt = &H2E
                End If
                str = str & Chr(byt)
            Next
            str = Regex.Replace(str, "(.{1})", "$0 ")
            Return str
        End Function
    Usage:
    Code:
    TextBox1.Text = PID()
     
  17. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #17 Muerto, Apr 29, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...
     
  18. Alphawaves

    Alphawaves Super Moderator/Developer
    Staff Member

    Aug 11, 2008
    6,223
    22,281
    210
    #18 Alphawaves, Apr 29, 2012
    Last edited by a moderator: Apr 20, 2017
    Cool dave, you dont need this line:
    Code:
    Dim Format As String = String.Empty
     
  19. Muerto

    Muerto MDL Debugger

    Mar 7, 2012
    1,858
    2,115
    60
    #19 Muerto, Apr 29, 2012
    Last edited: Jan 12, 2021
    (OP)
    ...