BNCS messages

BNCS (Battle.net Chat Server) is the protocol every Classic game uses for its main connection: logging on, chat, friends, clans and the game list. Each message has a one-byte ID and is written SID_NAME.

Every message is framed as FF, the message ID, and a 2-byte length that includes the 4-byte header. See Connecting to a Classic server for framing and data types.

Jump to: All messages · StarCraft · Diablo · Warcraft II: Battle.net Edition · Diablo II · Warcraft III

All messages

IDNameDirectionUsed bySummary
0x00 SID_NULL C → S
S → C
STARSEXPJSTRSSHRW2BNDRTLDSHRD2DVD2XPWAR3W3XP Keep-alive. An empty message both sides may send so an idle connection stays open.
0x05 SID_CLIENTID C → S
S → C
SSHRJSTRDRTLDSHRW2BN The client's first message in the oldest logon: registration numbers and the computer's LAN names.
0x06 SID_STARTVERSIONING C → S
S → C
SSHRJSTRDRTLDSHRW2BN Starts the version check in the older logon: the client names its game, and the server says which check to run.
0x07 SID_REPORTVERSION C → S
S → C
SSHRJSTRDRTLDSHRW2BN Finishes the version check in the older logon: the client reports its EXE hash, and the server accepts or rejects it.
0x0A SID_ENTERCHAT C → S
S → C
STARSEXPJSTRSSHRW2BNDRTLDSHRD2DVD2XPWAR3W3XP Moves a logged-on client into chat and tells it the name it will appear under.
0x0B SID_GETCHANNELLIST C → S
S → C
STARSEXPJSTRSSHRW2BNDRTLDSHRD2DVD2XPWAR3W3XP Asks for the list of public channels shown in the client's channel picker.
0x0C SID_JOINCHANNEL C → S STARSEXPJSTRSSHRW2BNDRTLDSHRD2DVD2XPWAR3W3XP Joins a chat channel.
0x0E SID_CHATCOMMAND C → S STARSEXPJSTRSSHRW2BNDRTLDSHRD2DVD2XPWAR3W3XP Sends a chat message or a slash command such as /whisper or /join.
0x0F SID_CHATEVENT S → C STARSEXPJSTRSSHRW2BNDRTLDSHRD2DVD2XPWAR3W3XP Everything that happens in chat: joins, leaves, messages, whispers and server notices.
0x12 SID_LOCALEINFO C → S DRTLDSHRW2BNSSHRJSTR The client's clock, time zone, language and country.
0x14 SID_UDPPINGRESPONSE C → S STARSEXPSSHRJSTRDRTLDSHRW2BN Tells the server the UDP test worked, by echoing the code the server sent over UDP.
0x1D SID_LOGONCHALLENGEEX S → C DRTLDSHRW2BN Gives the client the UDP code and the server token for this session.
0x1E SID_CLIENTID2 C → S DRTLDSHRW2BN A newer form of SID_CLIENTID, sent first by Diablo and Warcraft II.
0x25 SID_PING C → S
S → C
STARSEXPJSTRSSHRW2BNDRTLDSHRD2DVD2XPWAR3W3XP Measures latency. The server sends a value and the client sends the same value back.
0x28 SID_LOGONCHALLENGE S → C SSHRJSTR Gives the client the server token for this session, without a UDP code.
0x29 SID_LOGONRESPONSE C → S
S → C
SSHRJSTRDRTLDSHRW2BN Logs on to an account in the older logon. Same proof as SID_LOGONRESPONSE2, but a simpler reply.
0x2A SID_CREATEACCOUNT C → S
S → C
SSHRJSTRDRTLDSHRW2BN Creates an account in the older logon. Same request as SID_CREATEACCOUNT2, but the reply is only success or failure.
0x2B SID_SYSTEMINFO C → S SSHRJSTR The client's hardware: processors, memory and free disk space.
0x30 SID_CDKEY C → S
S → C
JSTR Sends a 13-character CD key unhashed. Only StarCraft Japanese used it.
0x36 SID_CDKEY2 C → S
S → C
W2BN Sends a hashed CD key in the older logon. Warcraft II uses it.
0x3A SID_LOGONRESPONSE2 C → S
S → C
STARSEXPD2DVD2XP Logs on to an account with a salted X-SHA-1 password proof.
0x3D SID_CREATEACCOUNT2 C → S
S → C
STARSEXPD2DVD2XP Creates an account using an X-SHA-1 password hash.
0x50 SID_AUTH_INFO C → S
S → C
STARSEXPD2DVD2XPWAR3W3XP The client names its game, platform and version. The server replies with a session token and the version check to run.
0x51 SID_AUTH_CHECK C → S
S → C
STARSEXPD2DVD2XPWAR3W3XP The client proves its game version and CD keys. The server accepts or rejects them.

STARSEXPJSTRSSHR StarCraft

Logon sequence: StarCraft and Brood War: logon to chat · StarCraft Shareware and StarCraft Japanese: logon to chat

IDNameDirectionUsed bySummary
0x00 SID_NULL C → S
S → C
STARSEXPJSTRSSHR Keep-alive. An empty message both sides may send so an idle connection stays open.
0x05 SID_CLIENTID C → S
S → C
SSHRJSTR The client's first message in the oldest logon: registration numbers and the computer's LAN names.
0x06 SID_STARTVERSIONING C → S
S → C
SSHRJSTR Starts the version check in the older logon: the client names its game, and the server says which check to run.
0x07 SID_REPORTVERSION C → S
S → C
SSHRJSTR Finishes the version check in the older logon: the client reports its EXE hash, and the server accepts or rejects it.
0x0A SID_ENTERCHAT C → S
S → C
STARSEXPJSTRSSHR Moves a logged-on client into chat and tells it the name it will appear under.
0x0B SID_GETCHANNELLIST C → S
S → C
STARSEXPJSTRSSHR Asks for the list of public channels shown in the client's channel picker.
0x0C SID_JOINCHANNEL C → S STARSEXPJSTRSSHR Joins a chat channel.
0x0E SID_CHATCOMMAND C → S STARSEXPJSTRSSHR Sends a chat message or a slash command such as /whisper or /join.
0x0F SID_CHATEVENT S → C STARSEXPJSTRSSHR Everything that happens in chat: joins, leaves, messages, whispers and server notices.
0x12 SID_LOCALEINFO C → S SSHRJSTR The client's clock, time zone, language and country.
0x14 SID_UDPPINGRESPONSE C → S STARSEXPSSHRJSTR Tells the server the UDP test worked, by echoing the code the server sent over UDP.
0x25 SID_PING C → S
S → C
STARSEXPJSTRSSHR Measures latency. The server sends a value and the client sends the same value back.
0x28 SID_LOGONCHALLENGE S → C SSHRJSTR Gives the client the server token for this session, without a UDP code.
0x29 SID_LOGONRESPONSE C → S
S → C
SSHRJSTR Logs on to an account in the older logon. Same proof as SID_LOGONRESPONSE2, but a simpler reply.
0x2A SID_CREATEACCOUNT C → S
S → C
SSHRJSTR Creates an account in the older logon. Same request as SID_CREATEACCOUNT2, but the reply is only success or failure.
0x2B SID_SYSTEMINFO C → S SSHRJSTR The client's hardware: processors, memory and free disk space.
0x30 SID_CDKEY C → S
S → C
JSTR Sends a 13-character CD key unhashed. Only StarCraft Japanese used it.
0x3A SID_LOGONRESPONSE2 C → S
S → C
STARSEXP Logs on to an account with a salted X-SHA-1 password proof.
0x3D SID_CREATEACCOUNT2 C → S
S → C
STARSEXP Creates an account using an X-SHA-1 password hash.
0x50 SID_AUTH_INFO C → S
S → C
STARSEXP The client names its game, platform and version. The server replies with a session token and the version check to run.
0x51 SID_AUTH_CHECK C → S
S → C
STARSEXP The client proves its game version and CD keys. The server accepts or rejects them.

DRTLDSHR Diablo

Logon sequence: Diablo: logon to chat

IDNameDirectionUsed bySummary
0x00 SID_NULL C → S
S → C
DRTLDSHR Keep-alive. An empty message both sides may send so an idle connection stays open.
0x05 SID_CLIENTID C → S
S → C
DRTLDSHR The client's first message in the oldest logon: registration numbers and the computer's LAN names.
0x06 SID_STARTVERSIONING C → S
S → C
DRTLDSHR Starts the version check in the older logon: the client names its game, and the server says which check to run.
0x07 SID_REPORTVERSION C → S
S → C
DRTLDSHR Finishes the version check in the older logon: the client reports its EXE hash, and the server accepts or rejects it.
0x0A SID_ENTERCHAT C → S
S → C
DRTLDSHR Moves a logged-on client into chat and tells it the name it will appear under.
0x0B SID_GETCHANNELLIST C → S
S → C
DRTLDSHR Asks for the list of public channels shown in the client's channel picker.
0x0C SID_JOINCHANNEL C → S DRTLDSHR Joins a chat channel.
0x0E SID_CHATCOMMAND C → S DRTLDSHR Sends a chat message or a slash command such as /whisper or /join.
0x0F SID_CHATEVENT S → C DRTLDSHR Everything that happens in chat: joins, leaves, messages, whispers and server notices.
0x12 SID_LOCALEINFO C → S DRTLDSHR The client's clock, time zone, language and country.
0x14 SID_UDPPINGRESPONSE C → S DRTLDSHR Tells the server the UDP test worked, by echoing the code the server sent over UDP.
0x1D SID_LOGONCHALLENGEEX S → C DRTLDSHR Gives the client the UDP code and the server token for this session.
0x1E SID_CLIENTID2 C → S DRTLDSHR A newer form of SID_CLIENTID, sent first by Diablo and Warcraft II.
0x25 SID_PING C → S
S → C
DRTLDSHR Measures latency. The server sends a value and the client sends the same value back.
0x29 SID_LOGONRESPONSE C → S
S → C
DRTLDSHR Logs on to an account in the older logon. Same proof as SID_LOGONRESPONSE2, but a simpler reply.
0x2A SID_CREATEACCOUNT C → S
S → C
DRTLDSHR Creates an account in the older logon. Same request as SID_CREATEACCOUNT2, but the reply is only success or failure.

W2BN Warcraft II: Battle.net Edition

Logon sequence: Warcraft II: Battle.net Edition: logon to chat

IDNameDirectionUsed bySummary
0x00 SID_NULL C → S
S → C
W2BN Keep-alive. An empty message both sides may send so an idle connection stays open.
0x05 SID_CLIENTID C → S
S → C
W2BN The client's first message in the oldest logon: registration numbers and the computer's LAN names.
0x06 SID_STARTVERSIONING C → S
S → C
W2BN Starts the version check in the older logon: the client names its game, and the server says which check to run.
0x07 SID_REPORTVERSION C → S
S → C
W2BN Finishes the version check in the older logon: the client reports its EXE hash, and the server accepts or rejects it.
0x0A SID_ENTERCHAT C → S
S → C
W2BN Moves a logged-on client into chat and tells it the name it will appear under.
0x0B SID_GETCHANNELLIST C → S
S → C
W2BN Asks for the list of public channels shown in the client's channel picker.
0x0C SID_JOINCHANNEL C → S W2BN Joins a chat channel.
0x0E SID_CHATCOMMAND C → S W2BN Sends a chat message or a slash command such as /whisper or /join.
0x0F SID_CHATEVENT S → C W2BN Everything that happens in chat: joins, leaves, messages, whispers and server notices.
0x12 SID_LOCALEINFO C → S W2BN The client's clock, time zone, language and country.
0x14 SID_UDPPINGRESPONSE C → S W2BN Tells the server the UDP test worked, by echoing the code the server sent over UDP.
0x1D SID_LOGONCHALLENGEEX S → C W2BN Gives the client the UDP code and the server token for this session.
0x1E SID_CLIENTID2 C → S W2BN A newer form of SID_CLIENTID, sent first by Diablo and Warcraft II.
0x25 SID_PING C → S
S → C
W2BN Measures latency. The server sends a value and the client sends the same value back.
0x29 SID_LOGONRESPONSE C → S
S → C
W2BN Logs on to an account in the older logon. Same proof as SID_LOGONRESPONSE2, but a simpler reply.
0x2A SID_CREATEACCOUNT C → S
S → C
W2BN Creates an account in the older logon. Same request as SID_CREATEACCOUNT2, but the reply is only success or failure.
0x36 SID_CDKEY2 C → S
S → C
W2BN Sends a hashed CD key in the older logon. Warcraft II uses it.

D2DVD2XP Diablo II

IDNameDirectionUsed bySummary
0x00 SID_NULL C → S
S → C
D2DVD2XP Keep-alive. An empty message both sides may send so an idle connection stays open.
0x0A SID_ENTERCHAT C → S
S → C
D2DVD2XP Moves a logged-on client into chat and tells it the name it will appear under.
0x0B SID_GETCHANNELLIST C → S
S → C
D2DVD2XP Asks for the list of public channels shown in the client's channel picker.
0x0C SID_JOINCHANNEL C → S D2DVD2XP Joins a chat channel.
0x0E SID_CHATCOMMAND C → S D2DVD2XP Sends a chat message or a slash command such as /whisper or /join.
0x0F SID_CHATEVENT S → C D2DVD2XP Everything that happens in chat: joins, leaves, messages, whispers and server notices.
0x25 SID_PING C → S
S → C
D2DVD2XP Measures latency. The server sends a value and the client sends the same value back.
0x3A SID_LOGONRESPONSE2 C → S
S → C
D2DVD2XP Logs on to an account with a salted X-SHA-1 password proof.
0x3D SID_CREATEACCOUNT2 C → S
S → C
D2DVD2XP Creates an account using an X-SHA-1 password hash.
0x50 SID_AUTH_INFO C → S
S → C
D2DVD2XP The client names its game, platform and version. The server replies with a session token and the version check to run.
0x51 SID_AUTH_CHECK C → S
S → C
D2DVD2XP The client proves its game version and CD keys. The server accepts or rejects them.

WAR3W3XP Warcraft III

IDNameDirectionUsed bySummary
0x00 SID_NULL C → S
S → C
WAR3W3XP Keep-alive. An empty message both sides may send so an idle connection stays open.
0x0A SID_ENTERCHAT C → S
S → C
WAR3W3XP Moves a logged-on client into chat and tells it the name it will appear under.
0x0B SID_GETCHANNELLIST C → S
S → C
WAR3W3XP Asks for the list of public channels shown in the client's channel picker.
0x0C SID_JOINCHANNEL C → S WAR3W3XP Joins a chat channel.
0x0E SID_CHATCOMMAND C → S WAR3W3XP Sends a chat message or a slash command such as /whisper or /join.
0x0F SID_CHATEVENT S → C WAR3W3XP Everything that happens in chat: joins, leaves, messages, whispers and server notices.
0x25 SID_PING C → S
S → C
WAR3W3XP Measures latency. The server sends a value and the client sends the same value back.
0x50 SID_AUTH_INFO C → S
S → C
WAR3W3XP The client names its game, platform and version. The server replies with a session token and the version check to run.
0x51 SID_AUTH_CHECK C → S
S → C
WAR3W3XP The client proves its game version and CD keys. The server accepts or rejects them.

Not documented here yet

85 more messages are documented on BNETDocs and still need pages here:

SID_ANNOUNCEMENT · SID_AUTH_ACCOUNTCHANGE · SID_AUTH_ACCOUNTCHANGEPROOF · SID_AUTH_ACCOUNTCREATE · SID_AUTH_ACCOUNTLOGON · SID_AUTH_ACCOUNTLOGONPROOF · SID_AUTH_ACCOUNTUPGRADE · SID_AUTH_ACCOUNTUPGRADEPROOF · SID_CDKEY3 · SID_CHANGEEMAIL · SID_CHANGEPASSWORD · SID_CHECKAD · SID_CHECKDATAFILE · SID_CHECKDATAFILE2 · SID_CLANCREATIONINVITATION · SID_CLANDISBAND · SID_CLANFINDCANDIDATES · SID_CLANINFO · SID_CLANINVITATION · SID_CLANINVITATIONRESPONSE · SID_CLANINVITEMULTIPLE · SID_CLANMAKECHIEFTAIN · SID_CLANMEMBERINFORMATION · SID_CLANMEMBERLIST · SID_CLANMEMBERRANKCHANGE · SID_CLANMEMBERREMOVED · SID_CLANMEMBERSTATUSCHANGE · SID_CLANMOTD · SID_CLANQUITNOTIFY · SID_CLANRANKCHANGE · SID_CLANREMOVEMEMBER · SID_CLANSETMOTD · SID_CLICKAD · SID_DISPLAYAD · SID_EXTRAWORK · SID_FINDLADDERUSER · SID_FLOODDETECTED · SID_FRIENDSADD · SID_FRIENDSLIST · SID_FRIENDSPOSITION · SID_FRIENDSREMOVE · SID_FRIENDSUPDATE · SID_GAMEDATAADDRESS · SID_GAMEPLAYERSEARCH · SID_GAMERESULT · SID_GETADVLISTEX · SID_GETFILETIME · SID_GETICONDATA · SID_GETLADDERDATA · SID_LEAVECHAT · SID_LEAVEGAME · SID_LOGONREALMEX · SID_MESSAGEBOX · SID_NETGAMEPORT · SID_NEWS_INFO · SID_NOTIFYJOIN · SID_OPTIONALWORK · SID_PROFILE · SID_QUERYADURL · SID_QUERYREALMS · SID_QUERYREALMS2 · SID_READCOOKIE · SID_READMEMORY · SID_READUSERDATA · SID_REGISTRY · SID_REPORTCRASH · SID_REQUIREDWORK · SID_RESETPASSWORD · SID_SERVERLIST · SID_SETEMAIL · SID_STARTADVEX · SID_STARTADVEX2 · SID_STARTADVEX3 · SID_STARTVERSIONING2 · SID_STOPADV · SID_SWITCHPRODUCT · SID_TOURNAMENT · SID_UNKNOWN_37 · SID_UNKNOWN_39 · SID_UNKNOWN_DE · SID_WARCRAFTGENERAL · SID_WARCRAFTUNKNOWN · SID_WARDEN · SID_WRITECOOKIE · SID_WRITEUSERDATA

Last edited September 16, 2026 by John Leighow.
Edit on GitHub | Page history