📄 bnet_protocol.h
字号:
#define SERVER_ICONREPLY 0x2dfftypedef struct{ t_bnet_header h; bn_long timestamp; /* file modification time? */ /* filename */} PACKED_ATTR() t_server_iconreply;/******************************************************//******************************************************/#define CLIENT_LADDERSEARCHREQ 0x2ffftypedef struct{ t_bnet_header h; bn_int clienttag; bn_int id; /* (AKA ladder type) 1==standard, 3==ironman */ bn_int type; /* (AKA ladder sort) */ /* player name */} PACKED_ATTR() t_client_laddersearchreq;#define CLIENT_LADDERSEARCHREQ_ID_STANDARD 0x00000001#define CLIENT_LADDERSEARCHREQ_ID_IRONMAN 0x00000003#define CLIENT_LADDERSEARCHREQ_TYPE_HIGHESTRATED 0x00000000#define CLIENT_LADDERSEARCHREQ_TYPE_MOSTWINS 0x00000002#define CLIENT_LADDERSEARCHREQ_TYPE_MOSTGAMES 0x00000003/******************************************************//******************************************************/#define SERVER_LADDERSEARCHREPLY 0x2ffftypedef struct /* FIXME: how does client know how many names? do we send separate replies for each name in the request? */{ t_bnet_header h; bn_int rank; /* 0 means 1st, etc */} PACKED_ATTR() t_server_laddersearchreply;#define SERVER_LADDERSEARCHREPLY_RANK_NONE 0xffffffff/******************************************************//******************************************************//* FF 30 1C 00 00 00 00 00 .0......32 37 34 34 37 37 32 39 31 34 38 32 38 00 63 6C 2744772914828.cl6F 75 64 00 oud.*/#define CLIENT_CDKEY 0x30fftypedef struct{ t_bnet_header h; bn_int spawn; /* FIXME: not sure if this is correct, but cdkey2 does it this way */ /* cd key */ /* owner name */ /* Was this always here? */} PACKED_ATTR() t_client_cdkey;#define CLIENT_CDKEY_UNKNOWN1 0x00000000/******************************************************//******************************************************//* FF 30 0E 00 01 00 00 00 .0......63 6C 6F 75 64 00 cloud.*/#define SERVER_CDKEYREPLY 0x30fftypedef struct{ t_bnet_header h; bn_int message; /* owner name */} PACKED_ATTR() t_server_cdkeyreply;#define SERVER_CDKEYREPLY_MESSAGE_OK 0x00000001#define SERVER_CDKEYREPLY_MESSAGE_BAD 0x00000002#define SERVER_CDKEYREPLY_MESSAGE_WRONGAPP 0x00000003#define SERVER_CDKEYREPLY_MESSAGE_ERROR 0x00000004 /* disabled */#define SERVER_CDKEYREPLY_MESSAGE_INUSE 0x00000005/* (any other value seems to correspond to ok) *//******************************************************//******************************************************//*FF 36 34 00 00 00 00 00 0D 00 00 00 01 00 00 00 .64.............B5 AE 23 00 50 E5 D5 C0 DB 55 1E 38 0A F5 58 B9 ..#.P....U.8..X.47 64 C6 C2 9F BB FF B8 81 E7 EB EC 1B 13 C6 38 Gd.............852 6F 62 00 Rob.FF 36 34 00 00 00 00 00 0D 00 00 00 01 00 00 00 .64.............7F D7 00 00 90 64 77 2F D7 5B 42 38 1F A1 A2 6F .....dw/.[B8...oE8 FA BE F8 B6 0B BA 0F CA 64 3A 17 14 56 83 AB .........d:..V..42 6F 62 00 Bob.FF 36 35 00 00 00 00 00 10 00 00 00 04 00 00 00 .65.............0D 43 03 00 7A 11 07 ED 7C 9E 1E 38 E5 87 8B 3B .C..z...|..8...;9C 19 91 D9 0D 10 FC C1 C0 86 8C 8D DA A4 45 0B ..............E.XX XX XX XX 00 XXXX.FF 36 34 00 00 00 00 00 10 00 00 00 04 00 00 00 .64.............70 F9 02 00 58 F9 B6 E6 38 49 5C 38 38 9C 31 E4 p...X...8I\88.1.1D 3D 40 05 66 AD 4C C8 1D 12 8E 49 9E 60 1A CB .=@.f.L....I.`..42 6F 62 00 Bob.*/#define CLIENT_CDKEY2 0x36fftypedef struct{ t_bnet_header h; bn_int spawn; bn_int keylen; /* without terminating NUL */ bn_int productid; bn_int keyvalue1; bn_int sessionkey; bn_int ticks; bn_int key_hash[5]; /* owner name */} PACKED_ATTR() t_client_cdkey2;#define CLIENT_CDKEY2_SPAWN_TRUE 0x00000001#define CLIENT_CDKEY2_SPAWN_FALSE 0x00000000/******************************************************//******************************************************//*From Diablo II 1.08? FF 42 43 00 AB 4C A4 3B .BC..L.;01 00 00 00 00 00 00 00 10 00 00 00 06 00 00 00 ................XX 60 12 00 00 00 00 00 5D 82 82 C4 F4 8F D0 91 X`......].......E1 5B AB 95 D9 EE EF 18 44 3E F1 C9 XX XX XX XX .[......D>..XXXXXX XX XX XX XX XX XX XX XX XX 00 XXXXXXXXXX.FF 42 44 00 17 78 42 77 01 00 00 00 00 00 00 00 .BD..xBw........10 00 00 00 06 00 00 00 XX F3 10 00 00 00 00 00 ........X.......A8 29 8B C4 41 BD 33 AB 74 4C 1F 1E 5C XX CA 83 .)..A.3.tL..\X..7F E5 36 14 XX XX XX XX XX XX XX XX XX XX XX XX ..6.XXXXXXXXXXXXXX XX XX 00 XXX.FF 42 44 00 C6 25 A1 3B 01 00 00 00 00 00 00 00 .BD..%.;........10 00 00 00 06 00 00 00 XX F3 10 00 00 00 00 00 ........X.......C4 3F FB 05 94 0C AC D4 3B 63 B1 90 E4 XX 53 B9 .?......;c...XS.70 C3 6F 2E XX XX XX XX XX XX XX XX XX XX XX XX p.o.XXXXXXXXXXXXXX XX XX 00 XXX.*/#define CLIENT_CDKEY3 0x42fftypedef struct{ t_bnet_header h; bn_int unknown1; /* FIXME: some kind of salt? */ bn_int unknown2; /* 01 00 00 00 */ bn_int unknown3; /* 00 00 00 00 */ bn_int unknown4; /* 10 00 00 00 */ bn_int unknown5; /* 06 00 00 00 */ bn_int unknown6; /* FIXME: value1? */ bn_int unknown7; /* 00 00 00 00 */ bn_int key_hash[5]; /* owner name */} PACKED_ATTR() t_client_cdkey3;#define CLIENT_CDKEY3_UNKNOWN1 0xffffffff#define CLIENT_CDKEY3_UNKNOWN2 0x00000001#define CLIENT_CDKEY3_UNKNOWN3 0x00000000#define CLIENT_CDKEY3_UNKNOWN4 0x00000010#define CLIENT_CDKEY3_UNKNOWN5 0x00000006#define CLIENT_CDKEY3_UNKNOWN6 0x00123456#define CLIENT_CDKEY3_UNKNOWN7 0x00000000/******************************************************//******************************************************//* FF 42 09 00 00 00 00 00 .B......00 FF 42 09 00 00 00 00 00 00 .B.......*/#define SERVER_CDKEYREPLY3 0x42fftypedef struct{ t_bnet_header h; bn_int message; /* owner name */ /* FIXME: or error message, or ... */} PACKED_ATTR() t_server_cdkeyreply3;#define SERVER_CDKEYREPLY3_MESSAGE_OK 0x00000000/******************************************************//******************************************************//*FF 34 0D 00 00 00 00 00 00 00 00 00 00 .4...........*/#define CLIENT_REALMLISTREQ 0x34fftypedef struct{ t_bnet_header h; bn_int unknown1; bn_int unknown2;} PACKED_ATTR() t_client_realmlistreq;/******************************************************//******************************************************//*0000: FF 40 04 00 .@.. */#define CLIENT_REALMLISTREQ_110 0x40fftypedef struct{ t_bnet_header h;} PACKED_ATTR() t_client_realmlistreq_110;/******************************************************//******************************************************//*FF 34 5E 00 00 00 00 00 01 00 00 00 00 00 00 C0 .4^.............00 00 00 00 00 00 00 00 00 00 00 00 10 82 01 00 ................FF FF FF FF 00 00 00 00 42 65 74 61 57 65 73 74 ........BetaWest00 50 6C 65 61 73 65 20 73 65 6C 65 63 74 20 74 .Please select t68 69 73 20 61 73 20 79 6F 75 72 20 72 65 61 6C his as your real6D 20 64 75 72 69 6E 67 20 62 65 74 61 00 m during beta.ff 34 5e 00 00 00 00 00 01 00 00 00 00 00 00 c0 .4^.............00 00 00 00 00 00 00 00 00 00 00 00 bc 95 01 00 ................ff ff ff ff 00 00 00 00 42 65 74 61 57 65 73 74 ........BetaWest00 50 6c 65 61 73 65 20 73 65 6c 65 63 74 20 74 .Please select t68 69 73 20 61 73 20 79 6f 75 72 20 72 65 61 6c his as your real6d 20 64 75 72 69 6e 67 20 62 65 74 61 00 m during beta.ff 34 5e 00 00 00 00 00 01 00 00 00 00 00 00 c0 .4^.............00 00 00 00 00 00 00 00 00 00 00 00 c8 99 01 00 ................ff ff ff ff 00 00 00 00 42 65 74 61 57 65 73 74 ........BetaWest00 50 6c 65 61 73 65 20 73 65 6c 65 63 74 20 74 .Please select t68 69 73 20 61 73 20 79 6f 75 72 20 72 65 61 6c his as your real6d 20 64 75 72 69 6e 67 20 62 65 74 61 00 m during beta.from bnetd-0.3.23pre18 to Diablo II 1.03 FF 34 4B 00 00 00 00 00 01 00 00 00 00 00 .4K........... 00 C0 00 00 00 00 00 00 00 00 00 00 00 00 10 82 ................ 01 00 FF FF FF FF 00 00 00 00 51 61 72 61 74 68 ..........Qarath 52 65 61 6C 6D 00 54 48 45 20 43 68 6F 69 63 65 Realm.THE Choice 20 46 6F 72 20 4E 6F 77 28 74 6D 29 00 For Now(tm).*/#define SERVER_REALMLISTREPLY 0x34ff /* realm list reply? */typedef struct{ t_bnet_header h; bn_int unknown1; bn_int count; /* realm entries */} PACKED_ATTR() t_server_realmlistreply;#define SERVER_REALMLISTREPLY_UNKNOWN1 0x00000000typedef struct{ bn_int unknown3; bn_int unknown4; bn_int unknown5; bn_int unknown6; bn_int unknown7; /* this one is always different... 00 01 XX XX.. what is it? */ bn_int unknown8; bn_int unknown9; /* realm name */ /* realm description */} PACKED_ATTR() t_server_realmlistreply_data;#define SERVER_REALMLISTREPLY_DATA_UNKNOWN3 0xc0000000#define SERVER_REALMLISTREPLY_DATA_UNKNOWN4 0x00000000#define SERVER_REALMLISTREPLY_DATA_UNKNOWN5 0x00000000#define SERVER_REALMLISTREPLY_DATA_UNKNOWN6 0x00000000#define SERVER_REALMLISTREPLY_DATA_UNKNOWN7 0x00018210 /* 98832 or 1;33296 */#define SERVER_REALMLISTREPLY_DATA_UNKNOWN8 0xffffffff#define SERVER_REALMLISTREPLY_DATA_UNKNOWN9 0x00000000/******************************************************//******************************************************//*# 44 packet from server: type=0x40ff(unknown) length=40 class=bnet0000: FF 40 28 00 00 00 00 00 01 00 00 00 01 00 00 00 .@(.............0010: 45 75 72 6F 70 65 00 52 65 61 6C 6D 20 66 6F 72 Europe.Realm for0020: 20 45 75 72 6F 70 65 00 Europe. */#define SERVER_REALMLISTREPLY_110 0x40fftypedef struct{ t_bnet_header h; bn_int unknown1; bn_int count; /* realm entries */} PACKED_ATTR() t_server_realmlistreply_110;#define SERVER_REALMLISTREPLY_110_UNKNOWN1 0x00000000typedef struct{ bn_int unknown1; /* realm name */ /* realm description */} PACKED_ATTR() t_server_realmlistreply_110_data;#define SERVER_REALMLISTREPLY_110_DATA_UNKNOWN1 0x00000001#define CLIENT_PROFILEREQ 0x35fftypedef struct /* join realm request */{ t_bnet_header h; bn_int count; /* player name */} PACKED_ATTR() t_client_profilereq;#define SERVER_PROFILEREPLY 0x35fftypedef struct /* realm join reply? */{ t_bnet_header h; bn_int count; /* same as in req */ bn_byte fail; /* != 0 if a problem occured */ /* profile-description */ /* profile-location */ /* bn_int clanTAG */} PACKED_ATTR() t_server_profilereply;#define CLIENT_UNKNOWN_37 0x37fftypedef struct /* character list request, character list upload? */{ t_bnet_header h; bn_int opencount; /* Number of OPEN characters on user's machine! */ /* Always zero for "closed" connections. */ /* unknown2 */ /* subsequent blocks of t_d2char_info or something */ /* similar, so server could read this list and */ /* include in the 0x37ff reply as a choice (this */ /* makes sense cuz the server does NOT store open */ /* character details - this also explains why */ /* unknown1 is always 0 in the beta, and the 0x00 */ /* of unknown2 acts as a EOF when client read the */ /* t_d2char_info structures */} PACKED_ATTR() t_client_unknown_37;/******************************************************//******************************************************//*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -