CMD AUTH LOGON PROOF Client: Difference between revisions
Jump to navigation
Jump to search
(Remove incorrect redirect) Tag: Blanking |
(Add packet layouts) |
||
Line 1: | Line 1: | ||
= Packet Layout = | |||
== {{Template:Sandbox/PrettyVersion|expansionlevel=1|build=1.1.2.4125}} == | |||
{| class="wikitable" | |||
|+ AuthLogonProof_Client | |||
! Offset | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| 0x0 || uint8 || command || 0x1 | |||
|- | |||
| 0x1 || uint8[32] || a | |||
|- | |||
| 0x21 || uint8[20] || m1 | |||
|- | |||
| 0x35 || uint8[20] || crc_hash | |||
|- | |||
| 0x49 || uint8 || num_keys | |||
|} | |||
== {{Template:Sandbox/PrettyVersion|expansionlevel=1|build=1.12.1.5875}} == | |||
{| class="wikitable" | |||
|+ AuthLogonProof_Client | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| 0x0 || 1 / - || uint8 || command || LOGIN_PROOF (0x1) | |||
|- | |||
| 0x1 || 32 / Little || uint8[32] || a || SRP6 Client public key. Called A (capital A) in RFC2945. | |||
|- | |||
| 0x21 || 20 / Little || uint8[20] || m1 || SRP6 Client proof. | |||
|- | |||
| 0x35 || 20 / Little || uint8[20] || crc_hash || Hash of arbitrary files. Can be safely ignored. | |||
|- | |||
| 0x49 || 1 / - || uint8 || num_keys || Used for unknown telemetry. Can be expected to always be 0.<br>See the table below for when it is not 0. | |||
|- | |||
!colspan="5"| num_keys amounts of num_key fields, if applicable. | |||
|- | |||
| 0x4A || 1 / - || bool (size 1 byte) || two_factor_enabled || If false the packet ends here, if true the fields in the table below are included.<br> Added in 1.12.x client branch. | |||
|- | |||
!colspan="5"| security_flags.PIN fields, if applicable. | |||
|} | |||
When num_keys is not 0, the field is followed by 4 key data fields that repeat num_key times. | |||
{| class="wikitable" | |||
|+ num_keys Fields | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| || 2 / - || uint16 || unk1 || Used for unknown telemetry. Can be expected to not be present. | |||
|- | |||
| || 4 / - || uint32 || unk2 || Used for unknown telemetry. Can be expected to not be present. | |||
|- | |||
| || 4 / - || uint8[4] || unk3 || Used for unknown telemetry. Can be expected to not be present. | |||
|- | |||
| || 20 / - || uint8[20] || unk4 || Used for unknown telemetry. Can be expected to not be present. | |||
|} | |||
When two_factor_enabled is not 0, the field is followed by the data in the table below. | |||
{| class="wikitable" | |||
|+ two_factor_enabled Fields | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| || 16 / ? || uint8[16] || pin_salt || Salt used for PIN. Only included if two_factor_enabled is true. | |||
|- | |||
| || 20 / ? || uint8[20] || pin_hash || Client proof for PIN. Only included if two_factor_enabled is true. | |||
|} | |||
== {{Template:Sandbox/PrettyVersion|expansionlevel=2|build=2.4.3.8606}} == | |||
{| class="wikitable" | |||
|+ AuthLogonProof_Client | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| 0x0 || 1 / - || uint8 || command || LOGIN_PROOF (0x1) | |||
|- | |||
| 0x1 || 32 / Little || uint8[32] || a || SRP6 Client public key. Called A (capital A) in RFC2945. | |||
|- | |||
| 0x21 || 20 / Little || uint8[20] || m1 || SRP6 Client proof. | |||
|- | |||
| 0x35 || 20 / Little || uint8[20] || crc_hash || Hash of arbitrary files. Can be safely ignored. | |||
|- | |||
| 0x49 || 1 / - || uint8 || num_keys || Used for unknown telemetry. Can be expected to always be 0.<br>See the table below for when it is not 0. | |||
|- | |||
!colspan="5"| num_keys amounts of num_key fields, if applicable. | |||
|- | |||
| 0x4A || 1 / - || bool (size 1 byte) || security_flags || Bit pattern for optional authentication features.<br>More than one feature can be used,<br> and the fields are just appended in the bit pattern order from lowest first.<br>See security_flag. tables below for specifics. If 0 the packet ends here. | |||
|- | |||
!colspan="5"| security_flags.PIN fields, if applicable. | |||
|- | |||
!colspan="5"| security_flags.unknown fields, if applicable. | |||
|- | |||
!colspan="5"| security_flags.Authenticator field, if applicable. | |||
|} | |||
When num_keys is not 0, the field is followed by 4 key data fields that repeat num_key times. | |||
{| class="wikitable" | |||
|+ num_keys Fields | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| || 2 / - || uint16 || unk1 || Used for unknown telemetry. Can be expected to not be present. | |||
|- | |||
| || 4 / - || uint32 || unk2 || Used for unknown telemetry. Can be expected to not be present. | |||
|- | |||
| || 4 / - || uint8[4] || unk3 || Used for unknown telemetry. Can be expected to not be present. | |||
|- | |||
| || 20 / - || uint8[20] || unk4 || Used for unknown telemetry. Can be expected to not be present. | |||
|} | |||
When security_flags is not 0 the following fields can appear. | |||
{| class="wikitable" | |||
|+ security_flags.PIN Fields | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| 0x00 || 4 / Little || uint32 || pin_grid_seed || Seed value for the PIN grid on the client.<br> Only here if the two_factor_authentication field is true. | |||
|- | |||
| 0x04 || 16 / Little || uint8[16] || pin_salt || Salt value for the client.<br> Only here if the two_factor_authentication field is true. | |||
|} | |||
{| class="wikitable" | |||
|+ security_flags.Unknown0 Fields | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| 0x00 || 1 / - || uint8 || unknown0 || Unknown. Statically set to 0 in Mangos. | |||
|- | |||
| 0x01 || 1 / - || uint8 || unknown1 || Unknown. Statically set to 0 in Mangos. | |||
|- | |||
| 0x02 || 1 / - || uint8 || unknown2 || Unknown. Statically set to 0 in Mangos. | |||
|- | |||
| 0x03 || 1 / - || uint8 || unknown3 || Unknown. Statically set to 0 in Mangos. | |||
|- | |||
| 0x04 || 8 / - || uint64 || unknown4 || Unknown. Statically set to 0 in Mangos. | |||
|} | |||
{| class="wikitable" | |||
|+ security_flags.Authenticator Fields | |||
! Offset | |||
! Size / Endianness | |||
! Type | |||
! Name | |||
! Description | |||
|- | |||
| 0x00 || 1 / - || uint8 || unknown0 || Statically set to 1 in Mangos. | |||
|} |
Revision as of 18:53, 21 May 2021
Packet Layout
(1.1.2.4125)
Offset | Type | Name | Description |
---|---|---|---|
0x0 | uint8 | command | 0x1 |
0x1 | uint8[32] | a | |
0x21 | uint8[20] | m1 | |
0x35 | uint8[20] | crc_hash | |
0x49 | uint8 | num_keys |
(1.12.1.5875)
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x0 | 1 / - | uint8 | command | LOGIN_PROOF (0x1) |
0x1 | 32 / Little | uint8[32] | a | SRP6 Client public key. Called A (capital A) in RFC2945. |
0x21 | 20 / Little | uint8[20] | m1 | SRP6 Client proof. |
0x35 | 20 / Little | uint8[20] | crc_hash | Hash of arbitrary files. Can be safely ignored. |
0x49 | 1 / - | uint8 | num_keys | Used for unknown telemetry. Can be expected to always be 0. See the table below for when it is not 0. |
num_keys amounts of num_key fields, if applicable. | ||||
0x4A | 1 / - | bool (size 1 byte) | two_factor_enabled | If false the packet ends here, if true the fields in the table below are included. Added in 1.12.x client branch. |
security_flags.PIN fields, if applicable. |
When num_keys is not 0, the field is followed by 4 key data fields that repeat num_key times.
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
2 / - | uint16 | unk1 | Used for unknown telemetry. Can be expected to not be present. | |
4 / - | uint32 | unk2 | Used for unknown telemetry. Can be expected to not be present. | |
4 / - | uint8[4] | unk3 | Used for unknown telemetry. Can be expected to not be present. | |
20 / - | uint8[20] | unk4 | Used for unknown telemetry. Can be expected to not be present. |
When two_factor_enabled is not 0, the field is followed by the data in the table below.
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
16 / ? | uint8[16] | pin_salt | Salt used for PIN. Only included if two_factor_enabled is true. | |
20 / ? | uint8[20] | pin_hash | Client proof for PIN. Only included if two_factor_enabled is true. |
(2.4.3.8606)
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x0 | 1 / - | uint8 | command | LOGIN_PROOF (0x1) |
0x1 | 32 / Little | uint8[32] | a | SRP6 Client public key. Called A (capital A) in RFC2945. |
0x21 | 20 / Little | uint8[20] | m1 | SRP6 Client proof. |
0x35 | 20 / Little | uint8[20] | crc_hash | Hash of arbitrary files. Can be safely ignored. |
0x49 | 1 / - | uint8 | num_keys | Used for unknown telemetry. Can be expected to always be 0. See the table below for when it is not 0. |
num_keys amounts of num_key fields, if applicable. | ||||
0x4A | 1 / - | bool (size 1 byte) | security_flags | Bit pattern for optional authentication features. More than one feature can be used, and the fields are just appended in the bit pattern order from lowest first. See security_flag. tables below for specifics. If 0 the packet ends here. |
security_flags.PIN fields, if applicable. | ||||
security_flags.unknown fields, if applicable. | ||||
security_flags.Authenticator field, if applicable. |
When num_keys is not 0, the field is followed by 4 key data fields that repeat num_key times.
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
2 / - | uint16 | unk1 | Used for unknown telemetry. Can be expected to not be present. | |
4 / - | uint32 | unk2 | Used for unknown telemetry. Can be expected to not be present. | |
4 / - | uint8[4] | unk3 | Used for unknown telemetry. Can be expected to not be present. | |
20 / - | uint8[20] | unk4 | Used for unknown telemetry. Can be expected to not be present. |
When security_flags is not 0 the following fields can appear.
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 4 / Little | uint32 | pin_grid_seed | Seed value for the PIN grid on the client. Only here if the two_factor_authentication field is true. |
0x04 | 16 / Little | uint8[16] | pin_salt | Salt value for the client. Only here if the two_factor_authentication field is true. |
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | unknown0 | Unknown. Statically set to 0 in Mangos. |
0x01 | 1 / - | uint8 | unknown1 | Unknown. Statically set to 0 in Mangos. |
0x02 | 1 / - | uint8 | unknown2 | Unknown. Statically set to 0 in Mangos. |
0x03 | 1 / - | uint8 | unknown3 | Unknown. Statically set to 0 in Mangos. |
0x04 | 8 / - | uint64 | unknown4 | Unknown. Statically set to 0 in Mangos. |
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 1 / - | uint8 | unknown0 | Statically set to 1 in Mangos. |