Hmm..
How well can you read Java?
If the answer is > ok, take a look at JavaOp or JBLS and migrate what you can.
(<3 copy and pasting from newby)
EDIT -
Because I'm so totally full of myself and consider my skill in Java mediocre, instead of minimal as others would tell you (Hi LoRd!), I'm porting the hashing stuff from JBLS to VB right now.
EDIT -
'// Author: iago[x86]
'// Source: JavaOp
'// Ported to VB by Joe[x86]
'// This is the only function you will need to call. It will call the other functions on its own.
Public Function HashKey(clientToken As Long, serverToken As Long, key As String) As String
Select Case Len(key)
Case 13: Let HashKey = HashSCKey(clientToken, serverToken, key)
Case 16: Let HashKey = HashD2Key(clientToken, serverToken, key)
Case 26: Let HashKey = HashWAR3Key(clientToken, serverToken, key)
End Select
End Function
Private Function HashSCKey(clientToken As Long, serverToken As Long, key As String) As String
Dim SC As New SCKey
Dim Ret As New HashBuffer
Call Ret.AddDWORD(Len(key))
Call Ret.AddDWORD(SC.getProduct)
Call Ret.AddDWORD(SC.getVal1)
Call Ret.AddDWORD(0)
Dim HashedKey(0 To 4) As Long: Let HashedKey = SC.Hash(clientToken, serverToken)
Dim I As Byte: For I = 0 To 4 Step 1
Call Ret.AddDWORD(HashedKey(I))
Next I
Let HashD2Key = Ret.Ret
End Function
Private Function HashD2Key(clientToken As Long, serverToken As Long, key As String) As String
Dim D2 As New D2Key
Dim Ret As New HashBuffer
Call Ret.AddDWORD(Len(key))
Call Ret.AddDWORD(D2.getProduct)
Call Ret.AddDWORD(D2.getVal1)
Call Ret.AddDWORD(0)
Dim HashedKey(0 To 4) As Long: Let HashedKey = D2.Hash(clientToken, serverToken)
Dim I As Byte: For I = 0 To 4 Step 1
Call Ret.AddDWORD(HashedKey(I))
Next I
Let HashD2Key = Ret.Ret
End Function
Private Function HashWAR3Key(clientToken As Long, serverToken As Long, key As String) As String
Dim WC3 As New WAR3Key
Dim Ret As New HashBuffer
Call Ret.AddDWORD(Len(key))
Call Ret.AddDWORD(WC3.getProduct)
Call Ret.AddDWORD(WC3.getVal1)
Call Ret.AddDWORD(0)
Dim HashedKey(0 To 4) As Long: Let HashedKey = WC3.Hash(clientToken, serverToken)
Dim I As Byte: For I = 0 To 4 Step 1
Call Ret.AddDWORD(HashedKey(I))
Next I
Let HashWAR3Key = Ret.Ret
End Function
Now its time for the fun stuff!
EDIT -
I've lost interest, due to hunger. That should be a nice start. -sigh-
http://www.quikness.com/fool/JBLS/JBLS.zip