From 4efb1e4012f856161194bf74b66e091516f9c280 Mon Sep 17 00:00:00 2001 From: Verox001 Date: Tue, 25 Feb 2025 01:42:03 +0100 Subject: [PATCH] Finished login process. Next: configuration --- main.go | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index 8984dff..416f973 100644 --- a/main.go +++ b/main.go @@ -13,11 +13,13 @@ import ( ) const ( - HandshakePacketID = 0x00 - StatusRequestID = 0x00 - StatusResponseID = 0x00 - PingRequestID = 0x01 - PongResponseID = 0x01 + HandshakePacketID = 0x00 + StatusRequestID = 0x00 + StatusResponseID = 0x00 + PingRequestID = 0x01 + PongResponseID = 0x01 + LoginPluginResponseID = 0x02 + LoginAcknowledgedID = 0x03 ) type PrefixedByteArray struct { @@ -206,6 +208,25 @@ func handleConnection(client *ClientState) { } else { fmt.Println("Pong response sent successfully:", timestamp) } + case LoginAcknowledgedID: + fmt.Println("Received login acknowledge") + + // TODO: Switch state to configuration + case LoginPluginResponseID: + sharedSecret, err := readPrefixedByteArray(packetReader) + if err != nil { + fmt.Println("Error reading shared secret:", err) + break + } + + verifyToken, err := readPrefixedByteArray(packetReader) + if err != nil { + fmt.Println("Error reading verify token:", err) + break + } + + fmt.Println("Shared Secret:", sharedSecret) + fmt.Println("Verify Token:", verifyToken) } } } @@ -397,3 +418,17 @@ func readUUID(reader *bytes.Reader) (string, error) { return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[0:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]), nil } + +func readPrefixedByteArray(reader *bytes.Reader) (PrefixedByteArray, error) { + length, err := readVarInt(reader) + if err != nil { + return PrefixedByteArray{}, err + } + + data := make([]byte, length) + if _, err := reader.Read(data); err != nil { + return PrefixedByteArray{}, err + } + + return PrefixedByteArray{Length: length, Data: data}, nil +}