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
| ID | Name | Direction | Used by | Summary |
|---|---|---|---|---|
0x00 |
SID_NULL | C → S S → C |
Keep-alive. An empty message both sides may send so an idle connection stays open. | |
0x05 |
SID_CLIENTID | C → S S → C |
The client's first message in the oldest logon: registration numbers and the computer's LAN names. | |
0x06 |
SID_STARTVERSIONING | C → S S → C |
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 |
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 |
Moves a logged-on client into chat and tells it the name it will appear under. | |
0x0B |
SID_GETCHANNELLIST | C → S S → C |
Asks for the list of public channels shown in the client's channel picker. | |
0x0C |
SID_JOINCHANNEL | C → S | Joins a chat channel. | |
0x0E |
SID_CHATCOMMAND | C → S | Sends a chat message or a slash command such as /whisper or /join. |
|
0x0F |
SID_CHATEVENT | S → C | Everything that happens in chat: joins, leaves, messages, whispers and server notices. | |
0x12 |
SID_LOCALEINFO | C → S | The client's clock, time zone, language and country. | |
0x14 |
SID_UDPPINGRESPONSE | C → S | Tells the server the UDP test worked, by echoing the code the server sent over UDP. | |
0x1D |
SID_LOGONCHALLENGEEX | S → C | Gives the client the UDP code and the server token for this session. | |
0x1E |
SID_CLIENTID2 | C → S | A newer form of SID_CLIENTID, sent first by Diablo and Warcraft II. |
|
0x25 |
SID_PING | C → S S → C |
Measures latency. The server sends a value and the client sends the same value back. | |
0x28 |
SID_LOGONCHALLENGE | S → C | Gives the client the server token for this session, without a UDP code. | |
0x29 |
SID_LOGONRESPONSE | C → S S → C |
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 |
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 | The client's hardware: processors, memory and free disk space. | |
0x30 |
SID_CDKEY | C → S S → C |
Sends a 13-character CD key unhashed. Only StarCraft Japanese used it. | |
0x36 |
SID_CDKEY2 | C → S S → C |
Sends a hashed CD key in the older logon. Warcraft II uses it. | |
0x3A |
SID_LOGONRESPONSE2 | C → S S → C |
Logs on to an account with a salted X-SHA-1 password proof. | |
0x3D |
SID_CREATEACCOUNT2 | C → S S → C |
Creates an account using an X-SHA-1 password hash. | |
0x50 |
SID_AUTH_INFO | C → S S → C |
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 |
The client proves its game version and CD keys. The server accepts or rejects them. |



StarCraft
Logon sequence: StarCraft and Brood War: logon to chat · StarCraft Shareware and StarCraft Japanese: logon to chat
| ID | Name | Direction | Used by | Summary |
|---|---|---|---|---|
0x00 |
SID_NULL | C → S S → C |
Keep-alive. An empty message both sides may send so an idle connection stays open. | |
0x05 |
SID_CLIENTID | C → S S → C |
The client's first message in the oldest logon: registration numbers and the computer's LAN names. | |
0x06 |
SID_STARTVERSIONING | C → S S → C |
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 |
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 |
Moves a logged-on client into chat and tells it the name it will appear under. | |
0x0B |
SID_GETCHANNELLIST | C → S S → C |
Asks for the list of public channels shown in the client's channel picker. | |
0x0C |
SID_JOINCHANNEL | C → S | Joins a chat channel. | |
0x0E |
SID_CHATCOMMAND | C → S | Sends a chat message or a slash command such as /whisper or /join. |
|
0x0F |
SID_CHATEVENT | S → C | Everything that happens in chat: joins, leaves, messages, whispers and server notices. | |
0x12 |
SID_LOCALEINFO | C → S | The client's clock, time zone, language and country. | |
0x14 |
SID_UDPPINGRESPONSE | C → S | Tells the server the UDP test worked, by echoing the code the server sent over UDP. | |
0x25 |
SID_PING | C → S S → C |
Measures latency. The server sends a value and the client sends the same value back. | |
0x28 |
SID_LOGONCHALLENGE | S → C | Gives the client the server token for this session, without a UDP code. | |
0x29 |
SID_LOGONRESPONSE | C → S S → C |
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 |
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 | The client's hardware: processors, memory and free disk space. | |
0x30 |
SID_CDKEY | C → S S → C |
Sends a 13-character CD key unhashed. Only StarCraft Japanese used it. | |
0x3A |
SID_LOGONRESPONSE2 | C → S S → C |
Logs on to an account with a salted X-SHA-1 password proof. | |
0x3D |
SID_CREATEACCOUNT2 | C → S S → C |
Creates an account using an X-SHA-1 password hash. | |
0x50 |
SID_AUTH_INFO | C → S S → C |
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 |
The client proves its game version and CD keys. The server accepts or rejects them. |

Diablo
Logon sequence: Diablo: logon to chat
| ID | Name | Direction | Used by | Summary |
|---|---|---|---|---|
0x00 |
SID_NULL | C → S S → C |
Keep-alive. An empty message both sides may send so an idle connection stays open. | |
0x05 |
SID_CLIENTID | C → S S → C |
The client's first message in the oldest logon: registration numbers and the computer's LAN names. | |
0x06 |
SID_STARTVERSIONING | C → S S → C |
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 |
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 |
Moves a logged-on client into chat and tells it the name it will appear under. | |
0x0B |
SID_GETCHANNELLIST | C → S S → C |
Asks for the list of public channels shown in the client's channel picker. | |
0x0C |
SID_JOINCHANNEL | C → S | Joins a chat channel. | |
0x0E |
SID_CHATCOMMAND | C → S | Sends a chat message or a slash command such as /whisper or /join. |
|
0x0F |
SID_CHATEVENT | S → C | Everything that happens in chat: joins, leaves, messages, whispers and server notices. | |
0x12 |
SID_LOCALEINFO | C → S | The client's clock, time zone, language and country. | |
0x14 |
SID_UDPPINGRESPONSE | C → S | Tells the server the UDP test worked, by echoing the code the server sent over UDP. | |
0x1D |
SID_LOGONCHALLENGEEX | S → C | Gives the client the UDP code and the server token for this session. | |
0x1E |
SID_CLIENTID2 | C → S | A newer form of SID_CLIENTID, sent first by Diablo and Warcraft II. |
|
0x25 |
SID_PING | C → S S → C |
Measures latency. The server sends a value and the client sends the same value back. | |
0x29 |
SID_LOGONRESPONSE | C → S S → C |
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 |
Creates an account in the older logon. Same request as SID_CREATEACCOUNT2, but the reply is only success or failure. |
Warcraft II: Battle.net Edition
Logon sequence: Warcraft II: Battle.net Edition: logon to chat
| ID | Name | Direction | Used by | Summary |
|---|---|---|---|---|
0x00 |
SID_NULL | C → S S → C |
Keep-alive. An empty message both sides may send so an idle connection stays open. | |
0x05 |
SID_CLIENTID | C → S S → C |
The client's first message in the oldest logon: registration numbers and the computer's LAN names. | |
0x06 |
SID_STARTVERSIONING | C → S S → C |
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 |
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 |
Moves a logged-on client into chat and tells it the name it will appear under. | |
0x0B |
SID_GETCHANNELLIST | C → S S → C |
Asks for the list of public channels shown in the client's channel picker. | |
0x0C |
SID_JOINCHANNEL | C → S | Joins a chat channel. | |
0x0E |
SID_CHATCOMMAND | C → S | Sends a chat message or a slash command such as /whisper or /join. |
|
0x0F |
SID_CHATEVENT | S → C | Everything that happens in chat: joins, leaves, messages, whispers and server notices. | |
0x12 |
SID_LOCALEINFO | C → S | The client's clock, time zone, language and country. | |
0x14 |
SID_UDPPINGRESPONSE | C → S | Tells the server the UDP test worked, by echoing the code the server sent over UDP. | |
0x1D |
SID_LOGONCHALLENGEEX | S → C | Gives the client the UDP code and the server token for this session. | |
0x1E |
SID_CLIENTID2 | C → S | A newer form of SID_CLIENTID, sent first by Diablo and Warcraft II. |
|
0x25 |
SID_PING | C → S S → C |
Measures latency. The server sends a value and the client sends the same value back. | |
0x29 |
SID_LOGONRESPONSE | C → S S → C |
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 |
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 |
Sends a hashed CD key in the older logon. Warcraft II uses it. |

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

Warcraft III
| ID | Name | Direction | Used by | Summary |
|---|---|---|---|---|
0x00 |
SID_NULL | C → S S → C |
Keep-alive. An empty message both sides may send so an idle connection stays open. | |
0x0A |
SID_ENTERCHAT | C → S S → C |
Moves a logged-on client into chat and tells it the name it will appear under. | |
0x0B |
SID_GETCHANNELLIST | C → S S → C |
Asks for the list of public channels shown in the client's channel picker. | |
0x0C |
SID_JOINCHANNEL | C → S | Joins a chat channel. | |
0x0E |
SID_CHATCOMMAND | C → S | Sends a chat message or a slash command such as /whisper or /join. |
|
0x0F |
SID_CHATEVENT | S → C | Everything that happens in chat: joins, leaves, messages, whispers and server notices. | |
0x25 |
SID_PING | C → S S → C |
Measures latency. The server sends a value and the client sends the same value back. | |
0x50 |
SID_AUTH_INFO | C → S S → C |
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 |
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