diff --git a/Source/Framework/Realm/RealmManager.cs b/Source/Framework/Realm/RealmManager.cs index 0764b74c4..e1155a863 100644 --- a/Source/Framework/Realm/RealmManager.cs +++ b/Source/Framework/Realm/RealmManager.cs @@ -279,13 +279,10 @@ public class RealmManager : Singleton byte[] compressed = Json.Deflate("JSONRealmListServerIPAddresses", serverAddresses); byte[] serverSecret = new byte[0].GenerateRandomKey(32); - - Sha256 sha256 = new Sha256(); - sha256.Process(clientSecret.ToArray(), clientSecret.Count); - sha256.Finish(serverSecret, 32); + byte[] keyData = clientSecret.ToArray().Combine(serverSecret); PreparedStatement stmt = DB.Login.GetPreparedStatement(LoginStatements.UPD_BNET_GAME_ACCOUNT_LOGIN_INFO); - stmt.AddValue(0, sha256.Digest.ToHexString()); + stmt.AddValue(0, keyData.ToHexString()); stmt.AddValue(1, clientAddress.ToString()); stmt.AddValue(2, locale); stmt.AddValue(3, os); diff --git a/Source/Game/DataStorage/ClientReader/CliDBReader.cs b/Source/Game/DataStorage/ClientReader/CliDBReader.cs index 810add22d..3587bfef5 100644 --- a/Source/Game/DataStorage/ClientReader/CliDBReader.cs +++ b/Source/Game/DataStorage/ClientReader/CliDBReader.cs @@ -503,9 +503,11 @@ namespace Game.DataStorage { case 1: // 2 bytes _commandData[i].Add(id, reader.ReadBytes(2)); + reader.BaseStream.Position += 2; break; case 2: // 1 bytes _commandData[i].Add(id, reader.ReadBytes(1)); + reader.BaseStream.Position += 3; break; case 3: // 4 bytes case 4: diff --git a/Source/Game/Network/WorldSocket.cs b/Source/Game/Network/WorldSocket.cs index 1d2534237..837d5f0e8 100644 --- a/Source/Game/Network/WorldSocket.cs +++ b/Source/Game/Network/WorldSocket.cs @@ -383,9 +383,6 @@ namespace Game.Network // For hook purposes, we get Remoteaddress at this point. string address = GetRemoteIpAddress().ToString(); - Sha256 digestKeyHash = new Sha256(); - digestKeyHash.Process(account.game.SessionKey, account.game.SessionKey.Length); - uint[] clientSeed = ClientTypeSeed_Win; if (account.game.OS == "Wn64") clientSeed = ClientTypeSeed_Wn64; @@ -395,6 +392,10 @@ namespace Game.Network byte[] byteArray = new byte[clientSeed.Length * 4]; Buffer.BlockCopy(clientSeed, 0, byteArray, 0, clientSeed.Length * 4); + Sha256 digestKeyHash = new Sha256(); + digestKeyHash.Process(account.game.SessionKey, account.game.SessionKey.Length); + digestKeyHash.Finish(byteArray, byteArray.Length); + HmacSha256 hmac = new HmacSha256(digestKeyHash.Digest); hmac.Process(authSession.LocalChallenge, authSession.LocalChallenge.Count); hmac.Process(_serverChallenge, 16);