Add: 通过服务端全服喊话插件跳出登录大厅

This commit is contained in:
SerendipityR 2024-01-31 20:42:43 +08:00 committed by GitHub
parent 38c97d27b2
commit 90bdfeaa51
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 38 additions and 15 deletions

View File

@ -6,8 +6,8 @@ import cn.serendipityr.EndMinecraftPlusV2.Tools.LogUtil;
import cn.serendipityr.EndMinecraftPlusV2.Tools.SetTitle; import cn.serendipityr.EndMinecraftPlusV2.Tools.SetTitle;
public class EndMinecraftPlusV2 { public class EndMinecraftPlusV2 {
public static String ver = "2.0.3"; public static String ver = "2.0.4";
public static Integer CfgVer = 10; public static Integer CfgVer = 11;
public static void main(String[] args) { public static void main(String[] args) {
System.out.println("=======================-Designed by SerendipityR-======================="); System.out.println("=======================-Designed by SerendipityR-=======================");

View File

@ -3,7 +3,7 @@
# Designed by SerendipityR # # Designed by SerendipityR #
############################### ###############################
CfgVer: 10 CfgVer: 11
AttackSettings: AttackSettings:
Address: "example.com" Address: "example.com"
@ -117,6 +117,10 @@ BotSettings:
- "AntiAttack" - "AntiAttack"
# 若踢出信息为空,则无条件执行重连 # 若踢出信息为空,则无条件执行重连
EmptyMsgRejoin: true EmptyMsgRejoin: true
# 检测可交互聊天信息包含的命令
# 针对特定服务器,利用全服喊话跳出登录大厅
ServerShoutDetect:
- "tpserver"
# 若聊天信息中检测到以下字段,则尝试进行点击验证 # 若聊天信息中检测到以下字段,则尝试进行点击验证
ClickVerifiesDetect: ClickVerifiesDetect:
- "点击验证" - "点击验证"

View File

@ -48,6 +48,7 @@ public class ConfigUtil {
public static Integer RejoinCount; public static Integer RejoinCount;
public static List<String> RejoinDetect; public static List<String> RejoinDetect;
public static Boolean EmptyMsgRejoin; public static Boolean EmptyMsgRejoin;
public static List<String> ServerShoutDetect;
public static Long RejoinDelay; public static Long RejoinDelay;
public static List<String> ClickVerifiesDetect; public static List<String> ClickVerifiesDetect;
public static List<String> CustomChat; public static List<String> CustomChat;
@ -111,6 +112,7 @@ public class ConfigUtil {
RejoinCount = config.getInt("BotSettings.RejoinCount"); RejoinCount = config.getInt("BotSettings.RejoinCount");
RejoinDetect = config.getStringList("BotSettings.RejoinDetect"); RejoinDetect = config.getStringList("BotSettings.RejoinDetect");
EmptyMsgRejoin = config.getBoolean("BotSettings.EmptyMsgRejoin"); EmptyMsgRejoin = config.getBoolean("BotSettings.EmptyMsgRejoin");
ServerShoutDetect = config.getStringList("BotSettings.ServerShoutDetect");
RejoinDelay = config.getLong("BotSettings.RejoinDelay"); RejoinDelay = config.getLong("BotSettings.RejoinDelay");
ClickVerifiesDetect = config.getStringList("BotSettings.ClickVerifiesDetect"); ClickVerifiesDetect = config.getStringList("BotSettings.ClickVerifiesDetect");
CustomChat = config.getStringList("BotSettings.CustomChat"); CustomChat = config.getStringList("BotSettings.CustomChat");
@ -215,8 +217,9 @@ public class ConfigUtil {
break; break;
} }
if (configFile.delete()) { if (!configFile.delete() || !tempConfigFile.renameTo(configFile)) {
tempConfigFile.renameTo(configFile); LogUtil.doLog(1, "尝试进行配置文件转码时出现错误。", null);
return 0;
} }
LogUtil.doLog(0, "任务完成。转换前编码: " + currentCharset + " | 转换后编码: " + getFileCharset(configFile) , "CFGUtil"); LogUtil.doLog(0, "任务完成。转换前编码: " + currentCharset + " | 转换后编码: " + getFileCharset(configFile) , "CFGUtil");

View File

@ -381,13 +381,18 @@ public class BotManager {
botHandler.setClientFlag(client, "login", ""); botHandler.setClientFlag(client, "login", "");
new Thread(() -> { new Thread(() -> {
for (String text : ConfigUtil.RegisterCommands) { for (String text : ConfigUtil.RegisterCommands) {
OtherUtils.doSleep(delay);
String cmd = text; String cmd = text;
cmd = cmd.replace("$pwd", password); cmd = cmd.replace("$pwd", password);
cmd = cmd.replace("$userName", userName); cmd = cmd.replace("$userName", userName);
cmd = cmd.replace("$rnd", OtherUtils.getRandomString(4, 6)); cmd = cmd.replace("$rnd", OtherUtils.getRandomString(4, 6));
LogUtil.doLog(0, "[" + userName + "] 注册信息已发送。", "BotAttack"); LogUtil.doLog(0, "[" + userName + "] 注册信息已发送。", "BotAttack");
packetHandler.sendChatPacket(client, cmd); packetHandler.sendChatPacket(client, cmd);
OtherUtils.doSleep(delay);
}
if (PacketManager.serverShoutCmd != null) {
LogUtil.doLog(0, "[" + userName + "] 正在尝试跳出登录大厅: " + PacketManager.serverShoutCmd, "BotAttack");
packetHandler.sendChatPacket(client, PacketManager.serverShoutCmd);
} }
}).start(); }).start();
} }

View File

@ -6,6 +6,7 @@ import cn.serendipityr.EndMinecraftPlusV2.Tools.LogUtil;
public class PacketManager { public class PacketManager {
public static int clickVerifies = 0; public static int clickVerifies = 0;
public static String serverShoutCmd = null;
public static void handlePacket(PacketHandler packetHandler, Object client, Object packet, String username) { public static void handlePacket(PacketHandler packetHandler, Object client, Object packet, String username) {
if (packetHandler.checkServerPluginMessagePacket(packet)) { if (packetHandler.checkServerPluginMessagePacket(packet)) {
@ -44,23 +45,33 @@ public class PacketManager {
} }
public static void clickVerifiesHandle(PacketHandler packetHandler, Object client, Object message, String username) { public static void clickVerifiesHandle(PacketHandler packetHandler, Object client, Object message, String username) {
if (packetHandler.hasMessageClickEvent(message)) {
boolean needClick = false; boolean needClick = false;
if (packetHandler.hasMessageClickEvent(message)) { String msg = packetHandler.getMessageText(message);
String value = packetHandler.getClickValue(message);
for (String clickVerifiesDetect : ConfigUtil.ClickVerifiesDetect) { for (String clickVerifiesDetect : ConfigUtil.ClickVerifiesDetect) {
if (packetHandler.getMessageText(message).contains(clickVerifiesDetect)) { if (msg.contains(clickVerifiesDetect)) {
needClick = true; needClick = true;
break; break;
} }
} }
for (String teleportMsg : ConfigUtil.ServerShoutDetect) {
if (value.contains(teleportMsg)) {
serverShoutCmd = value;
needClick = true;
break;
}
} }
if (needClick) { if (needClick) {
String value = packetHandler.getClickValue(message); LogUtil.doLog(0, "[服务端返回可交互信息] [" + username + "] " + value, "BotAttack");
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + value, "BotAttack");
packetHandler.sendChatPacket(client, value); packetHandler.sendChatPacket(client, value);
clickVerifies++; clickVerifies++;
} }
}
if (packetHandler.hasMessageExtra(message)) { if (packetHandler.hasMessageExtra(message)) {
packetHandler.handleMessageExtra(packetHandler, message, client, username); packetHandler.handleMessageExtra(packetHandler, message, client, username);