From 30ec0dca52cc46173aa9f02e06ee2cc29a913e56 Mon Sep 17 00:00:00 2001 From: OnlyRain233 Date: Sat, 5 Aug 2023 23:48:59 +0800 Subject: [PATCH] Added BungeeCordSpoof (Closes #98) (#281) --- README.md | 1 + .../anticope/rejects/MeteorRejectsAddon.java | 1 + .../gui/servers/ServerFinderScreen.java | 2 +- .../mixin/HandshakeC2SPacketAccessor.java | 13 ++++ .../rejects/modules/BungeeCordSpoof.java | 69 +++++++++++++++++++ src/main/resources/meteor-rejects.mixins.json | 1 + 6 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 src/main/java/anticope/rejects/mixin/HandshakeC2SPacketAccessor.java create mode 100644 src/main/java/anticope/rejects/modules/BungeeCordSpoof.java diff --git a/README.md b/README.md index 395baabe..2b499a75 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ - BlockIn - BoatGlitch & BoatPhase (Taken from an [unmerged PR](https://github.com/MeteorDevelopment/meteor-client/pull/814)) - Boost (Ported from [Cornos](https://github.com/cornos/Cornos/blob/master/src/main/java/me/zeroX150/cornos/features/module/impl/movement/Boost.java)) +- BungeeCordSpoof (Ported from [LiquidBounce](https://github.com/CCBlueX/LiquidBounce)) - ChatBot - ChestAura - ChorusExploit (Taken from an [unmerged PR](https://github.com/MeteorDevelopment/meteor-client/pull/1727)) diff --git a/src/main/java/anticope/rejects/MeteorRejectsAddon.java b/src/main/java/anticope/rejects/MeteorRejectsAddon.java index 41adcbef..7a0e9e73 100644 --- a/src/main/java/anticope/rejects/MeteorRejectsAddon.java +++ b/src/main/java/anticope/rejects/MeteorRejectsAddon.java @@ -49,6 +49,7 @@ public void onInitialize() { modules.add(new BlockIn()); modules.add(new BoatPhase()); modules.add(new Boost()); + modules.add(new BungeeCordSpoof()); modules.add(new ChatBot()); modules.add(new ChestAura()); modules.add(new ChorusExploit()); diff --git a/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java b/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java index dfe38771..af96dcf1 100644 --- a/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java +++ b/src/main/java/anticope/rejects/gui/servers/ServerFinderScreen.java @@ -50,7 +50,7 @@ public ServerFinderScreen(GuiTheme theme, MultiplayerScreen multiplayerScreen, S this.multiplayerScreen = multiplayerScreen; this.parent = parent; ipBox = theme.textBox("127.0.0.1"); - versionBox = theme.textBox("1.19; 1.18; 1.17; 1.16; 1.15; 1.14; 1.13; 1.12; 1.11; 1.10; 1.9; 1.8"); + versionBox = theme.textBox("1.20; 1.19; 1.18; 1.17; 1.16; 1.15; 1.14; 1.13; 1.12; 1.11; 1.10; 1.9; 1.8"); maxThreadsBox = theme.intEdit(128, 1, 1024, 1, 1024); stateLabel = theme.label(""); checkedLabel = theme.label(""); diff --git a/src/main/java/anticope/rejects/mixin/HandshakeC2SPacketAccessor.java b/src/main/java/anticope/rejects/mixin/HandshakeC2SPacketAccessor.java new file mode 100644 index 00000000..3cf86693 --- /dev/null +++ b/src/main/java/anticope/rejects/mixin/HandshakeC2SPacketAccessor.java @@ -0,0 +1,13 @@ +package anticope.rejects.mixin; + +import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(HandshakeC2SPacket.class) +public interface HandshakeC2SPacketAccessor { + @Mutable + @Accessor + void setAddress(String address); +} diff --git a/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java b/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java new file mode 100644 index 00000000..956b8cab --- /dev/null +++ b/src/main/java/anticope/rejects/modules/BungeeCordSpoof.java @@ -0,0 +1,69 @@ +package anticope.rejects.modules; + +import anticope.rejects.MeteorRejectsAddon; +import anticope.rejects.mixin.HandshakeC2SPacketAccessor; +import com.google.gson.Gson; +import com.mojang.authlib.properties.PropertyMap; +import meteordevelopment.meteorclient.events.packets.PacketEvent; +import meteordevelopment.meteorclient.settings.*; +import meteordevelopment.meteorclient.systems.modules.Module; +import meteordevelopment.meteorclient.utils.Utils; +import meteordevelopment.orbit.EventHandler; +import net.minecraft.network.NetworkState; +import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket; + +import java.util.List; + +public class BungeeCordSpoof extends Module { + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + private static final Gson GSON = new Gson(); + + private final Setting whitelist = sgGeneral.add(new BoolSetting.Builder() + .name("whitelist") + .description("Use whitelist.") + .defaultValue(false) + .build() + ); + + private final Setting> whitelistedServers = sgGeneral.add(new StringListSetting.Builder() + .name("whitelisted-servers") + .description("Will only work if you joined the servers above.") + .visible(whitelist::get) + .build() + ); + + private final Setting spoofProfile = sgGeneral.add(new BoolSetting.Builder() + .name("spoof-profile") + .description("Spoof account profile.") + .defaultValue(false) + .build() + ); + + private final Setting forwardedIP = sgGeneral.add(new StringSetting.Builder() + .name("forwarded-IP") + .description("The forwarded IP address.") + .defaultValue("127.0.0.1") + .build() + ); + + public BungeeCordSpoof() { + super(MeteorRejectsAddon.CATEGORY, "bungeeCord-spoof", "Let you join BungeeCord servers, useful when bypassing proxies."); + runInMainMenu = true; + } + + @EventHandler + private void onPacketSend(PacketEvent.Send event) { + if (event.packet instanceof HandshakeC2SPacket packet && packet.getIntendedState() == NetworkState.LOGIN) { + if (whitelist.get() && !whitelistedServers.get().contains(Utils.getWorldName())) return; + String address = packet.getAddress() + "\0" + forwardedIP + "\0" + mc.getSession().getUuid().replace("-", "") + + (spoofProfile.get() ? getProperty() : ""); + ((HandshakeC2SPacketAccessor) packet).setAddress(address); + } + } + + private String getProperty() { + PropertyMap propertyMap = mc.getSession().getProfile().getProperties(); + return "\0" + GSON.toJson(propertyMap.values().toArray()); + } +} diff --git a/src/main/resources/meteor-rejects.mixins.json b/src/main/resources/meteor-rejects.mixins.json index 9e7c58db..dfb50dbf 100644 --- a/src/main/resources/meteor-rejects.mixins.json +++ b/src/main/resources/meteor-rejects.mixins.json @@ -9,6 +9,7 @@ "Deadmau5FeatureRendererMixin", "EntityAccessor", "GameRendererMixin", + "HandshakeC2SPacketAccessor", "LivingEntityMixin", "LivingEntityRendererMixin", "MultiplayerScreenAccessor",