/
secator
/
hide-or-drop
Обзор
Документация
Войти
/
secator
/
hide-or-drop
Код
Пакеты
0
Релизы
1
Аналитика
Безопасность
master
src/main/java/hideordrop/HodScope.java
128 строк
4 KB
v
base
14 янв 2026, 14:20
14 янв 2026, 14:20
b9d2a1a
Код
Авторство
О чём код?
/* * Hide Or Drop v0.0.1 * Copyright (c) 2026. https://secator.com/hod/ */ package hideordrop; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import javax.swing.*; import java.awt.event.ActionEvent; import java.util.Objects; import java.util.regex.Pattern; public class HodScope { public static void add(ActionEvent event) { String scope = HideOrDrop.getApi().burpSuite().exportProjectOptionsAsJson("target.scope"); Gson gson = new Gson(); JsonObject options = gson.fromJson(scope, JsonElement.class).getAsJsonObject(); JsonObject targetScope = options.getAsJsonObject("target").getAsJsonObject("scope"); targetScope.addProperty("advanced_mode",true); JsonObject object = new JsonObject(); object.addProperty("enabled", true); object.addProperty("protocol", "any"); JsonArray include = targetScope.getAsJsonArray("include"); if (!issetRule(include, object)) { include.add(object); object = object.deepCopy(); } JMenuItem clickedItem = (JMenuItem) event.getSource(); String property = clickedItem.getName(); String pattern = clickedItem.getText(); switch (property) { case "host": object.addProperty("host", "^" + Pattern.quote(pattern) + "$"); break; case "wild3": case "wild2": case "wild": object.addProperty("host", Pattern.quote(pattern) + "$"); break; case "file3": case "file2": case "file": object.addProperty("file", "^" + Pattern.quote(pattern)); break; case "url3": case "url2": case "url": String[] hostPath = pattern.split("/", 2); object.addProperty("host", "^" + Pattern.quote(hostPath[0]) + "$"); object.addProperty("file", "^" + Pattern.quote("/" + hostPath[1])); break; } if (Objects.equals(event.getActionCommand(), "drop")) { object.addProperty("port", "(drop)?"); } JsonArray exclude = targetScope.getAsJsonArray("exclude"); if (!issetRule(exclude, object)) { exclude.add(object); } HideOrDrop.getApi().burpSuite().importProjectOptionsFromJson(gson.toJson(options)); } public static JsonArray getDrop() { JsonArray drop = new JsonArray(); String scope = HideOrDrop.getApi().burpSuite().exportProjectOptionsAsJson("target.scope"); Gson gson = new Gson(); JsonObject options = gson.fromJson(scope, JsonElement.class).getAsJsonObject(); JsonArray exclude = options.getAsJsonObject("target").getAsJsonObject("scope").getAsJsonArray("exclude"); exclude.forEach((JsonObject) -> { if (JsonObject.getAsJsonObject().get("enabled").getAsBoolean()) { if (JsonObject.getAsJsonObject().has("port") && JsonObject.getAsJsonObject().get("port").getAsString().contains("(drop)?")) { drop.add(JsonObject); } } }); return drop; } private static boolean issetEquals(String key, JsonObject object, JsonObject candidate) { if (candidate.has(key)) { if (!object.has(key)) { return false; } return object.get(key).getAsString().equals(candidate.get(key).getAsString()); } return !object.has(key); } private static boolean issetRule(JsonArray array, JsonObject candidate) { for (JsonElement item : array) { JsonObject object = item.getAsJsonObject(); if (!issetEquals("protocol", object, candidate)) { continue; } if (!issetEquals("host", object, candidate)) { continue; } if (!issetEquals("file", object, candidate)) { continue; } if (!object.get("enabled").getAsBoolean()) { object.addProperty("enabled", true); } return true; } return false; } }