WOW: Add two factor fields for server challenge packet
Wiki reference: https://wowdev.wiki/Packets/Login/Vanilla C++ implementation: https://github.com/EmberEmu/Ember/blob/development/src/login/grunt/server/LoginChallenge.h
This commit is contained in:
parent
ac8f95951e
commit
c0e2f60325
|
@ -153,6 +153,9 @@ static int hf_wow_checksum_salt = -1;
|
||||||
static int hf_wow_client_proof = -1;
|
static int hf_wow_client_proof = -1;
|
||||||
static int hf_wow_client_checksum = -1;
|
static int hf_wow_client_checksum = -1;
|
||||||
|
|
||||||
|
static int hf_wow_two_factor_pin_grid_seed = -1;
|
||||||
|
static int hf_wow_two_factor_pin_salt = -1;
|
||||||
|
|
||||||
static int hf_wow_num_realms = -1;
|
static int hf_wow_num_realms = -1;
|
||||||
static int hf_wow_realm_type = -1;
|
static int hf_wow_realm_type = -1;
|
||||||
static int hf_wow_realm_flags = -1;
|
static int hf_wow_realm_flags = -1;
|
||||||
|
@ -236,7 +239,7 @@ dissect_wow_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
||||||
proto_tree *wow_tree, *wow_realms_tree;
|
proto_tree *wow_tree, *wow_realms_tree;
|
||||||
|
|
||||||
gchar *string, *realm_name;
|
gchar *string, *realm_name;
|
||||||
guint8 cmd, srp_i_len, srp_g_len, srp_n_len, error;
|
guint8 cmd, srp_i_len, srp_g_len, srp_n_len, error, two_factor_enabled;
|
||||||
guint8 num_realms;
|
guint8 num_realms;
|
||||||
guint32 offset = 0;
|
guint32 offset = 0;
|
||||||
gint len, ii;
|
gint len, ii;
|
||||||
|
@ -436,15 +439,25 @@ dissect_wow_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
||||||
offset, 16, ENC_NA);
|
offset, 16, ENC_NA);
|
||||||
offset += 16;
|
offset += 16;
|
||||||
|
|
||||||
if (version_is_at_or_above(1, 12, 0)) {
|
if (!version_is_at_or_above(1, 12, 0)) {
|
||||||
|
/* The two factor fields were added in the 1.12 update. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
two_factor_enabled = tvb_get_guint8(tvb, offset);
|
||||||
proto_tree_add_item(wow_tree, hf_wow_two_factor_enabled, tvb,
|
proto_tree_add_item(wow_tree, hf_wow_two_factor_enabled, tvb,
|
||||||
offset, 1, ENC_LITTLE_ENDIAN);
|
offset, 1, ENC_LITTLE_ENDIAN);
|
||||||
offset += 1;
|
offset += 1;
|
||||||
|
|
||||||
/* There are additional two factor fields if
|
if (!two_factor_enabled) {
|
||||||
* two_factor_enabled is true, although it is
|
break;
|
||||||
* almost never used and getting a capture is hard. */
|
|
||||||
}
|
}
|
||||||
|
proto_tree_add_item(wow_tree, hf_wow_two_factor_pin_grid_seed, tvb,
|
||||||
|
offset, 4, ENC_LITTLE_ENDIAN);
|
||||||
|
offset += 4;
|
||||||
|
|
||||||
|
proto_tree_add_item(wow_tree, hf_wow_two_factor_pin_salt, tvb,
|
||||||
|
offset, 16, ENC_NA);
|
||||||
|
offset += 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -773,6 +786,16 @@ proto_register_wow(void)
|
||||||
FT_BYTES, BASE_NONE, 0, 0,
|
FT_BYTES, BASE_NONE, 0, 0,
|
||||||
NULL, HFILL }
|
NULL, HFILL }
|
||||||
},
|
},
|
||||||
|
{ &hf_wow_two_factor_pin_grid_seed,
|
||||||
|
{ "Two Factor PIN Grid Seed", "wow.two_factor_pin_grid_seed",
|
||||||
|
FT_UINT32, BASE_HEX, 0, 0,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
|
{ &hf_wow_two_factor_pin_salt,
|
||||||
|
{ "Two Factor PIN Salt", "wow.two_factor_pin_salt",
|
||||||
|
FT_BYTES, BASE_NONE, 0, 0,
|
||||||
|
NULL, HFILL }
|
||||||
|
},
|
||||||
{ &hf_wow_num_realms,
|
{ &hf_wow_num_realms,
|
||||||
{ "Number of realms", "wow.num_realms",
|
{ "Number of realms", "wow.num_realms",
|
||||||
FT_UINT16, BASE_DEC, 0, 0,
|
FT_UINT16, BASE_DEC, 0, 0,
|
||||||
|
|
Loading…
Reference in New Issue