旧版本支持发送随机传送数据包 配置文件更新

This commit is contained in:
SerendipityR 2022-08-23 13:36:18 +08:00 committed by GitHub
parent 3b0d16a822
commit 8686f7943c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 108 additions and 16 deletions

View File

@ -8,7 +8,8 @@ import cn.serendipityr.EndMinecraftPlusV2.VersionControl.AttackManager;
import cn.serendipityr.EndMinecraftPlusV2.VersionControl.ProtocolLibs;
public class EndMinecraftPlusV2 {
public static String ver = "1.2.5";
public static String ver = "1.2.6";
public static Integer CfgVer = 1;
public static void main(String[] args) {
System.out.println("========================-Forked by SerendipityR-========================");

View File

@ -16,6 +16,7 @@ import java.util.Scanner;
public class ConfigUtil {
public static File configFile;
public static YamlConfiguration config;
public static Integer CfgVer;
public static String AttackAddress;
public static Integer AttackPort;
public static Integer AttackMethod;
@ -27,6 +28,10 @@ public class ConfigUtil {
public static String DoubleExploitPlayer;
public static Boolean ShowFails;
public static String BotName;
public static Integer RandomFlag;
public static Integer RandomMinLength;
public static Integer RandomMaxLength;
public static Boolean RandomTeleport;
public static Integer BotCount;
public static Boolean RegisterAndLogin;
public static List<String> RegisterCommands;
@ -55,6 +60,13 @@ public class ConfigUtil {
config = YamlConfiguration.loadConfiguration(configFile);
CfgVer = config.getInt("CfgVer");
if (!EndMinecraftPlusV2.CfgVer.equals(CfgVer)) {
LogUtil.doLog(1, "载入配置文件失败! 配置文件版本不匹配,请前往发布页更新配置文件。", null);
EndMinecraftPlusV2.Exit();
}
AttackAddress = config.getString("AttackSettings.Address");
AttackPort = config.getInt("AttackSettings.Port");
AttackMethod = config.getInt("AttackSettings.Method");
@ -67,6 +79,10 @@ public class ConfigUtil {
ShowFails = config.getBoolean("AttackSettings.ShowFails");
BotName = config.getString("BotSettings.BotName");
BotCount = config.getInt("BotSettings.BotCount");
RandomTeleport = config.getBoolean("BotSettings.RandomTeleport");
RandomFlag = config.getInt("BotSettings.RandomFlag");
RandomMinLength = config.getInt("BotSettings.RandomMinLength");
RandomMaxLength = config.getInt("BotSettings.RandomMaxLength");
RegisterAndLogin = config.getBoolean("BotSettings.Register&Login");
RegisterCommands = config.getStringList("BotSettings.RegisterCommands");
RejoinCount = config.getInt("BotSettings.RejoinCount");

View File

@ -23,7 +23,14 @@ public class DataUtil {
botRegPasswords.remove("");
String lastBotName = data.getString("LastBotName");
if (lastBotName != null && !ConfigUtil.BotName.equals(lastBotName)) {
Integer lastRandomFlag = data.getInt("LastRandomFlag");
String lastRandomLength = data.getString("LastRandomLength");
boolean needReset;
needReset = !ConfigUtil.BotName.equals(lastBotName) || !ConfigUtil.RandomFlag.equals(lastRandomFlag) || !(ConfigUtil.RandomMinLength + "|" + ConfigUtil.RandomMaxLength).equals(lastRandomLength);
if (lastBotName != null && needReset) {
LogUtil.doLog(-1, "检测到BotName已被修改是否重置数据文件以使更改生效 [y/n]:", "DataUtil");
Scanner scanner = new Scanner(System.in);
if (scanner.nextLine().contains("y")) {
@ -48,7 +55,24 @@ public class DataUtil {
int count = ConfigUtil.BotCount - botRegPasswords.size();
for (int i = 0; i < count; i++) {
String newBotName = ConfigUtil.BotName.replace("$rnd", OtherUtils.getRandomString(3,5));
String newBotName;
switch (ConfigUtil.RandomFlag) {
case 2:
newBotName = ConfigUtil.BotName.replace("$rnd", OtherUtils.getRandomString_Ili(ConfigUtil.RandomMinLength,ConfigUtil.RandomMaxLength));
break;
case 3:
newBotName = ConfigUtil.BotName.replace("$rnd", OtherUtils.getRandomString_Abc(ConfigUtil.RandomMinLength,ConfigUtil.RandomMaxLength));
break;
case 4:
newBotName = ConfigUtil.BotName.replace("$rnd", OtherUtils.getRandomString_123(ConfigUtil.RandomMinLength,ConfigUtil.RandomMaxLength));
break;
case 1:
default:
newBotName = ConfigUtil.BotName.replace("$rnd", OtherUtils.getRandomString(ConfigUtil.RandomMinLength,ConfigUtil.RandomMaxLength));
break;
}
String newBotPwd = OtherUtils.getRandomString(8,10);
botRegPasswords.add(newBotName + "@" + newBotPwd);
}
@ -72,6 +96,8 @@ public class DataUtil {
if (!notModify) {
data.set("LastBotName", ConfigUtil.BotName);
data.set("LastRandomFlag", ConfigUtil.RandomFlag);
data.set("LastRandomLength", ConfigUtil.RandomMinLength + "|" + ConfigUtil.RandomMaxLength);
}
try {

View File

@ -34,6 +34,42 @@ public class OtherUtils {
return stringBuilder.toString();
}
public static String getRandomString_Ili(int minLength, int maxLength) {
String str = "Ili";
Random random = new Random();
int length = random.nextInt(maxLength) % (maxLength - minLength + 1) + minLength;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; ++i) {
int number = random.nextInt(3);
sb.append(str.charAt(number));
}
return sb.toString();
}
public static String getRandomString_Abc(int minLength, int maxLength) {
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random random = new Random();
int length = random.nextInt(maxLength) % (maxLength - minLength + 1) + minLength;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; ++i) {
int number = random.nextInt(52);
sb.append(str.charAt(number));
}
return sb.toString();
}
public static String getRandomString_123(int minLength, int maxLength) {
String str = "1234567890";
Random random = new Random();
int length = random.nextInt(maxLength) % (maxLength - minLength + 1) + minLength;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; ++i) {
int number = random.nextInt(10);
sb.append(str.charAt(number));
}
return sb.toString();
}
public static Integer getRandomInt(int min, int max) {
return (int)(Math.random()*(max-min+1)+min);
}

View File

@ -324,7 +324,6 @@ public class BotAttack extends IAttack {
}
}
} else if (ConfigUtil.ShowFails) {
//msg = e.getCause().getMessage();
LogUtil.doLog(0,"[假人断开连接] [" + username + "] " + e.getCause(), "BotAttack");
}

View File

@ -82,18 +82,20 @@ public class BotAttack extends IAttack {
OtherUtils.doSleep(ConfigUtil.ChatDelay);
}
/*ServerPlayerPositionRotationPacket positionRotationPacket = positionPacket.get(c.getSession());
if (c.getSession().isConnected() && positionRotationPacket != null) {
new Thread(() -> {
try {
MultiVersionPacket.sendPosPacket(c.getSession(), positionRotationPacket.getX() + OtherUtils.getRandomInt(-10, 10), positionRotationPacket.getY() + OtherUtils.getRandomInt(2, 8), positionRotationPacket.getZ() + OtherUtils.getRandomInt(-10, 10), OtherUtils.getRandomFloat(0.00, 1.00), OtherUtils.getRandomFloat(0.00, 1.00));
Thread.sleep(500);
MultiVersionPacket.sendPosPacket(c.getSession(), positionRotationPacket.getX(), positionRotationPacket.getY(), positionRotationPacket.getZ(), OtherUtils.getRandomFloat(0.00, 1.00), OtherUtils.getRandomFloat(0.00, 1.00));
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}).start();
}*/
if (ConfigUtil.RandomTeleport) {
ServerPlayerPositionRotationPacket positionRotationPacket = positionPacket.get(c.getSession());
if (c.getSession().isConnected() && positionRotationPacket != null) {
new Thread(() -> {
try {
MultiVersionPacket.sendPosPacket(c.getSession(), positionRotationPacket.getX() + OtherUtils.getRandomInt(-10, 10), positionRotationPacket.getY() + OtherUtils.getRandomInt(2, 8), positionRotationPacket.getZ() + OtherUtils.getRandomInt(-10, 10), OtherUtils.getRandomFloat(0.00, 1.00), OtherUtils.getRandomFloat(0.00, 1.00));
Thread.sleep(500);
MultiVersionPacket.sendPosPacket(c.getSession(), positionRotationPacket.getX(), positionRotationPacket.getY(), positionRotationPacket.getZ(), OtherUtils.getRandomFloat(0.00, 1.00), OtherUtils.getRandomFloat(0.00, 1.00));
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}).start();
}
}
} else if (c.getSession().hasFlag("join")) {
if (ConfigUtil.RegisterAndLogin) {
for (String cmd:ConfigUtil.RegisterCommands) {

View File

@ -3,6 +3,8 @@
# Forked by SerendipityR #
##############################
CfgVer: 1
AttackSettings:
Address: "example.com"
Port: 25565
@ -29,6 +31,16 @@ BotSettings:
# $pwd - 随机生成密码
BotName: "ImOldSix_$rnd"
BotCount: 1000
# 随机字符规则 (仅影响BotName):
# 1 - Normal - 简单随机化
# 2 - Ili - iii混淆式
# 3 - ABC - 纯字母
# 4 - 123 - 纯数字
RandomFlag: 1
RandomMinLength: 4
RandomMaxLength: 6
# 尝试发送随机传送数据包
RandomTeleport: true
RejoinCount: 5
RejoinDelay: 2000
RejoinDetect: