CMD AUTH LOGON PROOF Server
Jump to navigation
Jump to search
CMD_AUTH_LOGON_PROOF_Server is a Login Packet sent by the server after receiving a CMD_AUTH_LOGON_PROOF_Client. It is followed by a CMD_REALM_LIST_Client from the client.
Packet Layout
(1.1.2.4125)
Offset | Size | Type | Name | Description |
---|---|---|---|---|
Header | ||||
0x0 | 1 / - | uint8 | command | LOGIN_PROOF (0x1) |
0x1 | 1 / - | uint8 | result | The fields below are only included if this is SUCCESS (0x0). |
Body | ||||
0x2 | 20 / Little | uint8[20] | server_proof | SRP6 Server proof. |
0x16 | 4 / Little | uint32 | hardware_survey_id | ID of a hardware survey that the client should perform. Set to 0 to not use. Can safely be set to 0. |
(2)
Offset | Size | Type | Name | Description |
---|---|---|---|---|
Header | ||||
0x0 | 1 / - | uint8 | command | LOGIN_PROOF (0x1) |
0x1 | 1 / - | uint8 | result | The fields below are only included if this is SUCCESS (0x0). If this is not SUCCESS (0x0) two padding bytes are added after this. |
- | 2 / - | uint16 | result_padding | Only included if error is not SUCCESS (0x00). |
Body | ||||
0x2 | 20 / Little | uint8[20] | server_proof | SRP6 Server proof. |
0x16 | 4 / Little | uint32 | account_flag | ACCOUNT_FLAG_GM = 0x00000001, ACCOUNT_FLAG_TRIAL = 0x00000008, ACCOUNT_FLAG_PROPASS = 0x00800000 Mangos statically sets this to PROPASS. This field does not exist < (2.4.0). |
0x20 | 4 / Little | uint32 | hardware_survey_id | ID of a hardware survey that the client should perform. Set to 0 to not use. Can safely be set to 0. |
0x24 | 2 / Little | uint16 | unknown_flags | Mangos describes as "some flags (AccountMsgAvailable = 0x01)" and statically sets to 0. |
Size
For version ≤ (1) if the result is not SUCCESS (0x00) the packet is 2 bytes. If it is SUCCESS the packet is 26 bytes.
For version ≥ (2) if the result is not SUCCESS (0x00) the packet is 4 bytes. If it is SUCCESS the packet is 38 bytes.
Example Packet
Below is complete packet sent from a (1.12.1.5875) client. The values are explained as comments. This can be used for verifying packet parser implementations.
First a failed one
char bytes[] = { 0x01, // Opcode: CMD_AUTH_LOGON_PROOF 0x04 // Result: FAIL_UNKNOWN_ACCOUNT };
Then a successful one
char bytes[] = { 0x01, // Opcode: CMD_AUTH_LOGON_PROOF 0x00, // Result: SUCCESS 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, // Server proof 0xEF, 0xBE, 0xAD, 0xDE // Hardware Survey ID: 0xDEADBEEF }