Fix: 修复位置数据处理导致循环,优化部分逻辑。

This commit is contained in:
SerendipityR 2024-01-31 16:09:01 +08:00 committed by GitHub
parent 74ba959588
commit e6c636ae98
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 66 additions and 82 deletions

View File

@ -20,6 +20,9 @@ public class AttackManager {
case 1:
case 4:
case 5:
LogUtil.doLog(0, "正在载入Minecraft协议库...", "ProtocolLib");
ProtocolLibs.loadProtocolLib();
// BotDebug & BotAttack
BotHandler botHandler;
PacketHandler packetHandler;

View File

@ -75,6 +75,8 @@ public class MotdAttack {
Proxy proxy = hasProxy ? UniverseMethods.getProxy(UniverseMethods.getProxyType(ConfigUtil.ProxyType)) : Proxy.NO_PROXY;
Socket socket = new Socket(proxy);
LogUtil.doLog(0, "", "DEBUG");
// 连接到服务器
socket.connect(new InetSocketAddress(ConfigUtil.AttackAddress, ConfigUtil.AttackPort));
try (OutputStream out = socket.getOutputStream();

View File

@ -8,8 +8,8 @@ import cn.serendipityr.EndMinecraftPlusV2.AttackManager.AttackManager;
import cn.serendipityr.EndMinecraftPlusV2.VersionManager.ProtocolLibs;
public class EndMinecraftPlusV2 {
public static String ver = "2.0.2";
public static Integer CfgVer = 9;
public static String ver = "2.0.3";
public static Integer CfgVer = 10;
public static void main(String[] args) {
System.out.println("=======================-Designed by SerendipityR-=======================");
@ -46,8 +46,6 @@ public class EndMinecraftPlusV2 {
}
public static void startAttack() {
LogUtil.doLog(0, "正在载入Minecraft协议库...", "ProtocolLib");
ProtocolLibs.loadProtocolLib();
AttackManager.doAttack();
}

View File

@ -3,7 +3,7 @@
# Designed by SerendipityR #
###############################
CfgVer: 9
CfgVer: 10
AttackSettings:
Address: "example.com"
@ -14,6 +14,7 @@ AttackSettings:
# 3 - MotdAttackP - MOTD压测(代理)
# 4 - DoubleAttack - 影分身攻击(代理,仅原版单服可用)
# 5 - BotDebug - 假人调试模式(无代理)
# [!] 请注意无代理状态下你的IP地址将暴露于攻击目标的后台日志中请合理使用。
Method: 1
Time: 3600
ConnectDelay: 15
@ -37,15 +38,15 @@ AttackSettings:
# register&Login - 执行注册/登录:<密码>
# crashPacket - 发送崩服数据包:<数量>
Actions:
- "wait:2000"
- "register&Login:genshinImpact"
- "wait:1000"
- "chat:原神,启动!"
- "randomTeleport:1"
- "wait:1000"
- "backTeleport"
- "register&Login:genshinImpact"
- "crashPacket:20"
- "wait:1000"
- "crashPacket:20"
#- "randomTeleport:1"
#- "wait:1000"
#- "backTeleport"
#- "wait:1000"
#- "crashPacket:20"
ShowFails: false
AdvancedSettings:
@ -96,9 +97,15 @@ BotSettings:
RandomFlag: 1
RandomMinLength: 6
RandomMaxLength: 8
# 是否回复KeepAlive数据包
# 如果你发现假人断开连接的原因与"Timeout"相关,请尝试切换此项。
KeepAlive: false
# 在此处控制数据包响应单元
PacketHandler:
# 是否回复KeepAlive数据包
# 如果你发现假人断开连接的原因与"Timeout"相关,请尝试切换此项。
KeepAlive: false
# 是否响应服务器位置数据包
# 如果你发现假人断开连接的原因与"位置异常"相关,请尝试切换此项。
Move: ture
# 重新加入前模拟刷新服务器列表
GetMotdBeforeRejoin: true
GetMotdCount: 5

View File

@ -39,6 +39,7 @@ public class ConfigUtil {
public static Integer RandomMinLength;
public static Integer RandomMaxLength;
public static Boolean KeepAlive;
public static Boolean PacketHandlerMove;
public static Integer BotCount;
public static List<String> RegisterCommands;
public static Boolean GetMotdBeforeRejoin;
@ -101,7 +102,8 @@ public class ConfigUtil {
RandomFlag = config.getInt("BotSettings.RandomFlag");
RandomMinLength = config.getInt("BotSettings.RandomMinLength");
RandomMaxLength = config.getInt("BotSettings.RandomMaxLength");
KeepAlive = config.getBoolean("BotSettings.KeepAlive");
KeepAlive = config.getBoolean("BotSettings.PacketHandler.KeepAlive");
PacketHandlerMove = config.getBoolean("BotSettings.PacketHandler.Move");
RegisterCommands = config.getStringList("BotSettings.RegisterCommands");
GetMotdBeforeRejoin = config.getBoolean("BotSettings.GetMotdBeforeRejoin");
GetMotdCount = config.getInt("BotSettings.GetMotdCount");

View File

@ -20,7 +20,9 @@ public class PacketManager {
packetHandler.handleServerJoinGamePacket(client, packet, username);
} else if (packetHandler.checkServerKeepAlivePacket(packet)) {
// 心跳包
packetHandler.handleServerKeepAlivePacket(client, packet, username);
if (ConfigUtil.KeepAlive) {
packetHandler.handleServerKeepAlivePacket(client, packet, username);
}
} else if (packetHandler.checkServerChatPacket(packet)) {
// 聊天信息包
packetHandler.handleServerChatPacket(client, packet, username);
@ -32,7 +34,9 @@ public class PacketManager {
packetHandler.handleServerPlayerHealthPacket(client, packet, username);
} else if (packetHandler.checkServerPlayerPositionRotationPacket(packet)) {
// 移动数据包
packetHandler.handleServerPlayerPositionRotationPacket(client, packet, username);
if (ConfigUtil.PacketHandlerMove) {
packetHandler.handleServerPlayerPositionRotationPacket(client, packet, username);
}
BotManager.positionList.put(client, packet);
} else {
// packetHandler.handleOtherPacket(packet);

View File

@ -115,7 +115,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
ClientTeleportConfirmPacket teleportConfirmPacket = new ClientTeleportConfirmPacket(packet.getTeleportId());
session.send(teleportConfirmPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -142,9 +141,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -105,7 +105,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
ClientTeleportConfirmPacket teleportConfirmPacket = new ClientTeleportConfirmPacket(packet.getTeleportId());
session.send(teleportConfirmPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -132,9 +131,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -98,7 +98,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
ClientTeleportConfirmPacket teleportConfirmPacket = new ClientTeleportConfirmPacket(packet.getTeleportId());
session.send(teleportConfirmPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -125,9 +124,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -99,7 +99,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
ClientTeleportConfirmPacket teleportConfirmPacket = new ClientTeleportConfirmPacket(packet.getTeleportId());
session.send(teleportConfirmPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -126,9 +125,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -99,7 +99,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
ClientTeleportConfirmPacket teleportConfirmPacket = new ClientTeleportConfirmPacket(packet.getTeleportId());
session.send(teleportConfirmPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -126,9 +125,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -99,8 +99,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
TcpClientSession session = (TcpClientSession) client;
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
ClientTeleportConfirmPacket teleportConfirmPacket = new ClientTeleportConfirmPacket(packet.getTeleportId());
((TcpClientSession) client).send(teleportConfirmPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
session.send(teleportConfirmPacket);
sendClientPlayerMovementPacket(session, true);
}
@ -127,9 +126,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
TcpClientSession session = (TcpClientSession) client;
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -99,8 +99,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
TcpClientSession session = (TcpClientSession) client;
ClientboundPlayerPositionPacket packet = (ClientboundPlayerPositionPacket) recvPacket;
ServerboundAcceptTeleportationPacket acceptTeleportationPacket = new ServerboundAcceptTeleportationPacket(packet.getTeleportId());
((TcpClientSession) client).send(acceptTeleportationPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
session.send(acceptTeleportationPacket);
sendClientPlayerMovementPacket(session, true);
}
@ -127,9 +126,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
TcpClientSession session = (TcpClientSession) client;
ClientboundKeepAlivePacket serverKeepAlivePacket = (ClientboundKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -97,8 +97,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
TcpClientSession session = (TcpClientSession) client;
ClientboundPlayerPositionPacket packet = (ClientboundPlayerPositionPacket) recvPacket;
ServerboundAcceptTeleportationPacket acceptTeleportationPacket = new ServerboundAcceptTeleportationPacket(packet.getTeleportId());
((TcpClientSession) client).send(acceptTeleportationPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
session.send(acceptTeleportationPacket);
sendClientPlayerMovementPacket(session, true);
}
@ -125,9 +124,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
TcpClientSession session = (TcpClientSession) client;
ClientboundKeepAlivePacket serverKeepAlivePacket = (ClientboundKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -97,8 +97,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
TcpClientSession session = (TcpClientSession) client;
ClientboundPlayerPositionPacket packet = (ClientboundPlayerPositionPacket) recvPacket;
ServerboundAcceptTeleportationPacket acceptTeleportationPacket = new ServerboundAcceptTeleportationPacket(packet.getTeleportId());
((TcpClientSession) client).send(acceptTeleportationPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
session.send(acceptTeleportationPacket);
sendClientPlayerMovementPacket(session, true);
}
@ -125,9 +124,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
TcpClientSession session = (TcpClientSession) client;
ClientboundKeepAlivePacket serverKeepAlivePacket = (ClientboundKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -97,8 +97,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
TcpClientSession session = (TcpClientSession) client;
ClientboundPlayerPositionPacket packet = (ClientboundPlayerPositionPacket) recvPacket;
ServerboundAcceptTeleportationPacket acceptTeleportationPacket = new ServerboundAcceptTeleportationPacket(packet.getTeleportId());
((TcpClientSession) client).send(acceptTeleportationPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
session.send(acceptTeleportationPacket);
sendClientPlayerMovementPacket(session, true);
}
@ -125,9 +124,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
TcpClientSession session = (TcpClientSession) client;
ClientboundKeepAlivePacket serverKeepAlivePacket = (ClientboundKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -104,8 +104,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
TcpClientSession session = (TcpClientSession) client;
ClientboundPlayerPositionPacket packet = (ClientboundPlayerPositionPacket) recvPacket;
ServerboundAcceptTeleportationPacket acceptTeleportationPacket = new ServerboundAcceptTeleportationPacket(packet.getTeleportId());
((TcpClientSession) client).send(acceptTeleportationPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
session.send(acceptTeleportationPacket);
sendClientPlayerMovementPacket(session, true);
}
@ -132,9 +131,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
TcpClientSession session = (TcpClientSession) client;
ClientboundKeepAlivePacket serverKeepAlivePacket = (ClientboundKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {

View File

@ -107,8 +107,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
@Override
public void handleServerPlayerPositionRotationPacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -135,9 +133,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override

View File

@ -111,8 +111,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
@Override
public void handleServerPlayerPositionRotationPacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -139,9 +137,7 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override

View File

@ -115,7 +115,6 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
ServerPlayerPositionRotationPacket packet = (ServerPlayerPositionRotationPacket) recvPacket;
ClientTeleportConfirmPacket teleportConfirmPacket = new ClientTeleportConfirmPacket(packet.getTeleportId());
session.send(teleportConfirmPacket);
sendPositionRotationPacket(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getYaw());
sendClientPlayerMovementPacket(session, true);
}
@ -142,9 +141,8 @@ public class PacketHandler implements cn.serendipityr.EndMinecraftPlusV2.Multipl
public void handleServerKeepAlivePacket(Object client, Object recvPacket, String username) {
Session session = ((Client) client).getSession();
ServerKeepAlivePacket serverKeepAlivePacket = (ServerKeepAlivePacket) recvPacket;
if (ConfigUtil.KeepAlive) {
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
} }
sendClientKeepAlivePacket(session, serverKeepAlivePacket.getPingId());
}
@Override
public boolean checkServerPlayerHealthPacket(Object packet) {