Product Identification

This document describes how to supply product information to Classic Battle.netâ„¢.

Usage

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
Telnet CHAT 0x01
StarCraft Shareware SSHR 1.12.0.0 0xA5
StarCraft Japanese JSTR 1.12.0.0 0xA9
StarCraft STAR 1.20.11.3277 ?
StarCraft: Brood War SEXP 1.20.11.3277 ?
Diablo Shareware DSHR 2001.5.11.1 0x2A
Diablo I Beta DIAB
Diablo I Stress Test DTST
Diablo Retail DRTL 2001.5.11.1 0x2A
Diablo II Stress Test D2ST
Diablo II D2DV 1.14.3.71 0x0E
Diablo II: Lord of Destruction D2XP 1.14.3.71 0x0E
WarCraft II: Battle.net Edition W2BN 2.0.2.0 0x4F
WarCraft III Demo W3DM 0x01
WarCraft III: Reign of Chaos WAR3 1.30.0.9900 0x1E
WarCraft III: The Frozen Throne W3XP 1.30.0.9900 0x1E

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 JSTR or SSHR, for they are also given an upgrade request.

The Battle.net Chat Service briefly supported non-tunneled StarCraft version "1.18.0.1345" 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

Platform

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
Windows Intel x86 IX86
Mac OS PowerPC PMAC
OS X Intel XMAC

Language

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.

Language Language Value
English (United States) enUS
English (Great Britain) enGB*
German (Germany) deDE
French (France) frFR
Italian (Italy) itIT
Spanish (Spain) esES
Korean (Korea) koKR
Polish (Poland) plPL
Russian (Russia) ruRU
Chinese (Taiwan) zhTW
Chinese (China) zhCN**
Japanese (Japan) jaJA**

Any other values (including (UINT32) 0) gives you 'enUS'.

* 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.

| Edited: Kyro

Comments

idiat

W3XP verbyte is 0x15

Kyro

Confirmed by RealityRipple. Updated W3XP verbyte to 0x15. Thanks for the heads up, idiat.

FrostWraith

D2DV Verbyte = 0x0C
D2XP Verbyte = 0x0C

Kyro

Updated, thanks.

Alendar

WAR3 VerByte = 0x16
W3XP VerByte = 0x16

Ozzapoo

The current Wc3 Verbyte for both RoC and TFT is 0x16

Sixen

SC/BW are now 0xD3

Alendar

WarCraft VerBytes are now 0x17

Kyro

@Alendar, Ozzapoo, Sixen-- updated. Thanks.

Heinermann

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?

Kyro

Probably has something to do with Diablo 3?

Caaaaarrrrlll

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).

Caaaaarrrrlll

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.

Heinermann

It was there long before Diablo 3 even began so I highly doubt it. It probably was as you said (Diablo TeST)

Caaaaarrrrlll

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.

Sixen

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?

Kyro

Do we have a range of known battle.net server IP addresses to put that theory to the test?

Heinermann

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.

Heinermann

I checked and the Alpha/Pre-release has nothing Battle.net related.

Sixen

@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.

Sixen

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:
http://www.megaupload.com/?d=UENTRDTJ

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).

Sixen

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.

Heinermann

It might be safe to assume that DTST is a Diablo Stress Test

Heinermann

Diablo Battle.net Beta: DIAB

Caaaaarrrrlll

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.

Caaaaarrrrlll

Updated WAR3/W3XP verbytes to 0x1A.

Caaaaarrrrlll

I have added the sample code as attachments to this document.

Caaaaarrrrlll

Version bytes have been updated for WAR3/W3XP to 0x1C and STAR/SEXP to 0xD6.

Caaaaarrrrlll

Updated WAR3/W3XP to version 1.29.0.9055 (0x1D).

Caaaaarrrrlll

Updated WAR3/W3XP to version 1.30.0.9900 (0x1E).

xboi209

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.

Davnit

Added information on additional version byte search patterns per this thread: https://vl.bnetdocs.org/index.php?topic=17116.msg174936#msg174936