Packets/Login/Vanilla: Difference between revisions

From wowdev
Jump to navigation Jump to search
(Created page with "== 1.1.2.4125 == It's worth noting that, for this build, the client automatically disconnect after a successful login challenge and proof exchange and sends a reconnect packe...")
 
m (→‎Opcodes and Errors: Add notice about security flags)
 
(43 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== 1.1.2.4125 ==
It's worth noting that, for build {{Template:Sandbox/PrettyVersion|expansionlevel=1|build=1.1.2.4125}}, the client automatically disconnects after a successful login challenge and proof exchange and sends a reconnect packet right away instead of asking for the realm list.


It's worth noting that, for this build, the client automatically disconnect after a successful login challenge and proof exchange and sends a reconnect packet right away instead of asking for the realm list.
== Opcodes and Errors ==


Challenge packets:
See [[Login Packet]]s. The opcode value corresponds to the packet name.


{| class="wikitable"
See [[Login Packet Results]] for result values.
|+ AuthLogonChallenge_Client
! Offset
! Type
! Name
! Description
|-
| 0x0 || uint8 || command || 0x0
|-
| 0x1 || uint8 || error
|-
| 0x2 || uint16 || size
|-
| 0x4 || char[4] || gamename || 'WoW'
|-
| 0x8 || uint8[3] || version || 0x01 0x01 0x02
|-
| 0xB || uint16 || build || 4125, aka [[Rev|Revision]]
|-
| 0xD || char[4] || platform || eg 'x86'
|-
| 0x11 || char[4] || os || eg 'Win'
|-
| 0x15 || char[4] || country || eg 'enUS'
|-
| 0x19 || uint32 || worldregion_bias || ?
|-
| 0x1D || uint32 || ip || client_ip
|-
| 0x21 || uint8 || account_name_len
|-
| 0x22 || char[account_name_len] || account_name
|}


{| class="wikitable"
See [[Login Packet Security Flags]] for security flag values. These are only used for {{Template:Sandbox/PrettyVersion|expansionlevel=2}} and later.
|+ AuthLogonChallenge_Server
! Offset
! Type
! Name
! Description
|-
| 0x1 || uint8 || command || 0x0
|-
| 0x2 || uint8 || unk
|-
| 0x3 || uint8 || err
|-
| 0x4 || char[32] || B || SRP public server ephemeral
|-
| 0x24 || uint8 || g_len || SRP generator length
|-
| 0x25 || uint8 || g || SRP generator
|-
| 0x26 || uint8 || n_len || SRP modulus length
|-
| 0x27 || char[32] || n || SRP modulus
|-
| 0x47 || char[32] || srp_salt || SRP user's salt
|-
| 0x47 || char[16] || crc_salt || A salt to be used in AuthLogonProof_Client.crc_hash
|}


Proof packets:
==Challenge packets==


{| class="wikitable"
=== Client ===
|+ 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
|}


{| class="wikitable"
See [[CMD_AUTH_LOGON_CHALLENGE_Client]].
|+ AuthLogonProof_Server
! Offset
! Type
! Name
! Description
|-
| 0x0 || uint8 || command || 0x1
|-
| 0x1 || uint8 || error
|-
| 0x2 || uint8[20] || m2
|-
| 0x16 || uint32 || unk
|}


Reconnection challenge packets:
=== Server ===


AuthReconnectionChallenge_Client has the same structure as AuthLogonChallenge_Client, except that the command is 0x2.
See [[CMD_AUTH_LOGON_CHALLENGE_Server]].


{| class="wikitable"
==Proof packets==
|+ AuthReconnectionChallenge_Server
! Offset
! Type
! Name
! Description
|-
| 0x0 || uint8 || command || 0x2
|-
| 0x1 || uint8 || error
|-
| 0x2 || char[16] || challenge_data || random data, used as a challenge
|-
| 0x12 || uint64 || unk1
|-
| 0x1A || uint64 || unk2
|}


Reconnection proof packets:


{| class="wikitable"
=== Client ===
|+ AuthReconnectionProof_Client
 
! Offset
See [[CMD_AUTH_LOGON_PROOF_Client]].
! Type
 
! Name
=== Server ===
! Description
 
|-
See [[CMD_AUTH_LOGON_PROOF_Server]].
| 0x0 || uint8 || command || 0x3
 
|-
==Reconnection challenge packets==
| 0x1 || char[16] || proof_data
 
|-
=== Client ===
| 0x11 || char[20] || client_proof
 
|-
The reconnect client packet has the same format as [[CMD_AUTH_LOGON_CHALLENGE_Client]] except that the opcode field is 0x2 instead of 0x0.
| 0x25 || char[20] || unk_hash
 
|-
=== Server ===
| 0x39 || uint8 || unk
 
|}
See [[CMD_AUTH_RECONNECT_CHALLENGE_Server]].
 
==Reconnection proof packets==
 
=== Client ===
 
See [[CMD_AUTH_RECONNECT_PROOF_Client]].


To check if the client proof is correct, the server must calculate SHA1(account_name | proof_data | challenge_data | session_key) and compare it to client_proof.
To check if the client proof is correct, the server must calculate SHA1(account_name | proof_data | challenge_data | session_key) and compare it to client_proof.


{| class="wikitable"
=== Server ===
|+ AuthReconnectionProof_Server
 
! Offset
See [[CMD_AUTH_RECONNECT_PROOF_Server]].
! Type
 
! Name
==Realm list packets==
! Description
 
|-
=== Client ===
| 0x0 || uint8 || command || 0x3
 
|-
See [[CMD_REALM_LIST_Client]].
| 0x1 || uint8 || error
 
|}
=== Server ===
 
See [[CMD_REALM_LIST_Server]].
 
 
[[Category:Login]]
[[Category:Packet]]
[[Category:Packet/Login]]

Latest revision as of 21:01, 21 May 2021

It's worth noting that, for build Vanilla (1.1.2.4125), the client automatically disconnects after a successful login challenge and proof exchange and sends a reconnect packet right away instead of asking for the realm list.

Opcodes and Errors

See Login Packets. The opcode value corresponds to the packet name.

See Login Packet Results for result values.

See Login Packet Security Flags for security flag values. These are only used for BC and later.

Challenge packets

Client

See CMD_AUTH_LOGON_CHALLENGE_Client.

Server

See CMD_AUTH_LOGON_CHALLENGE_Server.

Proof packets

Client

See CMD_AUTH_LOGON_PROOF_Client.

Server

See CMD_AUTH_LOGON_PROOF_Server.

Reconnection challenge packets

Client

The reconnect client packet has the same format as CMD_AUTH_LOGON_CHALLENGE_Client except that the opcode field is 0x2 instead of 0x0.

Server

See CMD_AUTH_RECONNECT_CHALLENGE_Server.

Reconnection proof packets

Client

See CMD_AUTH_RECONNECT_PROOF_Client.

To check if the client proof is correct, the server must calculate SHA1(account_name | proof_data | challenge_data | session_key) and compare it to client_proof.

Server

See CMD_AUTH_RECONNECT_PROOF_Server.

Realm list packets

Client

See CMD_REALM_LIST_Client.

Server

See CMD_REALM_LIST_Server.