SID AUTH INFO

From BNETDocs Wiki
Jump to: navigation, search

This message is used to identify the client to the server and begin the authentication process.

Message Details

Protocol: BNCS
Message ID: 0x50
Name: SID_AUTH_INFO

Used By

  • StarCraft / Broodwar
  • Diablo II / Lord of Destruction
  • WarCraft III / The Frozen Throne

Format

Client -> Server

(UINT32) Protocol ID (always 0)
(UINT32) Platform code ('IX86', 'XMAC', 'PMAC')
(UINT32) Product code ('STAR', 'D2DV', etc)
(UINT32) Version byte
(UINT32) Language code ('enUS', 'deDE', 'frFR', etc - use 0 for default)
(UINT32) Local IP (network byte order, can safely be set to 0)
(UINT32) Time zone bias
(UINT32) MPQ locale ID (can safely be set to 0)
(UINT32) Language ID (can safely be set to 0)
(STRING) Country abbreviation (3 characters)
(STRING) Country name

Server -> Client

(UINT32) Logon type
(UINT32) Server token
(UINT32) UDP value
(FILETIME) CheckRevision MPQ filetime
(STRING) CheckRevision MPQ filename
(STRING) CheckRevision formula

WAR3/W3XP Only:
  (VOID) 128-byte server signature

Remarks

Supported products

This message and associated messages are supported for any product code, regardless of if the official client for that product uses them.

Language code

This value is used to determine the client's default home channel (eg. Diablo II En-1) as well as the language used for system messages sent to the user.

Time zone bias

The difference between UTC and local time, in minutes.
On Windows, this value can be retrieved using GetTimeZoneInformation().

MPQ locale ID

Specifies the language variation of an MPQ file to be used when available.
On Windows, this can be retrieved using GetUserDefaultLCID().

User language ID

On Windows, this can be retrieved using GetUserDefaultLangID().

Country name and abbreviation

On Windows, these values can be retrieved using GetLocalInfo() with LOCALE_SABBREVCTRYNAME and LOCALE_SENGLISHCOUNTRYNAME.
If you're unable to retrieve these values, they can safely be set to 'USA' and 'United States'.

Logon types

Indicates how the client should proceed with account logon.

  • 0x00: Broken SHA-1 (used by STAR/SEXP, D2DV/D2XP)
  • 0x01: NLS version 1 (used by WAR3 Beta)
  • 0x02: NLS version 2 (used by WAR3/W3XP)

For Broken SHA-1, the SID_LOGONRESPONSE2 message should be used.
For NLS, the SID_AUTH_ACCOUNTLOGON message should be used.
The primary difference between NLSv1 and NLSv2 is the byte-order of the modulus used in calculations.

UDP value

It is unknown what this value really is, but it is used in the UDP_CONNTEST2 and MCP_STARTUP messages.

CheckRevision

These values are used for the CheckRevision process. Official clients will download and extract the given MPQ archive using BNFTP and then call the CheckRevision() function from the DLL file contained within. The formulas rarely change and can be safely emulated without needing to download and extract the DLL each time.

Server signature

This value is used to verify that the server is an official Battle.net server. For more information see Server signature verification.