mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Bug fix
This commit is contained in:
parent
0ce9690778
commit
052060b23c
4 changed files with 44 additions and 21 deletions
|
|
@ -670,11 +670,12 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Todo: verify message
|
|
||||||
bool verifyResult;
|
bool verifyResult;
|
||||||
if (!isOnlineMode)
|
if (!isOnlineMode || messageSignature == null)
|
||||||
verifyResult = false;
|
verifyResult = false;
|
||||||
else if (senderUUID == handler.GetUserUuid())
|
else
|
||||||
|
{
|
||||||
|
if (senderUUID == handler.GetUserUuid())
|
||||||
verifyResult = true;
|
verifyResult = true;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -684,15 +685,13 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
verifyResult = false;
|
verifyResult = false;
|
||||||
//bool lastVerifyResult = player.IsMessageChainLegal();
|
verifyResult = player.VerifyMessage(message, senderUUID, player.ChatUuid, index, timestamp, salt, ref messageSignature, previousMessageSignatures);
|
||||||
//verifyResult = player.VerifyMessage(message, timestamp, salt, ref headerSignature, ref precedingSignature, lastSeenMessages);
|
}
|
||||||
//if (lastVerifyResult && !verifyResult)
|
|
||||||
// log.Warn(string.Format(Translations.chat_message_chain_broken, senderDisplayName));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatMessage chat = new(message, false, chatTypeId, senderUUID, unsignedChatContent, senderDisplayName, senderTeamName, timestamp, messageSignature, verifyResult);
|
ChatMessage chat = new(message, false, chatTypeId, senderUUID, unsignedChatContent, senderDisplayName, senderTeamName, timestamp, messageSignature, verifyResult);
|
||||||
if (isOnlineMode && !chat.LacksSender() && messageSignature != null)
|
if (isOnlineMode && !chat.LacksSender() && verifyResult)
|
||||||
Acknowledge(chat);
|
Acknowledge(chat);
|
||||||
handler.OnTextReceived(chat);
|
handler.OnTextReceived(chat);
|
||||||
}
|
}
|
||||||
|
|
@ -727,9 +726,8 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
int messageType_ = dataTypes.ReadNextVarInt(packetData);
|
int messageType_ = dataTypes.ReadNextVarInt(packetData);
|
||||||
string messageName = dataTypes.ReadNextString(packetData);
|
string messageName = dataTypes.ReadNextString(packetData);
|
||||||
string? targetName_ = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextString(packetData) : null;
|
string? targetName_ = dataTypes.ReadNextBool(packetData) ? dataTypes.ReadNextString(packetData) : null;
|
||||||
ChatMessage profilelessChat = new(message_, messageName, true, messageType_, Guid.Empty, true);
|
ChatMessage profilelessChat = new(message_, targetName_ ?? messageName, true, messageType_, Guid.Empty, true);
|
||||||
profilelessChat.isSenderJson = true;
|
profilelessChat.isSenderJson = true;
|
||||||
profilelessChat.teamName = targetName_;
|
|
||||||
handler.OnTextReceived(profilelessChat);
|
handler.OnTextReceived(profilelessChat);
|
||||||
break;
|
break;
|
||||||
case PacketTypesIn.CombatEvent:
|
case PacketTypesIn.CombatEvent:
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ namespace MinecraftClient.Protocol.Message
|
||||||
|
|
||||||
public bool? isSignatureLegal;
|
public bool? isSignatureLegal;
|
||||||
|
|
||||||
public ChatMessage(string content, bool isJson, int chatType, Guid senderUUID, string? unsignedContent, string displayName, string? teamName, long timestamp, byte[] signature, bool isSignatureLegal)
|
public ChatMessage(string content, bool isJson, int chatType, Guid senderUUID, string? unsignedContent, string displayName, string? teamName, long timestamp, byte[]? signature, bool isSignatureLegal)
|
||||||
{
|
{
|
||||||
isSignedChat = true;
|
isSignedChat = true;
|
||||||
isSystemChat = false;
|
isSystemChat = false;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data.SqlTypes;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using MinecraftClient.Protocol.Handlers;
|
||||||
using MinecraftClient.Protocol.Keys;
|
using MinecraftClient.Protocol.Keys;
|
||||||
using MinecraftClient.Protocol.Message;
|
using MinecraftClient.Protocol.Message;
|
||||||
|
|
||||||
|
|
@ -28,6 +32,8 @@ namespace MinecraftClient.Protocol
|
||||||
|
|
||||||
// For message signature
|
// For message signature
|
||||||
|
|
||||||
|
public int MessageIndex = -1;
|
||||||
|
|
||||||
public Guid ChatUuid = Guid.Empty;
|
public Guid ChatUuid = Guid.Empty;
|
||||||
|
|
||||||
private PublicKey? PublicKey;
|
private PublicKey? PublicKey;
|
||||||
|
|
@ -131,7 +137,7 @@ namespace MinecraftClient.Protocol
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Verify message - 1.19.1 and above
|
/// Verify message - 1.19.1 and 1.19.2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="message">Message content</param>
|
/// <param name="message">Message content</param>
|
||||||
/// <param name="timestamp">Timestamp</param>
|
/// <param name="timestamp">Timestamp</param>
|
||||||
|
|
@ -169,7 +175,7 @@ namespace MinecraftClient.Protocol
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Verify message head - 1.19.1 and above
|
/// Verify message head - 1.19.1 and 1.19.2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="precedingSignature">Preceding message signature</param>
|
/// <param name="precedingSignature">Preceding message signature</param>
|
||||||
/// <param name="headerSignature">Message signature</param>
|
/// <param name="headerSignature">Message signature</param>
|
||||||
|
|
@ -197,5 +203,24 @@ namespace MinecraftClient.Protocol
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verify message - 1.19.3 and above
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="message">Message content</param>
|
||||||
|
/// <param name="timestamp">Timestamp</param>
|
||||||
|
/// <param name="salt">Salt</param>
|
||||||
|
/// <param name="signature">Message signature</param>
|
||||||
|
/// <param name="precedingSignature">Preceding message signature</param>
|
||||||
|
/// <param name="lastSeenMessages">LastSeenMessages</param>
|
||||||
|
/// <returns>Is this message chain vaild</returns>
|
||||||
|
public bool VerifyMessage(string message, Guid playerUuid, Guid chatUuid, int messageIndex, long timestamp, long salt, ref byte[] signature, Tuple<int, byte[]?>[] previousMessageSignatures)
|
||||||
|
{
|
||||||
|
if (PublicKey == null || IsKeyExpired())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// net.minecraft.server.network.ServerPlayNetworkHandler#validateMessage
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ namespace MinecraftClient.Protocol.Keys
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Verify message - 1.19.1 and above
|
/// Verify message - 1.19.1 and 1.19.2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="message">Message content</param>
|
/// <param name="message">Message content</param>
|
||||||
/// <param name="uuid">Sender uuid</param>
|
/// <param name="uuid">Sender uuid</param>
|
||||||
|
|
@ -79,7 +79,7 @@ namespace MinecraftClient.Protocol.Keys
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Verify message head - 1.19.1 and above
|
/// Verify message head - 1.19.1 and 1.19.2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bodyDigest">Message body hash</param>
|
/// <param name="bodyDigest">Message body hash</param>
|
||||||
/// <param name="signature">Message signature</param>
|
/// <param name="signature">Message signature</param>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue