Valhalla Legends Forums Archive | Battle.net Bot Development | Questions about a few B.net packet types for D2 V1.10

AuthorMessageTime
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?
December 4, 2003, 8:23 PM
Skywing
[quote author=Paul link=board=17;threadid=4076;start=0#msg33650 date=1070569410]
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?
[/quote]
Those are related to the ad banner.
December 4, 2003, 9:09 PM
dRAgoN
You beat me to it 8(
December 4, 2003, 9:11 PM
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:
[code]
#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();
[/code]
December 13, 2003, 9:47 AM
Kp
[quote author=UserLoser. link=board=17;threadid=4076;start=0#msg35131 date=1071333021]Here'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?
[/quote]
'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 author=UserLoser. link=board=17;threadid=4076;start=0#msg35131 date=1071333021]
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[/quote]

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).
December 13, 2003, 7:58 PM
Soar
[quote author=UserLoser. link=board=17;threadid=4076;start=0#msg35127 date=1071332234]
Crash Dump? 0x5d? Is this real or is it just a PVPGN/BnetD type of thing?
[/quote]

I dunno what it is either, the bnetd I get to support D2 1.10 deals nothing to this received packet from client.
December 14, 2003, 12:48 PM

Search