From 4b25fafbe5990647dde29e85aaec4bf382652736 Mon Sep 17 00:00:00 2001 From: Verox001 Date: Mon, 24 Feb 2025 19:07:12 +0100 Subject: [PATCH] Finished handling of LoginStart: Now sending EncryptionRequest back --- main.go | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/main.go b/main.go index 9dccd7e..670bf1b 100644 --- a/main.go +++ b/main.go @@ -30,11 +30,16 @@ type HandshakePacket struct { NextState int } -type LoginStartPacket struct { +type EncryptionPacket struct { SharedSecret PrefixedByteArray VerifyToken PrefixedByteArray } +type LoginStartPacket struct { + Name string + UUID string +} + type StatusResponse struct { Version VersionInfo `json:"version"` Players PlayerInfo `json:"players"` @@ -106,6 +111,8 @@ func handleConnection(client *ClientState) { reader := bytes.NewReader(buf[:n]) + fmt.Println("Received data:", buf[:n]) + // Read packet length packetLength, err := readVarInt(reader) if err != nil { @@ -230,17 +237,16 @@ func handleLoginStart(reader *bytes.Reader) (LoginStartPacket, error) { var packet LoginStartPacket var err error - packet.SharedSecret, err = readPrefixedByteArray(reader) + packet.Name, err = readString(reader) if err != nil { return packet, err } - packet.VerifyToken, err = readPrefixedByteArray(reader) + packet.UUID, err = readUUID(reader) if err != nil { return packet, err } - fmt.Printf("Login Start received: %+v\n", packet) return packet, nil } @@ -331,15 +337,12 @@ func readString(reader *bytes.Reader) (string, error) { return string(strBuf), nil } -func readPrefixedByteArray(reader *bytes.Reader) (PrefixedByteArray, error) { - length, err := readVarInt(reader) - if err != nil { - return PrefixedByteArray{}, err +func readUUID(reader *bytes.Reader) (string, error) { + // UUID is 16 bytes + uuid := make([]byte, 16) + if _, err := reader.Read(uuid); err != nil { + return "", err } - data := make([]byte, length) - if _, err := reader.Read(data); err != nil { - return PrefixedByteArray{}, err - } - return PrefixedByteArray{Length: length, Data: data}, nil + return fmt.Sprintf("%x-%x-%x-%x-%x", uuid[0:4], uuid[4:6], uuid[6:8], uuid[8:10], uuid[10:]), nil }