• Welcome to Valhalla Legends Archive.
 

VB: BNLS_CDKEY_EX

Started by shadypalm88, October 24, 2003, 07:53 PM

Previous topic - Next topic

shadypalm88

BNLS closes my connection with no response after sending BNLS_CDKEY_EX, so I must be formatting the packet wrong, sending invalid data, or something of the sort.  I'm hoping that someone can tell me where the fault is.

Here's an example BNLS_CDKEY_EX packet generated by my bot that causes the BNLS server to disconnect:1B 00 0C 00 00 00 00 01 01 E6 01 7D 4F (CD-Key Data: 13 bytes) 00
Here is the code being used to generate the packet (B is a PacketBuffer object):Case SID_AUTH_INFO:
   'BotEvent ERR_DEBUG, "Recieved SID_AUTH_INFO:" & StrToHex(strData)
   f = 0
   PKS(f).Type = PKT_BYTE 'StartPacket
   f = f + 1
   PKS(f).Type = PKT_BYTE 'B.Net Packet Header
   f = f + 1

   PKS(f).Type = PKT_WORD 'Packet Length
   IncI f
   PKS(f).Type = PKT_DWORD 'Logon Type
   f = f + 1
   PKS(f).Type = PKT_DWORD 'Server Token
   f = f + 1
   PKS(f).Type = PKT_DWORD 'UDPValue
   f = f + 1
   PKS(f).Type = PKT_FILETIME 'MPQ Filetime
   f = f + 1
   PKS(f).Type = PKT_STRING 'IX86ver filename
   PKS(f).ReadUntil = Chr(0) 'Null-terminator
   f = f + 1
   PKS(f).Type = PKT_STRING 'ValueString
   PKS(f).ReadUntil = Chr(0) 'Null-terminator
   f = f + 1
   DividePacket PKD, PKS, f, strData
   ServerToken = PKD(4).lngData
   'MsgBox Val(Mid$(strData, 9, 12)), vbInformation
   With B
       .InsertDWORD &H0
       If (BotData.Client = "D2XP" Or BotData.Client = "W3XP") Then
           .InsertBYTE &H2
       Else
           .InsertBYTE &H1
       End If
       .InsertBYTE &H1
       'CopyMemory DPData(i).lngData, ByVal Mid$(Data, CurPos, 4), 4
       'CopyMemory lngWork, Mid$(strData, 9, 12), 4
       .InsertDWORD_Raw CStr(PKD(4).Data)
       .InsertNTString BotData.CDKey
       If (BotData.Client = "D2XP" Or BotData.Client = "W3XP") Then _
           .InsertNTString BotData.ExCDKey
       .sendPacket BNLS_CDKEY_EX, BNLSSocket, True
   End With

Soul Taker

Well the format is
Quote(DWORD) Cookie. This value has no special meaning to the server and will simply be echoed to the client in the response.
(BYTE) Amount of CD-keys to encrypt. Must be between 1 and 32.
(DWORD) Flags.*
(DWORD or DWORDs) Server session key(s), depending on the flags.
(Optional DWORD or DWORDs) Client session key(s), depending on the flags.
(String or strings) CD-keys. No dashes or spaces. The client can use multiple types of CD-keys in the same packet.
I see you inserting a DWORD for the cookie, a byte for the amount of keys to encrypt, but then a byte for the flags, when it should be a DWORD.

shadypalm88

Well, I guess that would do it, eh?   ::)