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 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.
You beat me to it 8(
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();
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).
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.