Automating a Wii U utility...

Discussion in 'Wii U - Hacking & Backup Loaders' started by mixelpixx, Mar 17, 2015.

  1. mixelpixx
    OP

    mixelpixx Advanced Member

    Newcomer
    85
    65
    Aug 10, 2014
    United States
    y0uR m0mz b0x
    Howdy,

    Since the Wii U is progressing nicely I thought maybe getting a couple of command line tools into a more friendly interface might be something fun to do.

    So we have DiscU (@ 2.1b) I thought the first thing would be to convert Hex strings to binary and write them to a file, eliminating doing this manually. I am working in VB / VS 2013, writing code that should be compatible back to 2010. SO far this is a form with a button ( I have more completed

    **There will be no posting of actual keys to anything in this thread**

    Code:
    Public Function Hex2ByteArr(ByVal sHex As String) As Byte()
            Dim n As Long
            Dim nCount As Long
            Dim bArr() As Byte
            'First of all, make sure the length of the hex string is even, if it is not then
            'put a "0" at the beginning
            nCount = Len(sHex)
            If (nCount And 1) = 1 Then
                sHex = "0" & sHex
                nCount = nCount + 1
            End If
            'ReDim the Byte array
            ReDim bArr(nCount \ 2 - 1) 'we subtract 1 since the array is zero based
            For n = 1 To nCount Step 2
                'Convert the hex numbers into decimal values and store them in the byte array
                bArr((n - 1) \ 2) = CByte("&H" & Mid$(sHex, n, 2))
            Next
            'Return the array
            Hex2ByteArr = bArr
        End Function
     
     
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Dim bArr() As Byte
     
            Dim hFile As Integer
     
            bArr = Hex2ByteArr("027C9557648A1A996D25BFCC40F63856")
            'You should of course pass the whole hex string to the function above.
            '--
            'Save it to a file
            hFile = FreeFile()
     
            Using writer As BinaryWriter = New BinaryWriter(File.Open("diskkey.bin", FileMode.Create))
                ' Write each integer.
                For Each value As Int32 In bArr
                    writer.Write(value)
                Next
            End Using
     
     
        End Sub

    Only issue is how it is creating the binary file. Its been a while so I am sure the mistake is simple, at first I couldn't get it to handle a hexstring that large, now it will write file but it is padding like 4 0's between.

    Anyone know where I went wrong?

    (also I will include the source (- naughty bits) when this tiny issue gets solved.)
     
    Margen67, dojafoja and WiiuGold like this.
  2. yahoo

    yahoo G͝B͢A͜t͞em҉p̡ R̨e͢g̷ul̨aŗ

    Member
    345
    239
    Aug 4, 2014
    United States
    At first glance it looks like there's potential for off-by-one errors. Do you have any unit tests? Have you tried stepping through your code with a debugger to watch what is happening each loop of the Hex2ByteArray function.
     
    mixelpixx likes this.
  3. The Redeemer

    The Redeemer Member

    Newcomer
    22
    11
    Mar 20, 2014
    France
    I could help you with Visual Basic, but I don't know what diskkey.bin should look like :/

    this is the result of your code:
    Code:
    02 00 00 00 7C 00 00 00 95 00 00 00 57 00 00 00 64 00 00 00 8A 00 00 00 1A 00 00 00 99 00 00 00 6D 00 00 00 25 00 00 00 BF 00 00 00 CC 00 00 00 40 00 00 00 F6 00 00 00 38 00 00 00 56 00 00 00
    it is supposed to be : ?
    Code:
    02 00 7C 00 95 00 57 00 64 00 8A 00 1A 00 99 00 6D 00 25 00 BF 00 CC 00 40 00 F6 00 38 00 56 00
    or ?
    Code:
    02 7C 95 57 64 8A 1A 99 6D 25 BF CC 40 F6 38 56
     
    mixelpixx likes this.
  4. mixelpixx
    OP

    mixelpixx Advanced Member

    Newcomer
    85
    65
    Aug 10, 2014
    United States
    y0uR m0mz b0x
    The bottom is what i am looking for, no padding.
     
  5. The Redeemer

    The Redeemer Member

    Newcomer
    22
    11
    Mar 20, 2014
    France
    Code:
            Using writer As BinaryWriter = New BinaryWriter(File.Open("diskkey.bin", FileMode.Create))
                writer.Write(bArr)
            End Using
    ;)
     
    mixelpixx likes this.
  6. Sammi Husky

    Sammi Husky GBAtemp Fan

    Member
    311
    284
    Jul 6, 2014
    United States
    EDIT:

    EDIT:

    Or you can do this. Ninja'd lol


    Change Int32 here in Button1_Click() to byte. That should fix the problemo. The reason it was doing that was just because it's treating (and subsequently writing) the data you're accessing in the array as a 32 bit integer, rather than a single byte like you wanted it to. :)
     
    Margen67, The Redeemer and mixelpixx like this.
  7. The Redeemer

    The Redeemer Member

    Newcomer
    22
    11
    Mar 20, 2014
    France
    It's shorter to change
    Code:
            Using writer As BinaryWriter = New BinaryWriter(File.Open("diskkey.bin", FileMode.Create))
                ' Write each integer.
                For Each value As Int32 In bArr
                    writer.Write(value)
                Next
            End Using
    to
    Code:
            Using writer As BinaryWriter = New BinaryWriter(File.Open("diskkey.bin", FileMode.Create))
                writer.Write(bArr)
            End Using
    but Yes,
    Code:
    For Each value As Byte In bArr
    will work as well.
     
    mixelpixx likes this.
  8. Sammi Husky

    Sammi Husky GBAtemp Fan

    Member
    311
    284
    Jul 6, 2014
    United States
    Indeed it is. You posted your answer right before mine lol. I edited my post to reflect that. In any case, hope it helps! Cheers.
     
    The Redeemer likes this.
  9. mixelpixx
    OP

    mixelpixx Advanced Member

    Newcomer
    85
    65
    Aug 10, 2014
    United States
    y0uR m0mz b0x
    Ok. You guys bit. Thank you. I will post the whole thing this afternoon, and what I am aiming to do, want to add DiscU, maybe some BFRES utilities. Since I was unable to get the source for Disc U I am just wrapping around it, generating a diskkey.bin (and the other key) for whatever title is selected.
     
  10. mixelpixx
    OP

    mixelpixx Advanced Member

    Newcomer
    85
    65
    Aug 10, 2014
    United States
    y0uR m0mz b0x
    This is being worked on still, by a few here. Anyone else interested in working on it just PM me.


    [​IMG]
     
    Margen67 likes this.
  11. mixelpixx
    OP

    mixelpixx Advanced Member

    Newcomer
    85
    65
    Aug 10, 2014
    United States
    y0uR m0mz b0x
    you can try it out, and give feedback if you so desire. I would like to add a few more items to it, like being able to edit the games list, folder renaming, etc.

    Code:
    http://www.ps3hax.net/showthread.php?t=92880
     
  12. The Redeemer

    The Redeemer Member

    Newcomer
    22
    11
    Mar 20, 2014
    France
  13. mixelpixx
    OP

    mixelpixx Advanced Member

    Newcomer
    85
    65
    Aug 10, 2014
    United States
    y0uR m0mz b0x