From d1e6d24c84c292b4e9dc7e94e00312b4d9f07fbf Mon Sep 17 00:00:00 2001 From: Night Stalker Date: Sat, 11 Jan 2025 20:41:56 +0700 Subject: [PATCH] Fixed SMSG_AUTH_CHALLENGE, CMSG_AUTH_CONTINUED_SESSION, CMSG_AUTH_SESSION structure for 11.0 --- .../Parsers/AuthenticationHandler.cs | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 WowPacketParserModule.V11_0_0_55666/Parsers/AuthenticationHandler.cs diff --git a/WowPacketParserModule.V11_0_0_55666/Parsers/AuthenticationHandler.cs b/WowPacketParserModule.V11_0_0_55666/Parsers/AuthenticationHandler.cs new file mode 100644 index 0000000000..29b76b42fe --- /dev/null +++ b/WowPacketParserModule.V11_0_0_55666/Parsers/AuthenticationHandler.cs @@ -0,0 +1,52 @@ +using System.Text; +using WowPacketParser.Enums; +using WowPacketParser.Misc; +using WowPacketParser.Parsing; + +namespace WowPacketParserModule.V11_0_0_55666.Parsers +{ + public static class AuthenticationHandler + { + [Parser(Opcode.SMSG_AUTH_CHALLENGE)] + public static void HandleServerAuthChallenge(Packet packet) + { + for (uint i = 0; i < 8; ++i) + packet.ReadUInt32("DosChallenge", i); + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_7_58123)) + packet.ReadBytes("Challenge", 16); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_7_58123)) + packet.ReadBytes("Challenge", 32); + packet.ReadByte("DosZeroBits"); + } + + [Parser(Opcode.CMSG_AUTH_CONTINUED_SESSION)] + public static void HandleRedirectAuthProof(Packet packet) + { + packet.ReadInt64("DosResponse"); + packet.ReadInt64("Key"); + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_7_58123)) + packet.ReadBytes("LocalChallenge", 16); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_7_58123)) + packet.ReadBytes("LocalChallenge", 32); + packet.ReadBytes("Digest", 24); + } + + [Parser(Opcode.CMSG_AUTH_SESSION)] + public static void HandleAuthSession(Packet packet) + { + packet.ReadUInt64("DosResponse"); + packet.ReadUInt32("RegionID"); + packet.ReadUInt32("BattlegroupID"); + packet.ReadUInt32("RealmID"); + if (ClientVersion.RemovedInVersion(ClientVersionBuild.V11_0_7_58123)) + packet.ReadBytes("LocalChallenge", 16); + if (ClientVersion.AddedInVersion(ClientVersionBuild.V11_0_7_58123)) + packet.ReadBytes("LocalChallenge", 32); + packet.ReadBytes("Digest", 24); + packet.ReadBit("UseIPv6"); + + var realmJoinTicketSize = packet.ReadInt32(); + packet.ReadBytes("RealmJoinTicket", realmJoinTicketSize); + } + } +}