CMD AUTH LOGON CHALLENGE Client: Difference between revisions

From wowdev
Jump to navigation Jump to search
(Initial commit)
 
(Add size section)
Line 1: Line 1:
[[CMD_AUTH_LOGON_CHALLENGE]] and [[CMD_AUTH_RECONNECT_CHALLENGE]] have the same client packet.
= Packet Layout =
= Packet Layout =
This packet does not change at all between versions.


{| class="wikitable"
{| class="wikitable"
Line 9: Line 13:
! Description
! Description
|-
|-
| 0x0 || 1 / - || uint8 || opcode || 0x0 for [[CMD_AUTH_LOGON_CHALLENGE]], [[CMD_AUTH_RECONNECT_CHALLENGE]] always has 0x2.
| 0x00 || 1 / - || uint8 || opcode || 0x0 for [[CMD_AUTH_LOGON_CHALLENGE]], [[CMD_AUTH_RECONNECT_CHALLENGE]] always has 0x2.
|-
|-
| 0x1 || 1 / - || uint8 || protocol_version || 8 for 2.4.3 connection and reconnection. 3 for 1.12 connection attempts and 2 for 1.12 reconnection attempts. Unknown for 1.1.
| 0x01 || 1 / - || uint8 || protocol_version || 8 for 2.4.3 connection and reconnection. 3 for 1.12 connection attempts and 2 for 1.12 reconnection attempts. Unknown for 1.1.
|-
|-
| 0x2 || 2 / Little || uint16 || size || length of package minus the size of the command,<br> protocol_version and size fields (4 bytes).<br>The size can be calculated as 30 (0x1E) + account_name_len,<br> see that field for a maximum.
| 0x02 || 2 / Little || uint16 || size || length of package minus the size of the command,<br> protocol_version and size fields.
|-
|-
| 0x4 || 4 / Little || uint8[4] || game_name || Always null terminated 'WoW\0' string.
| 0x04 || 4 / Little || uint8[4] || game_name || Always null terminated 'WoW\0' string.
|-
|-
| 0x8 || 3 / - || uint8[3] || version || [0x01, 0x01, 0x02] for 1.1.2. [0x01, 0x0C, 0x01] for 1.12.1.
| 0x08 || 3 / - || uint8[3] || version || [0x01, 0x01, 0x02] for 1.1.2. [0x01, 0x0C, 0x01] for 1.12.1.
|-
|-
| 0xB || 2 / Little || uint16 || build || 4125, aka [[Rev|Revision]]
| 0x0B || 2 / Little || uint16 || build || 4125, aka [[Rev|Revision]]
|-
|-
| 0xD || 4 / Big || uint8[4] || platform || eg '\0x86'. Has a leading zero for 'x86'.
| 0x0D || 4 / Big || uint8[4] || platform || eg '\0x86'. Has a leading zero for 'x86'.
|-
|-
| 0x11 || 4 / Big || uint8[4] || os || eg '\0Win'. Has a leading zero for 'Win'.
| 0x11 || 4 / Big || uint8[4] || os || eg '\0Win'. Has a leading zero for 'Win'.
Line 31: Line 35:
| 0x1D || 4 / Big || uint32 || ip || client_ip
| 0x1D || 4 / Big || uint32 || ip || client_ip
|-
|-
| 0x21 || 1 / - || uint8 || account_name_lenth || Length of the account_name field in bytes.<br> The client can only send 16 characters, <br> but this can still be more than 16 bytes if non-ASCII characters are used.
| 0x21 || 1 / - || uint8 || account_name_length || Length of the account_name field in bytes.<br> The client can only send 16 characters, <br> but this can still be more than 16 bytes if non-ASCII characters are used.
|-
|-
| 0x22 || account_name_len / Big || uint8[account_name_len] || account_name || UTF-8 encoded uppercase string of the username.<br> Not all unicode characters are uppercased correctly.
| 0x22 || account_name_length / Big || uint8[account_name_len] || account_name || UTF-8 encoded uppercase string of the username.<br> Not all unicode characters are uppercased correctly.
|}
|}
= Size =
== Entire packet ==
The only variable field is account_name which is limited to 16 UTF-8 characters by the client.
== Field ==
The value of the size field can be calculated as 30 + account_name_length. This field is the size without the opcode, protocol_version and size fields.

Revision as of 19:17, 20 May 2021

CMD_AUTH_LOGON_CHALLENGE and CMD_AUTH_RECONNECT_CHALLENGE have the same client packet.

Packet Layout

This packet does not change at all between versions.

CMD_AUTH_LOGON_CHALLENGE Client
Offset Size / Endianness Type Name Description
0x00 1 / - uint8 opcode 0x0 for CMD_AUTH_LOGON_CHALLENGE, CMD_AUTH_RECONNECT_CHALLENGE always has 0x2.
0x01 1 / - uint8 protocol_version 8 for 2.4.3 connection and reconnection. 3 for 1.12 connection attempts and 2 for 1.12 reconnection attempts. Unknown for 1.1.
0x02 2 / Little uint16 size length of package minus the size of the command,
protocol_version and size fields.
0x04 4 / Little uint8[4] game_name Always null terminated 'WoW\0' string.
0x08 3 / - uint8[3] version [0x01, 0x01, 0x02] for 1.1.2. [0x01, 0x0C, 0x01] for 1.12.1.
0x0B 2 / Little uint16 build 4125, aka Revision
0x0D 4 / Big uint8[4] platform eg '\0x86'. Has a leading zero for 'x86'.
0x11 4 / Big uint8[4] os eg '\0Win'. Has a leading zero for 'Win'.
0x15 4 / Big uint8[4] locale eg 'enUS'
0x19 4 / Little uint32 worldregion_bias Offset in minutes from UTC time,
eg. 180 means 180 minutes
0x1D 4 / Big uint32 ip client_ip
0x21 1 / - uint8 account_name_length Length of the account_name field in bytes.
The client can only send 16 characters,
but this can still be more than 16 bytes if non-ASCII characters are used.
0x22 account_name_length / Big uint8[account_name_len] account_name UTF-8 encoded uppercase string of the username.
Not all unicode characters are uppercased correctly.

Size

Entire packet

The only variable field is account_name which is limited to 16 UTF-8 characters by the client.

Field

The value of the size field can be calculated as 30 + account_name_length. This field is the size without the opcode, protocol_version and size fields.