CMD_AUTH_RECONNECT_CHALLENGE_Client

Protocol Version *

First message sent by the client when attempting to reconnect. The server will respond with CMD_AUTH_RECONNECT_CHALLENGE_Server.

Has the exact same layout as CMD_AUTH_LOGON_CHALLENGE_Client.

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/login/cmd_auth_reconnect/challenge_client.wowm:5.

clogin CMD_AUTH_RECONNECT_CHALLENGE_Client = 0x02 {
    ProtocolVersion protocol_version;
    u16 size = self.size;
    u32 game_name = "\0WoW";
    Version version;
    Platform platform;
    Os os;
    Locale locale;
    i32 utc_timezone_offset;
    IpAddress client_ip_address;
    String account_name;
}

Login messages have a header of 1 byte with an opcode. Some messages also have a size field but this is not considered part of the header.

Login Header

OffsetSize / EndiannessTypeNameDescription
0x001 / -uint8opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x011 / -ProtocolVersionprotocol_versionDetermines which version of messages are used for further communication.
0x022 / Littleu16size
0x044 / Littleu32game_name
0x085 / -Versionversion
0x0D4 / -Platformplatform
0x114 / -Osos
0x154 / -Localelocale
0x194 / Littlei32utc_timezone_offsetOffset in minutes from UTC time. 180 would be UTC+3
0x1D4 / BigIpAddressclient_ip_address
0x21- / -Stringaccount_nameReal clients can send a maximum of 16 UTF-8 characters. This is not necessarily 16 bytes since one character can be more than one byte.
Real clients will send a fully uppercased username, and will perform authentication calculations on the uppercased version.
Uppercasing in regards to non-ASCII values is little weird. See https://docs.rs/wow_srp/latest/wow_srp/normalized_string/index.html for more info.

Examples

Example 1

2, // opcode (2)
2, // protocol_version: ProtocolVersion TWO (2)
31, 0, // size: u16
87, 111, 87, 0, // game_name: u32
1, // Version.major: u8
12, // Version.minor: u8
1, // Version.patch: u8
243, 22, // Version.build: u16
54, 56, 120, 0, // platform: Platform X86 ("\0x86")
110, 105, 87, 0, // os: Os WINDOWS ("\0Win")
66, 71, 110, 101, // locale: Locale EN_GB ("enGB")
60, 0, 0, 0, // utc_timezone_offset: i32
127, 0, 0, 1, // client_ip_address: IpAddress
1, // string length
65, // account_name: String

Example 2

2, // opcode (2)
2, // protocol_version: ProtocolVersion TWO (2)
46, 0, // size: u16
87, 111, 87, 0, // game_name: u32
1, // Version.major: u8
12, // Version.minor: u8
1, // Version.patch: u8
243, 22, // Version.build: u16
54, 56, 120, 0, // platform: Platform X86 ("\0x86")
110, 105, 87, 0, // os: Os WINDOWS ("\0Win")
66, 71, 110, 101, // locale: Locale EN_GB ("enGB")
60, 0, 0, 0, // utc_timezone_offset: i32
127, 0, 0, 1, // client_ip_address: IpAddress
16, // string length
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, // account_name: String