
BNETDocs Redux
Navigation |
Protocol Headers
BNCS Headers BNCS stands for Battle.Net Chat Server and is the protocol that Blizzard's Battle.net enabled games use to communicate. Every BNCS message has the same header: (BYTE) Always 0xFF (BYTE) Message ID (WORD) Message length, including this header (VOID) Message Data The BNCS protocol is aggresively enforced by Battle.net - at least, for clients - and violations of the protocol generally result in an IP ban. When connecting to a BNCS server, you must first tell the server which protocol you wish to use. Some of the Protocol IDs are:
Realm Headers Battle.net's Realm Servers are what control Diablo II's realms. Realm (Sometimes referred to as MCP) message headers are also always the same, albeit slightly different from BNCS's: (WORD) Message length, including this header (BYTE) Message ID (VOID) Message Data Violations of the MCP protocol are less severely enforced by MCP servers. If they IP ban at all, it is generally only for a few minutes. D2GS Headers D2GS stands for Diablo 2 Game Server. This constitutes the in-game protocol used by Diablo II. The D2GS protocol is somewhat more complicated than other Blizzard protocols - most D2GS messages have set lengths, and those that don't generally have some unique way of obtaining it. The headers are as follows (for decompressed messages): (BYTE) Message ID (VOID) Message Data For compressed messages: (BYTE) Message Size (BYTE) Decompressed Message ID (VOID) Message Data Botnet Headers Botnet is a system whereby bots can share information about users and send commands to eachother. It is also used by various bot authors as a means of leak protection & statistics collection, and to administer BNLS & Webchannel, in addition to being a useful chat medium when more privacy is needed than Battle.net allows. The headers are as follows: (BYTE) Protocol Version (Currently 0x01) (BYTE) Message ID (WORD) Message Length, including this header (VOID) Message Data BNLS Headers BNLS is the Battle.Net Logon Server, and can be used by bot authors to perform some of the computational tasks required during a Battle.net logon. It also allows bot authors to obtain useful information such as the current version byte for a game client, and has provisions for BNCS server emulator authors. It has the following headers: (WORD) Message Length, including this header (BYTE) Message ID (VOID) Message Data Warcraft III In-game Headers Used by both ladder games and custom games, the format of these messages are nearly the same as BNCS packets. Every packet has the same header: (BYTE) Always 0xF7 (BYTE) Message ID (WORD) Message length, including this header (VOID) Message Data Specific message formats for Warcraft III in-game is not documented yet, but will be available in the near future. Storm UDP Protocol This protocol is defined and processed by functions within Storm.dll and is used for numerous games - namely, Diablo 1, Warcraft II: BNE, Starcraft, and Starcraft: Brood War. (WORD) Checksum (WORD) Header Length (WORD) Seq1 (WORD) Seq2 (BYTE) CLS (BYTE) Command (BYTE) PlayerID (BYTE) Resend Checksum is performed by a storm function and is calculated on the whole message, starting at Header Length. Header Length is the length of the entire message. Seq1 is the sender's position in the outbound stream. Seq2 is the most recently recieved message. CLS is always a value from 0-2, 0 indicating that the message is processed by Storm, 1 for asynchronous data, 2 for synchronous data, both of which are passed onto the game client. Command specifies the message type for CLS type zero, but is always zero otherwise. PlayerID is the ID of the sending player. Resend contains control flags. Synchronous messages contain data that all clients must process on the same turn. Other Battle.net protocol IDs are MCP to BNCS communication (0x04) and 0x06, which we know nothing about. At a guess, it is used for interserver synchronisation. |
= Online = Offline
= Online = Offline |
Site scripts and design copyrights reserved to Don Cullen.
Contents copyrighted to Blizzard and their parent corporation, Vivendi.
Main credits for contents goes to Arta. View the rest of credits.
Demented Minds copyrights reserved to Don Cullen 2003-present.
Copyright infringements will be prosecuted to the fullest extent allowable by law.
Please view our legal disclaimer and terms of service.

= Offline



BNETDocs News
User Comments
For detailed questions and discussion, visit the Battle.net Research Forum
May 27, 2008
01:38 PM
Thanks for porting it over, Hdx. :)
Nov 11, 2008
06:05 PM
"[BNCS Headers Section]
When connecting to a BNCS server, you must first tell the server which protocol you wish to use. Some of the Protocol IDs are:
* Games: 0x01
* FTP: 0x02
* Chat: 0x03
...
[last section]
Other Battle.net protocol IDs are MCP to BNCS communication (0x04) and 0x06, which we know nothing about. At a guess, it is used for interserver synchronisation."
That last line looks like it belongs at the end of the first section, not at the end of the entire page.
Otherwise, it doesn't appear to be documented that you must send a protocol ID byte 0x01 before sending other packets for the realm connection (MCP), just like for the BNCS.
On a side note, PLEASE SANITIZE YOUR SQL INPUT! (I just got an error because of my '!)