• Welcome to Valhalla Legends Archive.
 

Questions about a few B.net packet types for D2 V1.10

Started by Paul, December 04, 2003, 02:23 PM

Previous topic - Next topic

Paul

I tried looking in the BnetDocs section, but couldn't find anything. Does anyone know what 0x15 and 0x21 are used for? I notice these are constantly being sent to the server while parking in a channel. Some form of keepalive or something else?

Skywing

Quote from: Paul on December 04, 2003, 02:23 PM
I tried looking in the BnetDocs section, but couldn't find anything. Does anyone know what 0x15 and 0x21 are used for? I notice these are constantly being sent to the server while parking in a channel. Some form of keepalive or something else?
Those are related to the ad banner.

l)ragon

*^~·.,¸¸,.·´¯`·.,¸¸,.-·~^*ˆ¨¯¯¨ˆ*^~·.,l)ragon,.-·~^*ˆ¨¯¯¨ˆ*^~·.,¸¸,.·´¯`·.,¸¸,.-·~^*

Soar

here is some codes used in a native bnetd for D2 1.10,
all new packets' format from 1.09 to 1.10 are recoreded:

#define CLIENT_REALMLISTREQ_110      0x40ff
typedef struct
{
   t_bnet_header   h;
} t_client_realmlistreq_110 PACKED_ATTR();

#define SERVER_REALMLISTREPLY_110   0x40ff
typedef struct
{
   t_bnet_header   h;
   bn_int      unknown1;
   bn_int      count;
   /* realm entries */
} t_server_realmlistreply_110 PACKED_ATTR();
#define SERVER_REALMLISTREPLY_110_UNKNOWN1 0x00000000

typedef struct
{
   bn_int      u1;      /* always 1*/
   /* realm name */
   /* realm description */
} t_server_realmdata_110 PACKED_ATTR();

#define CLIENT_SETEMAILREQ      0x59ff
typedef struct
{
   t_bnet_header   h;
   /* email address */
} t_client_setemailreq PACKED_ATTR();

#define SERVER_SETEMAILREQ      0x59ff
/* send this packet to client before login ok packet will cause
client to enter input email screen */
typedef struct
{
   t_bnet_header   h;
} t_server_setemailreq PACKED_ATTR();

#define CLIENT_GETPASSWORDREQ      0x5aff
typedef struct
{
   t_bnet_header   h;
   /* account name */
   /* email address */
} t_client_getpasswordreq PACKED_ATTR();

#define CLIENT_CHANGEEMAILREQ      0x5bff
typedef struct
{
   t_bnet_header   h;
   /* account name */
   /* old email address */
   /* new email address */
} t_client_changeemailreq PACKED_ATTR();

#define CLIENT_MOTDREQ         0x46ff
typedef struct
{
   t_bnet_header h;
   bn_int        last_news_time;   /* date of the last news item the client has */
} t_client_motdreq PACKED_ATTR();

#define SERVER_MOTDREPLY      0x46ff
typedef struct
{
   t_bnet_header   h;
   bn_byte      msgtype;      /* we only saw "1" type so far */
   bn_int      curr_time;      /* as seen by the server */
   bn_int      first_news_time;   /* the oldest news item's timestamp */
   bn_int      timestamp;      /* the timestamp of this news item */
                  /* it is equal with the latest news item timestamp for
                  the welcome message */
   bn_int      timestamp2;      /* always equal with the timestamp except the
                  last packet which shows in the right panel */
   /* text */
} t_server_motdreply PACKED_ATTR();
#define SERVER_MOTDREPLY_MSGTYPE  0x01
#define SERVER_MOTDREPLY_WELCOME  0x00000000

/*
this packet is sent right after cdkey and version auth reply success and crashdump exist
0x0000: ff 5d 14 00 01 01 00 27   00 0a 01 05 00 00 c0 00    .].....'........
0x0010: 00 00 00 00                                          ....            
*/

#define CLIENT_CRASHDUMP      0x5dff
typedef struct
{
   t_bnet_header   h;
   /* crashdump file data */
   /* contains data like client version, exception code, code address */
} t_client_crashdump PACKED_ATTR();

Kp

Quote from: UserLoser. on December 13, 2003, 10:30 AMHere's what I use:

For 0x15, C->S

DWORD '68XI'
DWORD Product
DWORD Not sure what that is, so I use the version byte
DWORD Some sort of client key maybe?
'IX86', 'Product', ad cookie (same as the one you mentioned in 0x21; 0 if you haven't received an ad this connection), time (in seconds since the epoch (1/1/1970); returned by time(2))


Quote from: UserLoser. on December 13, 2003, 10:30 AM
For 0x21, C->S:

DWORD '68XI'
DWORD Product
DWORD Cookie from the first DWORD of 0x15 you last recieved from server.
WORD 0x00       - Not sure what this is, so I use 0x00

Actually, this is two strings (or it used to be); however, they're always empty now, so sending a 16 bit zero is correct (to be really accurate you'd send two empty strings, but 16 bits of zero is interpreted as two nulls, so it's effectively the same).
[19:20:23] (BotNet) <[vL]Kp> Any idiot can make a bot with CSB, and many do!

Soar

Quote from: UserLoser. on December 13, 2003, 10:17 AM
Crash Dump? 0x5d?  Is this real or is it just a PVPGN/BnetD type of thing?

I dunno what it is either, the bnetd I get to support D2 1.10 deals nothing to this received packet from client.