From b409c697e25805e8d57bf2d1f10343a8b57c24a9 Mon Sep 17 00:00:00 2001 From: 7cc5c4f330d47060 Date: Fri, 6 Sep 2024 17:03:35 -0400 Subject: [PATCH] Add ubot dev instance authentication + fixes to Hbot --- .../chipmunk/chipmunkmod/Configuration.java | 1 + .../chipmunkmod/commands/ValidateCommand.java | 1 + .../util/BotValidationUtilities.java | 26 ++++++++++++++++++- src/main/resources/default_config.json | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/land/chipmunk/chipmunkmod/Configuration.java b/src/main/java/land/chipmunk/chipmunkmod/Configuration.java index 8256100..733750e 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/Configuration.java +++ b/src/main/java/land/chipmunk/chipmunkmod/Configuration.java @@ -32,6 +32,7 @@ public class Configuration { public BotInfo hbot = new BotInfo("#", null); public BotInfo sbot = new BotInfo(":", null); public BotInfo ubot = new BotInfo("\"", null); + public BotInfo ubotdev = new BotInfo("d\"", null); public BotInfo chipmunk = new BotInfo("'", null); public ChomeNSBotInfo chomens = new ChomeNSBotInfo("*", null, null, null); public BotInfo kittycorp = new BotInfo("^", null); diff --git a/src/main/java/land/chipmunk/chipmunkmod/commands/ValidateCommand.java b/src/main/java/land/chipmunk/chipmunkmod/commands/ValidateCommand.java index a24e859..103d12c 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/commands/ValidateCommand.java +++ b/src/main/java/land/chipmunk/chipmunkmod/commands/ValidateCommand.java @@ -16,6 +16,7 @@ public class ValidateCommand { literal("validate") .then(literal("hbot").then(argument("command", greedyString()).executes(c -> hbot(getString(c, "command"))))) .then(literal("ubot").then(argument("command", greedyString()).executes(c -> ubot(getString(c, "command"))))) + .then(literal("ubotdev").then(argument("command", greedyString()).executes(c -> ubotdev(getString(c, "command"))))) .then(literal("sbot").then(argument("command", greedyString()).executes(c -> sbot(getString(c, "command"))))) // .then(literal("chipmunk").then(argument("command", greedyString()).executes(c -> chipmunk(getString(c, "command"))))) .then(literal("chomens").then(argument("command", greedyString()).executes(c -> { diff --git a/src/main/java/land/chipmunk/chipmunkmod/util/BotValidationUtilities.java b/src/main/java/land/chipmunk/chipmunkmod/util/BotValidationUtilities.java index 070659f..1716d71 100644 --- a/src/main/java/land/chipmunk/chipmunkmod/util/BotValidationUtilities.java +++ b/src/main/java/land/chipmunk/chipmunkmod/util/BotValidationUtilities.java @@ -29,7 +29,7 @@ public class BotValidationUtilities { try { MessageDigest md = MessageDigest.getInstance("SHA-256"); String time = String.valueOf(System.currentTimeMillis() / 10000); - String input = prefix + command.replaceAll("&[0-9a-fklmnor]", "") + ";" + client.player.getUuidAsString() + ";" + time + ";" + key; + String input = prefix + command.replaceAll("&[0-9a-fklmnor]", "") + ";" + client.player.getName() + ";" + time + ";" + key; byte[] hash = md.digest(input.getBytes(StandardCharsets.UTF_8)); BigInteger bigInt = new BigInteger(1, Arrays.copyOfRange(hash, 0, 4)); String stringHash = bigInt.toString(Character.MAX_RADIX); @@ -66,6 +66,30 @@ public class BotValidationUtilities { return Command.SINGLE_SUCCESS; } + public static int ubotdev (String command) throws RuntimeException { + final Configuration.BotInfo info = ChipmunkMod.CONFIG.bots.ubotdev; + final MinecraftClient client = MinecraftClient.getInstance(); + final ClientPlayNetworkHandler networkHandler = client.getNetworkHandler(); + + final String prefix = info.prefix; + final String key = info.key; + if (key == null) throw new RuntimeException("The key of the bot is unspecified (null), did you incorrectly add it to your config?"); + + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + String time = String.valueOf(System.currentTimeMillis() / 10000); + String input = "babyboom:" + key + ":" + client.player.getUuidAsString() + ":" + command.replaceAll("&[0-9a-fklmnor]", "") + ":" + time; + byte[] hash = md.digest(input.getBytes(StandardCharsets.UTF_8)); + String stringHash = Hexadecimal.encode(hash); + + Chat.sendChatMessage(prefix + command + " " + stringHash, true); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + return Command.SINGLE_SUCCESS; + } + public static int sbot (String command) throws RuntimeException { final Configuration.BotInfo info = ChipmunkMod.CONFIG.bots.sbot; final MinecraftClient client = MinecraftClient.getInstance(); diff --git a/src/main/resources/default_config.json b/src/main/resources/default_config.json index 27ee095..4ad0d1b 100644 --- a/src/main/resources/default_config.json +++ b/src/main/resources/default_config.json @@ -14,6 +14,7 @@ "hbot": { "prefix": "#", "key": null }, "sbot": { "prefix": ":", "key": null }, "ubot": { "prefix": "\"", "key": null }, + "ubotdev": { "prefix": "\"", "key": null }, "chipmunk": { "prefix": "'", "key": null }, "chomens": { "prefix": "*", "key": null, "authKey": null, "formatKey": null }, "kittycorp": { "prefix": "^", "key": null },