From 90bdfeaa51f96098fa783b0da963c3c0b112c0b5 Mon Sep 17 00:00:00 2001 From: SerendipityR <48401197+SerendipityR-2022@users.noreply.github.com> Date: Wed, 31 Jan 2024 20:42:43 +0800 Subject: [PATCH] =?UTF-8?q?Add:=20=E9=80=9A=E8=BF=87=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AB=AF=E5=85=A8=E6=9C=8D=E5=96=8A=E8=AF=9D=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E8=B7=B3=E5=87=BA=E7=99=BB=E5=BD=95=E5=A4=A7=E5=8E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EndMinecraftPlusV2.java | 4 +-- Main/src/config.yml | 6 +++- .../EndMinecraftPlusV2/Tools/ConfigUtil.java | 7 +++-- .../MultipleVersion/Bot/BotManager.java | 7 ++++- .../MultipleVersion/Packet/PacketManager.java | 29 +++++++++++++------ 5 files changed, 38 insertions(+), 15 deletions(-) diff --git a/Main/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java b/Main/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java index daacc7f..5a0069f 100644 --- a/Main/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java +++ b/Main/src/cn/serendipityr/EndMinecraftPlusV2/EndMinecraftPlusV2.java @@ -6,8 +6,8 @@ import cn.serendipityr.EndMinecraftPlusV2.Tools.LogUtil; import cn.serendipityr.EndMinecraftPlusV2.Tools.SetTitle; public class EndMinecraftPlusV2 { - public static String ver = "2.0.3"; - public static Integer CfgVer = 10; + public static String ver = "2.0.4"; + public static Integer CfgVer = 11; public static void main(String[] args) { System.out.println("=======================-Designed by SerendipityR-======================="); diff --git a/Main/src/config.yml b/Main/src/config.yml index d3c42fa..1097045 100644 --- a/Main/src/config.yml +++ b/Main/src/config.yml @@ -3,7 +3,7 @@ # Designed by SerendipityR # ############################### -CfgVer: 10 +CfgVer: 11 AttackSettings: Address: "example.com" @@ -117,6 +117,10 @@ BotSettings: - "AntiAttack" # 若踢出信息为空,则无条件执行重连 EmptyMsgRejoin: true + # 检测可交互聊天信息包含的命令 + # 针对特定服务器,利用全服喊话跳出登录大厅 + ServerShoutDetect: + - "tpserver" # 若聊天信息中检测到以下字段,则尝试进行点击验证 ClickVerifiesDetect: - "点击验证" diff --git a/Tools/src/cn/serendipityr/EndMinecraftPlusV2/Tools/ConfigUtil.java b/Tools/src/cn/serendipityr/EndMinecraftPlusV2/Tools/ConfigUtil.java index 99cd8fe..d0c84de 100644 --- a/Tools/src/cn/serendipityr/EndMinecraftPlusV2/Tools/ConfigUtil.java +++ b/Tools/src/cn/serendipityr/EndMinecraftPlusV2/Tools/ConfigUtil.java @@ -48,6 +48,7 @@ public class ConfigUtil { public static Integer RejoinCount; public static List RejoinDetect; public static Boolean EmptyMsgRejoin; + public static List ServerShoutDetect; public static Long RejoinDelay; public static List ClickVerifiesDetect; public static List CustomChat; @@ -111,6 +112,7 @@ public class ConfigUtil { RejoinCount = config.getInt("BotSettings.RejoinCount"); RejoinDetect = config.getStringList("BotSettings.RejoinDetect"); EmptyMsgRejoin = config.getBoolean("BotSettings.EmptyMsgRejoin"); + ServerShoutDetect = config.getStringList("BotSettings.ServerShoutDetect"); RejoinDelay = config.getLong("BotSettings.RejoinDelay"); ClickVerifiesDetect = config.getStringList("BotSettings.ClickVerifiesDetect"); CustomChat = config.getStringList("BotSettings.CustomChat"); @@ -215,8 +217,9 @@ public class ConfigUtil { break; } - if (configFile.delete()) { - tempConfigFile.renameTo(configFile); + if (!configFile.delete() || !tempConfigFile.renameTo(configFile)) { + LogUtil.doLog(1, "尝试进行配置文件转码时出现错误。", null); + return 0; } LogUtil.doLog(0, "任务完成。转换前编码: " + currentCharset + " | 转换后编码: " + getFileCharset(configFile) , "CFGUtil"); diff --git a/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Bot/BotManager.java b/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Bot/BotManager.java index 37b169d..b9f0a35 100644 --- a/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Bot/BotManager.java +++ b/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Bot/BotManager.java @@ -381,13 +381,18 @@ public class BotManager { botHandler.setClientFlag(client, "login", ""); new Thread(() -> { for (String text : ConfigUtil.RegisterCommands) { - OtherUtils.doSleep(delay); String cmd = text; cmd = cmd.replace("$pwd", password); cmd = cmd.replace("$userName", userName); cmd = cmd.replace("$rnd", OtherUtils.getRandomString(4, 6)); LogUtil.doLog(0, "[" + userName + "] 注册信息已发送。", "BotAttack"); packetHandler.sendChatPacket(client, cmd); + OtherUtils.doSleep(delay); + } + + if (PacketManager.serverShoutCmd != null) { + LogUtil.doLog(0, "[" + userName + "] 正在尝试跳出登录大厅: " + PacketManager.serverShoutCmd, "BotAttack"); + packetHandler.sendChatPacket(client, PacketManager.serverShoutCmd); } }).start(); } diff --git a/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Packet/PacketManager.java b/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Packet/PacketManager.java index f1d96f2..76ff40b 100644 --- a/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Packet/PacketManager.java +++ b/VersionFactory/src/cn/serendipityr/EndMinecraftPlusV2/MultipleVersion/Packet/PacketManager.java @@ -6,6 +6,7 @@ import cn.serendipityr.EndMinecraftPlusV2.Tools.LogUtil; public class PacketManager { public static int clickVerifies = 0; + public static String serverShoutCmd = null; public static void handlePacket(PacketHandler packetHandler, Object client, Object packet, String username) { if (packetHandler.checkServerPluginMessagePacket(packet)) { @@ -44,22 +45,32 @@ public class PacketManager { } public static void clickVerifiesHandle(PacketHandler packetHandler, Object client, Object message, String username) { - boolean needClick = false; - if (packetHandler.hasMessageClickEvent(message)) { + boolean needClick = false; + + String msg = packetHandler.getMessageText(message); + String value = packetHandler.getClickValue(message); + for (String clickVerifiesDetect : ConfigUtil.ClickVerifiesDetect) { - if (packetHandler.getMessageText(message).contains(clickVerifiesDetect)) { + if (msg.contains(clickVerifiesDetect)) { needClick = true; break; } } - } - if (needClick) { - String value = packetHandler.getClickValue(message); - LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + value, "BotAttack"); - packetHandler.sendChatPacket(client, value); - clickVerifies++; + for (String teleportMsg : ConfigUtil.ServerShoutDetect) { + if (value.contains(teleportMsg)) { + serverShoutCmd = value; + needClick = true; + break; + } + } + + if (needClick) { + LogUtil.doLog(0, "[服务端返回可交互信息] [" + username + "] " + value, "BotAttack"); + packetHandler.sendChatPacket(client, value); + clickVerifies++; + } } if (packetHandler.hasMessageExtra(message)) {