From 73f841fe9b85875efeaca8c1eacf5485c5120a79 Mon Sep 17 00:00:00 2001 From: EpicPlayerA10 Date: Fri, 9 Aug 2024 13:55:29 +0200 Subject: [PATCH 1/2] BungeeCord Spoof Module --- .../mixin/HandshakeC2SPacketMixin.java | 54 +++++++++++++++++++ .../meteorclient/systems/modules/Modules.java | 1 + .../systems/modules/misc/BungeeCordSpoof.java | 42 +++++++++++++++ src/main/resources/meteor-client.mixins.json | 3 +- 4 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java new file mode 100644 index 0000000000..5603b04090 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java @@ -0,0 +1,54 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.google.common.base.Charsets; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.misc.BungeeCordSpoof; +import net.minecraft.client.MinecraftClient; +import net.minecraft.network.packet.c2s.handshake.ConnectionIntent; +import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.UUID; + +@Mixin(HandshakeC2SPacket.class) +public class HandshakeC2SPacketMixin { + @Mutable + @Shadow + @Final + private String address; + + @Inject(method = "(ILjava/lang/String;ILnet/minecraft/network/packet/c2s/handshake/ConnectionIntent;)V", at = @At("TAIL")) + public void init(int protocolVersion, String address, int port, ConnectionIntent intendedState, CallbackInfo ci) { + if (Modules.get().isActive(BungeeCordSpoof.class) && intendedState == ConnectionIntent.LOGIN) { + BungeeCordSpoof bungeeCordSpoofModule = Modules.get().get(BungeeCordSpoof.class); + + // Obtain UUID to send + String uuid; + if (!bungeeCordSpoofModule.spoofedUuid.get().isEmpty()) { + uuid = bungeeCordSpoofModule.spoofedUuid.get(); + } else { + UUID currentUuid = MinecraftClient.getInstance().getSession().getUuidOrNull(); + if (currentUuid == null) { + // Cracked account + currentUuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + MinecraftClient.getInstance().getSession().getUsername()).getBytes(Charsets.UTF_8)); + } + + uuid = currentUuid.toString().replace("-", ""); + } + + // hostName \00 spoofed ip \00 spoofed uuid (\00 optional skin) + this.address = address + "\00" + bungeeCordSpoofModule.spoofedIp.get() + "\00" + uuid; + } + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java index 5b0b98343a..5c9b2102ac 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/Modules.java @@ -586,6 +586,7 @@ private void initMisc() { add(new Spam()); add(new ServerSpoof()); add(new InventoryTweaks()); + add(new BungeeCordSpoof()); } public static class ModuleRegistry extends SimpleRegistry { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java new file mode 100644 index 0000000000..f05e1a47cb --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java @@ -0,0 +1,42 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.systems.modules.misc; + +import meteordevelopment.meteorclient.settings.Setting; +import meteordevelopment.meteorclient.settings.SettingGroup; +import meteordevelopment.meteorclient.settings.StringSetting; +import meteordevelopment.meteorclient.systems.modules.Categories; +import meteordevelopment.meteorclient.systems.modules.Module; + +public class BungeeCordSpoof extends Module { + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + public final Setting spoofedIp = sgGeneral.add(new StringSetting.Builder() + .name("spoofed-ip") + .description("The IP to spoof. Recommended to change it to something not suspicious") + .defaultValue("127.0.0.1") + .build() + ); + + public final Setting spoofedUuid = sgGeneral.add(new StringSetting.Builder() + .name("spoofed-uuid") + .description("The UUID to spoof. If empty then it uses UUID from your account or offline uuid if it is cracked account.") + .defaultValue("") + .filter((text, c) -> { + if (text.length() > 32) return false; + if (c == '-') return false; + return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f'); + }) + .build() + ); + + public BungeeCordSpoof() { + super(Categories.Misc, "bungeeCord-spoof", + "This module allows you to connect to backend servers that use BungeeCord (with 'bungeecord: true' enabled in spigot.yml). " + + "Additionally, it allows you to spoof your IP and UUID."); + this.runInMainMenu = true; + } +} diff --git a/src/main/resources/meteor-client.mixins.json b/src/main/resources/meteor-client.mixins.json index 02345053b9..2dc7ad35cb 100644 --- a/src/main/resources/meteor-client.mixins.json +++ b/src/main/resources/meteor-client.mixins.json @@ -183,7 +183,8 @@ "WorldChunkMixin", "WorldRendererAccessor", "WorldRendererMixin", - "YggdrasilMinecraftSessionServiceAccessor" + "YggdrasilMinecraftSessionServiceAccessor", + "HandshakeC2SPacketMixin" ], "injectors": { "defaultRequire": 1 From 59609c6059a742fd45e545d6951638fd442447f0 Mon Sep 17 00:00:00 2001 From: EpicPlayerA10 Date: Fri, 9 Aug 2024 14:16:28 +0200 Subject: [PATCH 2/2] add some comments --- .../meteorclient/mixin/HandshakeC2SPacketMixin.java | 1 + .../meteorclient/systems/modules/misc/BungeeCordSpoof.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java index 5603b04090..2aed066095 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/HandshakeC2SPacketMixin.java @@ -44,6 +44,7 @@ public void init(int protocolVersion, String address, int port, ConnectionIntent currentUuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + MinecraftClient.getInstance().getSession().getUsername()).getBytes(Charsets.UTF_8)); } + // UUID must be without dashes uuid = currentUuid.toString().replace("-", ""); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java index f05e1a47cb..f7f2dbb5aa 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BungeeCordSpoof.java @@ -27,6 +27,7 @@ public class BungeeCordSpoof extends Module { .defaultValue("") .filter((text, c) -> { if (text.length() > 32) return false; + // UUID must be without dashes if (c == '-') return false; return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f'); })