Skip to content

Commit

Permalink
fix filter issue where one activated filters activates all filters
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasherz committed Jan 29, 2024
1 parent 0a88edd commit f6d7a50
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 21 deletions.
4 changes: 2 additions & 2 deletions src/main/java/burp/CstcHttpHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class CstcHttpHandler implements HttpHandler {

@Override
public RequestToBeSentAction handleHttpRequestToBeSent(HttpRequestToBeSent requestToBeSent) {
if (BurpUtils.getInstance().getFilterState().shouldProcess(FilterState.BurpOperation.OUTGOING)) {
if (BurpUtils.getInstance().getFilterState().shouldProcess(FilterState.BurpOperation.OUTGOING, requestToBeSent.toolSource())) {
ByteArray request = requestToBeSent.toByteArray();
ByteArray modifiedRequest = view.getOutgoingRecipePanel().bake(request);
Logger.getInstance().log("modified request: \n" + new String(modifiedRequest.getBytes()));
Expand All @@ -37,7 +37,7 @@ public RequestToBeSentAction handleHttpRequestToBeSent(HttpRequestToBeSent reque

@Override
public ResponseReceivedAction handleHttpResponseReceived(HttpResponseReceived responseReceived) {
if (BurpUtils.getInstance().getFilterState().shouldProcess(FilterState.BurpOperation.INCOMING)) {
if (BurpUtils.getInstance().getFilterState().shouldProcess(FilterState.BurpOperation.INCOMING, responseReceived.toolSource())) {
ByteArray response = responseReceived.toByteArray();
ByteArray modifiedResponse = view.getIncomingRecipePanel().bake(response);
Logger.getInstance().log("modified response: \n" + new String(modifiedResponse.getBytes()));
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/de/usd/cstchef/view/RequestFilterDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ private RequestFilterDialog() {

private JPanel createPanel(BurpOperation operation) {
if (BurpUtils.getInstance().getFilterState().getFilterMask(operation).isEmpty()) {
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter("Proxy", ToolType.PROXY.ordinal()), false);
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter("Repeater", ToolType.REPEATER.ordinal()),
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter(ToolType.PROXY, ToolType.PROXY.ordinal()), false);
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter(ToolType.REPEATER, ToolType.REPEATER.ordinal()),
false);
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter("Scanner", ToolType.SCANNER.ordinal()), false);
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter("Intruder", ToolType.INTRUDER.ordinal()),
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter(ToolType.SCANNER, ToolType.SCANNER.ordinal()), false);
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter(ToolType.INTRUDER, ToolType.INTRUDER.ordinal()),
false);
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter("Extender", ToolType.EXTENSIONS.ordinal()),
BurpUtils.getInstance().getFilterState().getFilterMask(operation).put(new Filter(ToolType.EXTENSIONS, ToolType.EXTENSIONS.ordinal()),
false);
}

Expand Down
19 changes: 10 additions & 9 deletions src/main/java/de/usd/cstchef/view/filter/Filter.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,29 @@
import com.fasterxml.jackson.annotation.JsonValue;

import burp.Logger;
import burp.api.montoya.core.ToolType;

public class Filter {
private String name;
private ToolType toolType;
private int value;

public Filter(String name, int value) {
this.name = name;
public Filter(ToolType toolType, int value) {
this.toolType = toolType;
this.value = value;
}

public Filter(String s) {
String[] pairs = s.split(":");
this.name = pairs[0].trim();
this.toolType = ToolType.valueOf(pairs[0].trim());
this.value = Integer.parseInt(pairs[1].trim());
}

public String getName() {
return name;
public ToolType getToolType() {
return toolType;
}

public void setName(String name) {
this.name = name;
public void setToolType(ToolType name) {
this.toolType = name;
}

public int getValue() {
Expand All @@ -38,6 +39,6 @@ public void setValue(int value) {
@Override
@JsonValue
public String toString() {
return name + ": " + value;
return toolType.toString() + ": " + value;
}
}
11 changes: 6 additions & 5 deletions src/main/java/de/usd/cstchef/view/filter/FilterState.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;

import burp.api.montoya.core.ToolSource;

public class FilterState implements Serializable{
@JsonDeserialize(keyUsing = FilterStateDeserializer.class)
private LinkedHashMap<Filter, Boolean> incomingFilterSettings;
Expand Down Expand Up @@ -63,7 +65,7 @@ public void setFilterMask(LinkedHashMap<Filter, Boolean> incomingFilterMask,
this.formatFilterSettings = formatFilterMask;
}

public boolean shouldProcess(BurpOperation operation) {
public boolean shouldProcess(BurpOperation operation, ToolSource toolSource) {
LinkedHashMap<Filter, Boolean> filterSettings;
int filterMask = 0;
switch (operation) {
Expand All @@ -83,12 +85,11 @@ public boolean shouldProcess(BurpOperation operation) {

for (Map.Entry<Filter, Boolean> entry : filterSettings.entrySet()) {
Filter filter = entry.getKey();
boolean selected = entry.getValue();
if (selected) {
filterMask |= filter.getValue();
if(filter.getToolType().equals(toolSource.toolType())){
return entry.getValue() == true;
}
}
return filterMask != 0;
return false;
}

public LinkedHashMap<Filter,Boolean> getIncomingFilterSettings() {
Expand Down

0 comments on commit f6d7a50

Please sign in to comment.