Skip to content

Instantly share code, notes, and snippets.

@Yamakaja
Created July 21, 2017 17:08
Show Gist options
  • Save Yamakaja/2035d2d9a262001d2467ae83854b05af to your computer and use it in GitHub Desktop.
Save Yamakaja/2035d2d9a262001d2467ae83854b05af to your computer and use it in GitHub Desktop.
Player Online-Nicking
From 1a3ca0df35fab472a431b91a13630520ab148df7 Mon Sep 17 00:00:00 2001
From: Yamakaja <[email protected]>
Date: Fri, 21 Jul 2017 19:07:01 +0200
Subject: [PATCH] Online-Nick patch
---
.../md_5/bungee/protocol/packet/LoginRequest.java | 7 ++--
.../net/md_5/bungee/connection/InitialHandler.java | 48 +++++++++++++++++++---
2 files changed, 46 insertions(+), 9 deletions(-)
diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java
index 32ba098c..1ccbf8f5 100644
--- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java
+++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/LoginRequest.java
@@ -5,10 +5,7 @@
package net.md_5.bungee.protocol.packet;
import io.netty.buffer.ByteBuf;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
+import lombok.*;
import net.md_5.bungee.protocol.AbstractPacketHandler;
import net.md_5.bungee.protocol.DefinedPacket;
@@ -19,6 +16,8 @@ import net.md_5.bungee.protocol.DefinedPacket;
public class LoginRequest extends DefinedPacket
{
+ @Getter
+ @Setter
private String data;
@Override
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
index cb140d4a..89cb0785 100644
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
@@ -2,17 +2,19 @@ package net.md_5.bungee.connection;
import com.google.common.base.Charsets;
import com.google.common.base.Preconditions;
+import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
+
+import java.io.*;
import java.math.BigInteger;
-import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.URLEncoder;
import java.security.MessageDigest;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import javax.crypto.SecretKey;
+
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import net.md_5.bungee.BungeeCord;
@@ -29,7 +31,6 @@ import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.config.ListenerInfo;
import net.md_5.bungee.api.config.ServerInfo;
-import net.md_5.bungee.api.connection.Connection.Unsafe;
import net.md_5.bungee.api.connection.PendingConnection;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.LoginEvent;
@@ -104,6 +105,21 @@ public class InitialHandler extends PacketHandler implements PendingConnection
@Getter
private String extraDataInHandshake = "";
+ private static Map<String, LoginResult> loginOverwrites = new HashMap<>();
+
+ static {
+ File file = new File("overwrites.json");
+
+ if (file.exists()) {
+ try (InputStreamReader input = new InputStreamReader(new FileInputStream(file))) {
+ loginOverwrites = new Gson().fromJson(input, new TypeToken<Map<String, LoginResult>>(){}.getType());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
@Override
public boolean shouldHandle(PacketWrapper packet) throws Exception
{
@@ -321,7 +337,7 @@ public class InitialHandler extends PacketHandler implements PendingConnection
}
@Override
- public void handle(LoginRequest loginRequest) throws Exception
+ public void handle(final LoginRequest loginRequest) throws Exception
{
Preconditions.checkState( thisState == State.USERNAME, "Not expecting USERNAME" );
this.loginRequest = loginRequest;
@@ -373,6 +389,15 @@ public class InitialHandler extends PacketHandler implements PendingConnection
unsafe().sendPacket( request = EncryptionUtil.encryptRequest() );
} else
{
+ if (loginOverwrites.containsKey(loginRequest.getData())) {
+ LoginResult res = loginOverwrites.get(loginRequest.getData());
+
+ InitialHandler.this.loginProfile = res;
+
+ InitialHandler.this.name = res.getName();
+ InitialHandler.this.uniqueId = Util.getUUID(res.getId());
+ InitialHandler.this.loginRequest.setData(res.getName());
+ }
finish();
}
thisState = State.ENCRYPT;
@@ -434,6 +459,19 @@ public class InitialHandler extends PacketHandler implements PendingConnection
}
};
+ if (loginOverwrites.containsKey(this.getName())) {
+ LoginResult result = loginOverwrites.get(this.getName());
+
+ this.loginProfile = result;
+
+ this.name = result.getName();
+ this.uniqueId = Util.getUUID(result.getId());
+ this.loginRequest.setData(result.getName());
+
+ finish();
+ return;
+ }
+
HttpClient.get( authURL, ch.getHandle().eventLoop(), handler );
}
--
2.13.3
{
"Yamakaja": {
"id": "4566e69fc90748ee8d71d7ba5aa00d20",
"name": "Thinkofdeath",
"properties": [
{
"signature": "tqx5sgouPW+QYA5em+y0aNyEO2+KDZTcmIBOGkJtgjPhOgISUwfpfY20dXJCtxk0laeFn3pYWlmI4nI60BCyr5GRFW8MGHCsLG7Qe9rCgIR1zKy9djn7z9LN4pjhVO9nzvG0qKbjr7vCqSvd8JMRzKDu3gSK39aSPYClgbE7Jw0GL91MqJcYvQ5XrBZh/B1+AwIFsOdkyXlGJRApsJXiuHZlzrLNPhtnh4xEjJWBGk3cWctr/Ed74rlPIz5NSmWlWwJ8y1WrphiPfffvIe3sV4Fx9rguomallTIbTtIAOtjA/bPHMfRPdryDHLZjo0owE1cHVwm60VDUhRXXoh5cSkrPYft/aY/6a44zbIiz0wZEGzvAau8XUOf2gjVhZ3XFD0uwFIlGSdOg6upAxSZA/hYLzkcQp4mt2YRihwwdFf4Oa5Ci2YrxIgJUSHwpNtqu4HDPZRZ0FSJ+kBhWRXPZhD8rxC7rs6QfZQjvj31F3r4iPyH95UrDpokZdowUKnngz3F/O0ZuaN2RGJGvUnPgptEVq4zwgK2wAVI4DKsk0OpR3g4RtQ1Nk3xSVEuiwIcU2al/NWksAz7bRTu0Yhq8fWrLEtOKVjmz74DWxKHytJOXN9Sv8lQjTKJqIfrMvbY+C1BIJ8Zrl1hLpl9jkpt3MRVyKoRvDm6cTq2MNTrg+Yo=",
"name": "textures",
"value": "eyJ0aW1lc3RhbXAiOjE1MDAzOTA1NTQwNjAsInByb2ZpbGVJZCI6IjQ1NjZlNjlmYzkwNzQ4ZWU4ZDcxZDdiYTVhYTAwZDIwIiwicHJvZmlsZU5hbWUiOiJUaGlua29mZGVhdGgiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzEzZTgxYjllMTlhYjFlZjE3YTkwYzBhYTRlMTA4NWZjMTNjZDQ3Y2VkNWE3YTFhNDkyODAzYjM1NjFlNGExNWIifSwiQ0FQRSI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzIyYjljNWVhNzYzYzg2ZmM1Y2FlYTMzZDgyYjBmYTY1YTdjMjI4ZmQzMjFiYTU0NzY2ZWE5NWEzZDBiOTc5MyJ9fX0="
}
]
},
"YamakajaTwo": {
"id": "069a79f444e94726a5befca90e38aaf5",
"name": "Notch",
"properties": [
{
"signature": "j4S3i/67iCrR+LNaGSr++qTMmYaaPETiMPkY7ouB7NiQjTIlWafAB7i6SfI3Q5r80ts06sj9+E030IunMySWn9J7TYy6/MzLpzqkI4NuPf0iGFXwOwnxhBytbO39lhKqSDuktKs2ZeFQmevlRCSuuEgzHZBXLP/QuteAvSaiu+/cfOoQ4Tk/WZ1JjbVc4xgFfu3reNlEHY1oWShAYju8mx3krFGNhg7Rw2Yrr3jy7VuZbol+Zyl44Pg5g+JUyE07dT7VpCYBzkTzU/9xhCXbDfJGtkS1GdQrEvSG0t1b9ty8W+NpAbhXoCrkTgkeAjJlogN+11mNFGa0XaOOuZd3EhC0/zwJ6p09ejTkjIZpqMxU/CYM/Zby90WPuKeYFYXV2PBUP/2XZFbylVbjGu73GiI8677hU0ZI5lgZAoB8sWBYJhL+BI2/NRccVJQA3zPi2DuYjBTTipCu700m0ig0I3Xl10JlGTxw/nt38OJBKhbIvl8JrP/SRYxzy2WlhP8B/SSUaeCPVal4PGzVIA5c90e4me0RclbILWUMdmozAc2dH4fW1LSB1lBiiVRS5jrsPQY8tGoNE255NA3bRUk1DHqeK9Z02Foy1vLDs6G8fSi+AJdW3r59nEQ8wq/maDTzTP1XzII92G5fxyLw+cCkPaRQ/VHCl59knjvdCZvytrM=",
"name": "textures",
"value": "eyJ0aW1lc3RhbXAiOjE1MDA2NTM3Mzc1NTIsInByb2ZpbGVJZCI6IjA2OWE3OWY0NDRlOTQ3MjZhNWJlZmNhOTBlMzhhYWY1IiwicHJvZmlsZU5hbWUiOiJOb3RjaCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTExNmU2OWE4NDVlMjI3ZjdjYTFmZGRlOGMzNTdjOGM4MjFlYmQ0YmE2MTkzODJlYTRhMWY4N2Q0YWU5NCJ9LCJDQVBFIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWVjM2NhYmZhZWVkNWRhZmU2MWM2NTQ2Mjk3ZTg1M2E1NDdjMzllYzIzOGQ3YzQ0YmY0ZWI0YTQ5ZGMxZjJjMCJ9fX0="
}
]
},
"Nightloewe": {
"id": "0c05471fc5554f4a8c36d55e7e116afc",
"name": "AbgegrieftHD",
"properties": [
{
"signature": "TYpOKS3r1ygpUIKKTgToIzU299U64+s/raZSDSKiaycfj3ma6/xTdcclJxLONCfXLiBeA/1rBwffb58OTU0n5WYasdHydOufpaysmQvi4hKAJ15zUOWRfWMtyxSS26kpKJzpz6bSh5LgW/ihmb4zF1exUSw4KEF2VFCEZ9owd31e2ofZGOEbL/ieL1t5itr8babHar4CKfh5Q0iY56HGlHNXEzwMmCfHtXk4ZOxbb3UB/QBhvB3nx2aO9TqESfLruh5L3yeVmqZ4mo/P9+dIbi3UQPVb7RHmVGf5r4iKGcufFZkl0YPGfTOYcb7FjSojj+s513aOABqlfhE9oU7kvHlA3Sn4rvmZAovoKCjY3rZPvC12WHW7ZdqtRbISekGKI2bNwAznznDqKJueJyRJQkQEeEmfnbIsE/rqNvyMttNgtRyDUEdYhJSOl5lzrhsfhpxY616Cd6+wx4R0ofLc4s1mzxsT+xJzdZo9LqsWNRwHED2VowOD5eV+xNtdQAJQIpPgNcSeA3fp7UVgthrSYlij2mjNGyqzdEGkl1SRnufNoa6zoPnKfKW5zy82Z++/I3Kx/elO0qHGaL8nFSdjIU/bYSzFQic8iLIq2xR+pMz2k+81b+mK1cDo6k1AvBoIAYuqc2Gy/rzViolj2HVCRoJkbaqmspW1X0sg+WbPkKA=",
"name": "textures",
"value": "eyJ0aW1lc3RhbXAiOjE1MDA2NTQ4MTYwNzEsInByb2ZpbGVJZCI6IjBjMDU0NzFmYzU1NTRmNGE4YzM2ZDU1ZTdlMTE2YWZjIiwicHJvZmlsZU5hbWUiOiJBYmdlZ3JpZWZ0SEQiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2E1ZjA3ODlmZWE3ZDU2OWU5NWI3NzM2M2Q2NzhlYmJjZjJlNDg4OGExNGMxMjE4Njg3MTdlMmIzNDBlMjk1In19fQ=="
}
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment