mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-11-07 17:36:07 +00:00
Send and receive message without message signing
This commit is contained in:
parent
4be7a05006
commit
e447fea16b
3 changed files with 93 additions and 16 deletions
|
|
@ -2,6 +2,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using ImageMagick;
|
||||
using MinecraftClient.Protocol.Message;
|
||||
|
||||
namespace MinecraftClient.Protocol.Keys
|
||||
|
|
@ -124,11 +125,36 @@ namespace MinecraftClient.Protocol.Keys
|
|||
return data.ToArray();
|
||||
}
|
||||
|
||||
public static byte[] GetSignatureData(string message, DateTimeOffset timestamp, ref byte[] salt, Guid sender, Guid sessionUuid)
|
||||
public static byte[] GetSignatureData(string message, DateTimeOffset timestamp, ref byte[] salt, int messageCount, Guid sender, Guid sessionUuid)
|
||||
{
|
||||
List<byte> data = new();
|
||||
|
||||
// TODO!
|
||||
byte[] unknownInt1 = BitConverter.GetBytes(1);
|
||||
Array.Reverse(unknownInt1);
|
||||
data.AddRange(unknownInt1);
|
||||
|
||||
data.AddRange(sender.ToBigEndianBytes());
|
||||
data.AddRange(sessionUuid.ToBigEndianBytes());
|
||||
|
||||
byte[] msgCountByte = BitConverter.GetBytes(messageCount);
|
||||
Array.Reverse(msgCountByte);
|
||||
data.AddRange(msgCountByte);
|
||||
data.AddRange(salt);
|
||||
|
||||
byte[] timestampByte = BitConverter.GetBytes(timestamp.ToUnixTimeSeconds());
|
||||
Array.Reverse(timestampByte);
|
||||
data.AddRange(timestampByte);
|
||||
|
||||
byte[] msgByte = Encoding.UTF8.GetBytes(message);
|
||||
byte[] msgLengthByte = BitConverter.GetBytes(msgByte.Length);
|
||||
Array.Reverse(msgLengthByte);
|
||||
data.AddRange(msgLengthByte);
|
||||
data.AddRange(msgByte);
|
||||
|
||||
byte[] unknownInt2 = BitConverter.GetBytes(0);
|
||||
Array.Reverse(unknownInt2);
|
||||
data.AddRange(unknownInt2);
|
||||
|
||||
return data.ToArray();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,5 +64,10 @@ namespace MinecraftClient.Protocol.Keys
|
|||
return msgSign;
|
||||
}
|
||||
|
||||
public byte[] SignMessage(string message, DateTimeOffset timestamp, ref byte[] salt, int messageCount, Guid sender, Guid sessionUuid)
|
||||
{
|
||||
byte[] data = KeyUtils.GetSignatureData(message, timestamp, ref salt, messageCount, sender, sessionUuid);
|
||||
return SignData(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue