Transport Layer:Transmission Control Protocol (TCP)
Application Layer:Battle.net v1 TCP Messages (SID)
Message Id:0x5C
Direction:Client to Server
Used By:Warcraft III The Frozen Throne
Message Format:
(does not include protocol header)
(UINT32) Product ID


This message is used to switch from W3XP to WAR3.

When running WAR3 with W3XP installed, the client sends both WAR3 and W3XP keys in SID_AUTH_CHECK and uses W3XP as the Product Id in SID_AUTH_INFO. After a successful SID_AUTH_CHECK, the client sends this message with the Product Id set to WAR3 to make the switch from expansion to non-expansion.

| Edited: Anonymous



In experimenting I've found:
(client I identified as in SID_AUTH_INFO) -> (client I sent in SID_SWITCHPRODUCT) = (result):
W3XP -> WAR3 = intended result, using WAR3 in channel.
Non-WarCraft III -> anything = short ipban.
W3XP -> non-WarCraft III = kick.
WAR3 -> non-WarCraft III = kick.
W3XP -> W3XP = passes, but obviously does nothing.
WAR3 -> WAR3 = passes, but obviously does nothing.
WAR3 -> W3XP = passes, but does nothing (using WAR3 in channel).


I feel like the real purpose for this message is to:

  1. Ensure both WAR3 and W3XP keys show as in-use on Battle.net.
  2. Allow Battle.net to treat this client as WAR3 rather than W3XP as it was originally to trigger both keys being in-use.

In short, it feels like Blizzard wants the Frozen Throne key to show as in-use even when playing Reign of Chaos.