CMD AUTH LOGON CHALLENGE Client: Difference between revisions
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 | ||
|- | |- | ||
| | | 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,<br> 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 [[Rev|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'. | | 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 || | | 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 || | | 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.
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.