This document describes how to supply product information to Classic Battle.net™.
When connecting to the Classic Battle.net service and identifying with C>S 0x50 SID_AUTH_INFO (or the older C>S 0x06 SID_STARTVERSIONING/C>S 0x07 SID_REPORTVERSION system), the clients send their Platform, Product, Version (often called Version Byte or Verbyte), and Language values.
All four fields are
UINT32 values, where all but Version are a four-character "UINT32-string", as described in notational conventions.
Products and Versions
Product and Version specify what version of what game being used. The Product value is seen again when users are seen in chat with their chat statstrings. The Version value may be used again during peer-to-peer and other game-related communication to ensure clients are on the same versions. The Latest Version value is the four-16-bit-integer Windows PRODUCTVERSION field for reference (also used during Check Revision).
|Client||Product||Latest Version||Version Value|
|StarCraft: Brood War||
|Diablo I Beta||
|Diablo I Stress Test||
|Diablo II Stress Test||
|Diablo II: Lord of Destruction||
|WarCraft II: Battle.net Edition||
|WarCraft III Demo||
|WarCraft III: Reign of Chaos||
|WarCraft III: The Frozen Throne||
Italic listings no longer work on official Battle.net servers.
StarCraft products are all upgraded to the new StarCraft 1.18 and later releases on official servers. You can no longer log on with
SSHR, for they are also given an upgrade request.
The Battle.net Chat Service briefly supported non-tunneled StarCraft version "188.8.131.525" with code
0xD6 but now bans you for using it, even though a newer version was the latest.
Programmatically obtaining the version byte
This is not 100% guaranteed to work across all game versions, but you can scan the game binaries for some patterns which have been known to contain the version bytes. The latest known ones are below (X's indicate wildcard values):
|Product||File||Pattern||0-index of Value||Notes|
|STAR\SEXP||Starcraft.exe||C7 46 10 XX XX XX XX C7 46 18 XX XX XX XX C7 46||3||no longer valid|
|W2BN||Warcraft II BNE.exe||C7 46 10 XX XX XX XX C7 46 18 XX XX XX XX C7 46||3|
|DRTL\DSHR||Diablo.exe \ Diablo_s.exe||C7 85 64 FF FF FF XX XX XX XX C7 85 68 FF FF FF XX XX XX XX||16||first X's is product code|
|JSTR||StarcraftJ.exe||8B 4D F4 C7 41 0C XX XX XX XX 8B 55 F4 C7 42 10 XX XX XX XX||16||first X's is product code|
|SSHR||Starcraft.exe||C7 46 0C XX XX XX XX C7 46 10 XX XX XX XX||10||first X's is product code|
|D2DV\D2XP||Bnclient.dll||56 44 32 44 89 44 24 58 6A 03 8D 44 24 64 50 C7 44 24 64 XX XX XX XX||19||first 4 bytes are 'VD2D' in both products - no longer valid (file missing)|
|WAR3\W3XP||game.dll||C7 85 4C FD FF FF XX XX XX XX 89 8D 50 FD FF FF||6||no longer valid (file missing)|
C++ Code donated by DevCode
Java Code donated by Hdx
The Platform value identifies which of three possible platforms. This affects what files Battle.net gives you to work on your platform.
|Operating System||Architecture||Platform Value|
The Language value identifies which language the product is using. You cannot specify this using the older C>S 0x06 SID_STARTVERSIONING/C>S 0x07 SID_REPORTVERSION system. This affects what language files Battle.net gives you as well as when the service sends you informative text in chat events among other places.
These are the values supported by Classic Battle.net's servers.
|English (United States)||
|English (Great Britain)||
Any other values (including
(UINT32) 0) gives you
* It is unknown whether
'enGB' or any other English varieties actually differ from
'enUS' and the server is just giving you that.
** These languages appear to be supported, but no official clients are available that use it. JSTR is no longer accessible.
W3XP verbyte is 0x15
Confirmed by RealityRipple. Updated W3XP verbyte to 0x15. Thanks for the heads up, idiat.
D2DV Verbyte = 0x0C
D2XP Verbyte = 0x0C
WAR3 VerByte = 0x16
W3XP VerByte = 0x16
The current Wc3 Verbyte for both RoC and TFT is 0x16
SC/BW are now 0xD3
WarCraft VerBytes are now 0x17
@Alendar, Ozzapoo, Sixen-- updated. Thanks.
I found a product code called DTST. You can find it in Starcraft.exe(1.16.1)@0x004497A4.
From what I can tell its the same as DRTL?
Probably has something to do with Diablo 3?
Updated D2DV/D2XP verbyte to 0x0D.
@Heinermann: That product is indeed there. Further testing would have to be done to see what product it really is. I would take an educated guess that DTST stands for Diablo Test (Client).
Diablo 3 will not be seen on Classic Battle.net. In other words, the product id for Diablo 3 and StarCraft II will not be seen in any icons.bni, or in any classic game. They will only be seen in newer games that are compatible with Battle.net v2.
If it really is Diablo 3, Blizzard has something to surprise the community with and hasn't announced it yet.
It was there long before Diablo 3 even began so I highly doubt it. It probably was as you said (Diablo TeST)
Interesting enough, I sent DTST in a SID_AUTH_INFO and got disconnected, but not IP banned... I could instantly reconnect after it disconnected me. It did not give me any error codes or anything, it just simply disconnected me for sending DTST as the product, nothing else followed.
On a side note, you can send DRTL and DSHR in SID_AUTH_INFO and you will receive SID_AUTH_INFO from Battle.net. The packet you receive will tell you to use BSHA-1 and you will receive something like lockdown-IX86-1.mpq as your CheckRevision file. I have been told that when you use DRTL, DSHR, SSHR, or any game that does not use CD-Keys, you send SID_AUTH_CHECK without any CD-Keys appended to the packet (everything EXCEPT the CD-Key part of the packet), and Battle.net will treat that as proper communication and will not disconnect you, surprisingly enough. I will be testing this soon with my own bot later, and I will hopefully add (incorrect?) documentation for it here on BnetDocs later.
Warcraft III: Demo: W3DM 0x01
As far as D3 goes, these games will still need to support viewing users on SC2/D3/WoW since these will all be ported to Bnet2.0 soon(tm).
EDIT: Perhaps DTST needs to login through a specific server similar to W3DM?
Do we have a range of known battle.net server IP addresses to put that theory to the test?
I looked into the code in Starcraft where DTST is referenced. It grabs the icon from glueattle.neticons.pcx from patch_rt.mpq according to the product (this function is probably no longer used).
DRTL, DSHR, and DTST all have the Diablo icon according to that piece of code.
Getting a hold of the Diablo Battle.net Beta might give us the answers.
I checked and the Alpha/Pre-release has nothing Battle.net related.
@Kyro: Well, the W3DM server is demo.war3.battle.net. Perhaps we should keep a list of servers... EDIT: Got a document up with a list.
@Heinermann: Hrmm... Supposedly, this is a copy of D1 Alpha. I have not checked it out myself yet. http://www.megaupload.com/?d=HK7F9E4L
According to the Diablo Evolution website, that is the correct size (and the owner of the site put that link up). I can try and contact the guys from Diablo Evolution and see if he can upload the D1 Beta. Apparently he has a copy of it.
Awesome, I got in contact with Mystery, the guy who ran Diablo Evolution. He told me he'll re-upload the Diablo Beta tomorrow, :).
Few other things... Do you have copies of the other game betas? D2, SC1, War2, War3? Could potentially be more information there... In addition, the D2 Beta on Battle.net had product code D2ST, this could potentially be that; not the D1 Beta. It's more than possible the D2ST could have the same icon as DRTL... That beta is located here:
This Beta Archives site seems to have all of them if we need any (aside from DRTL Beta which Mystery will upload for us tomorrow).
Been talking to Heinermann a lot lately, we found out the Diablo 2 Stress Test:
D2ST verbyte is 0xCA and uses the same login sequence as DRTL/DSHR.
I just need the D2 LoD Beta if anyone has access to this.
It might be safe to assume that DTST is a Diablo Stress Test
Diablo Battle.net Beta: DIAB
I updated Hdx's Java-code donation so that it is hosted here at BnetDocs instead of pastebin.
It'd be nice if it could be displayed as neatly as the CPP version by DevCode.
Updated WAR3/W3XP verbytes to 0x1A.
I have added the sample code as attachments to this document.
Version bytes have been updated for WAR3/W3XP to
0x1C and STAR/SEXP to
Updated WAR3/W3XP to version 184.108.40.20655 (
Updated WAR3/W3XP to version 220.127.116.1100 (
Missing information about StarCraft Beta. There also exists StarCraft Japanese Beta, don't know if it had Battle.net support.
Diablo: Hellfire appears to have basic Battle.net support.
Added information on additional version byte search patterns per this thread: https://vl.bnetdocs.org/index.php?topic=17116.msg174936#msg174936