Skip to content

Commit

Permalink
Added arbitrary encoding/decondig methods to CustomPlugin
Browse files Browse the repository at this point in the history
  • Loading branch information
federicodotta committed Feb 17, 2020
1 parent 7ac85be commit 7326b34
Show file tree
Hide file tree
Showing 8 changed files with 465 additions and 394 deletions.
7 changes: 7 additions & 0 deletions pom.xml
Expand Up @@ -79,6 +79,13 @@
<version>3.7</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.14</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/burp/BridaButtonPlugin.java
@@ -1,6 +1,7 @@
package burp;

import java.util.Base64;
import java.util.List;

import javax.swing.JPanel;

Expand All @@ -13,10 +14,10 @@ public BridaButtonPlugin(int platform, boolean isInterceptorHook,
BurpExtender mainPlugin, String customPluginName, String customPluginExportedFunctionName,
CustomPluginExecuteOnValues customPluginExecuteOn, String customPluginExecuteOnButtonName,
CustomPluginParameterValues customPluginParameter,
String customPluginParameterString, CustomPluginEncodingValues customPluginParameterEncoding,
String customPluginParameterString, List<BurpExtender.Transformation> customPluginParameterEncoding,
CustomPluginFunctionOutputValues customPluginFunctionOutput, String customPluginFunctionOutputString,
CustomPluginEncodingValues customPluginOutputEncoding,
CustomPluginEncodingValues customPluginOutputDecoding) {
List<BurpExtender.Transformation> customPluginOutputEncoding,
List<BurpExtender.Transformation> customPluginOutputDecoding) {
super(mainPlugin, customPluginName, customPluginExportedFunctionName, customPluginExecuteOn, customPluginExecuteOnButtonName,
null, null, customPluginParameter,
customPluginParameterString, customPluginParameterEncoding, customPluginFunctionOutput,
Expand Down Expand Up @@ -50,11 +51,11 @@ public String exportPlugin() {
result = result + Base64.getEncoder().encodeToString(getCustomPluginExecuteOnContextName().getBytes()) + ";";
result = result + getCustomPluginParameter().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginParameterString().getBytes()) + ";";
result = result + getCustomPluginParameterEncoding().ordinal() + ";";
result = result + getCustomPluginParameterEncoding().toString() + ";";
result = result + getCustomPluginFunctionOutput().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginFunctionOutputString().getBytes()) + ";";
result = result + getCustomPluginOutputEncoding().ordinal() + ";";
result = result + getCustomPluginOutputDecoding().ordinal();
result = result + getCustomPluginOutputEncoding().toString() + ";";
result = result + getCustomPluginOutputDecoding().toString();

return result;

Expand Down
14 changes: 7 additions & 7 deletions src/main/java/burp/BridaContextMenuPlugin.java
Expand Up @@ -19,10 +19,10 @@ public class BridaContextMenuPlugin extends CustomPlugin implements IContextMenu
public BridaContextMenuPlugin(BurpExtender mainPlugin, String customPluginName, String customPluginExportedFunctionName,
CustomPluginExecuteOnValues customPluginExecuteOn, String customPluginExecuteOnContextName,
CustomPluginParameterValues customPluginParameter,
String customPluginParameterString, CustomPluginEncodingValues customPluginParameterEncoding,
String customPluginParameterString, List<BurpExtender.Transformation> customPluginParameterEncoding,
CustomPluginFunctionOutputValues customPluginFunctionOutput, String customPluginFunctionOutputString,
CustomPluginEncodingValues customPluginOutputEncoding,
CustomPluginEncodingValues customPluginOutputDecoding) {
List<BurpExtender.Transformation> customPluginOutputEncoding,
List<BurpExtender.Transformation> customPluginOutputDecoding) {
super(mainPlugin, customPluginName, customPluginExportedFunctionName, customPluginExecuteOn, customPluginExecuteOnContextName,
null, null, customPluginParameter,
customPluginParameterString, customPluginParameterEncoding, customPluginFunctionOutput,
Expand All @@ -45,11 +45,11 @@ public String exportPlugin() {
result = result + Base64.getEncoder().encodeToString(getCustomPluginExecuteOnContextName().getBytes()) + ";";
result = result + getCustomPluginParameter().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginParameterString().getBytes()) + ";";
result = result + getCustomPluginParameterEncoding().ordinal() + ";";
result = result + getCustomPluginParameterEncoding().toString() + ";";
result = result + getCustomPluginFunctionOutput().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginFunctionOutputString().getBytes()) + ";";
result = result + getCustomPluginOutputEncoding().ordinal() + ";";
result = result + getCustomPluginOutputDecoding().ordinal();
result = result + getCustomPluginOutputEncoding().toString() + ";";
result = result + getCustomPluginOutputDecoding().toString();

return result;

Expand Down Expand Up @@ -123,7 +123,7 @@ public void executeAction() {

int[] selectedBounds = currentInvocation.getSelectionBounds();
byte[] selectedPortion = Arrays.copyOfRange(selectedRequestOrResponse, selectedBounds[0], selectedBounds[1]);
parameters = new String[] { encodeCustomPluginValue(selectedPortion,getCustomPluginParameterEncoding()) } ;
parameters = new String[] { encodeCustomPluginValue(selectedPortion,getCustomPluginParameterEncoding(), getMainPlugin()) } ;

} else {

Expand Down
13 changes: 7 additions & 6 deletions src/main/java/burp/BridaHttpListenerPlugin.java
Expand Up @@ -2,6 +2,7 @@

import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand All @@ -15,10 +16,10 @@ public BridaHttpListenerPlugin(ArrayList<Integer> customPluginTools, boolean pro
CustomPluginExecuteOnValues customPluginExecuteOn, String customPluginExecuteOnContextName,
CustomPluginExecuteValues customPluginExecute,
String customPluginExecuteString, CustomPluginParameterValues customPluginParameter,
String customPluginParameterString, CustomPluginEncodingValues customPluginParameterEncoding,
String customPluginParameterString, List<BurpExtender.Transformation> customPluginParameterEncoding,
CustomPluginFunctionOutputValues customPluginFunctionOutput, String customPluginFunctionOutputString,
CustomPluginEncodingValues customPluginOutputEncoding,
CustomPluginEncodingValues customPluginOutputDecoding) {
List<BurpExtender.Transformation> customPluginOutputEncoding,
List<BurpExtender.Transformation> customPluginOutputDecoding) {
super(mainPlugin, customPluginName, customPluginExportedFunctionName, customPluginExecuteOn, customPluginExecuteOnContextName,
customPluginExecute, customPluginExecuteString, customPluginParameter,
customPluginParameterString, customPluginParameterEncoding, customPluginFunctionOutput,
Expand Down Expand Up @@ -57,11 +58,11 @@ public String exportPlugin() {
result = result + Base64.getEncoder().encodeToString(getCustomPluginExecuteString().getBytes()) + ";";
result = result + getCustomPluginParameter().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginParameterString().getBytes()) + ";";
result = result + getCustomPluginParameterEncoding().ordinal() + ";";
result = result + getCustomPluginParameterEncoding().toString() + ";";
result = result + getCustomPluginFunctionOutput().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginFunctionOutputString().getBytes()) + ";";
result = result + getCustomPluginOutputEncoding().ordinal() + ";";
result = result + getCustomPluginOutputDecoding().ordinal();
result = result + getCustomPluginOutputEncoding().toString() + ";";
result = result + getCustomPluginOutputDecoding().toString();

return result;

Expand Down
48 changes: 24 additions & 24 deletions src/main/java/burp/BridaMessageEditorPlugin.java
Expand Up @@ -14,11 +14,11 @@
public class BridaMessageEditorPlugin extends CustomPlugin implements IMessageEditorTabFactory {

private String tabCaption;
private CustomPluginEncodingValues customPluginEditedContentEncodingFridaInput;
private List<BurpExtender.Transformation> customPluginEditedContentEncodingFridaInput;
private String customPluginEditedContentLocationString;
private CustomPluginEncodingValues customPluginEditedContentFridaOutputDecoding;
private List<BurpExtender.Transformation> customPluginEditedContentFridaOutputDecoding;
private String customPluginEditedContentFridaFunctionName;
private CustomPluginEncodingValues customPluginEditedContentOutputEncoding;
private List<BurpExtender.Transformation> customPluginEditedContentOutputEncoding;
private BridaMessageEditorPluginOutputLocation customPluginEditedContentLocation;

public static enum BridaMessageEditorPluginOutputLocation {
Expand All @@ -31,18 +31,18 @@ public static enum BridaMessageEditorPluginOutputLocation {

public BridaMessageEditorPlugin(BridaMessageEditorPluginOutputLocation customPluginEditedContentLocation,
String customPluginEditedContentLocationString,
CustomPluginEncodingValues customPluginEditedContentEncodingFridaInput,
CustomPluginEncodingValues customPluginEditedContentFridaOutputDecoding,
List<BurpExtender.Transformation> customPluginEditedContentEncodingFridaInput,
List<BurpExtender.Transformation> customPluginEditedContentFridaOutputDecoding,
String customPluginEditedContentFridaFunctionName,
CustomPluginEncodingValues customPluginEditedContentOutputEncoding,
List<BurpExtender.Transformation> customPluginEditedContentOutputEncoding,
BurpExtender mainPlugin, String customPluginName, String customPluginExportedFunctionName,
CustomPluginExecuteOnValues customPluginExecuteOn, String customPluginExecuteOnContextName,
CustomPluginExecuteValues customPluginExecute, String customPluginExecuteString,
CustomPluginParameterValues customPluginParameter, String customPluginParameterString,
CustomPluginEncodingValues customPluginParameterEncoding,
List<BurpExtender.Transformation> customPluginParameterEncoding,
CustomPluginFunctionOutputValues customPluginFunctionOutput, String customPluginFunctionOutputString,
CustomPluginEncodingValues customPluginOutputEncoding,
CustomPluginEncodingValues customPluginOutputDecoding) {
List<BurpExtender.Transformation> customPluginOutputEncoding,
List<BurpExtender.Transformation> customPluginOutputDecoding) {

super(mainPlugin, customPluginName, customPluginExportedFunctionName,
customPluginExecuteOn, customPluginExecuteOnContextName,
Expand Down Expand Up @@ -73,10 +73,10 @@ public String exportPlugin() {
result = result + getType().ordinal() + ";";
result = result + customPluginEditedContentLocation.ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(customPluginEditedContentLocationString.getBytes()) + ";";
result = result + customPluginEditedContentEncodingFridaInput.ordinal() + ";";
result = result + customPluginEditedContentFridaOutputDecoding.ordinal() + ";";
result = result + customPluginEditedContentEncodingFridaInput.toString() + ";";
result = result + customPluginEditedContentFridaOutputDecoding.toString() + ";";
result = result + Base64.getEncoder().encodeToString(customPluginEditedContentFridaFunctionName.getBytes()) + ";";
result = result + customPluginEditedContentOutputEncoding.ordinal() + ";";
result = result + customPluginEditedContentOutputEncoding.toString() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginName().getBytes()) + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginExportedFunctionName().getBytes()) + ";";
result = result + getCustomPluginExecuteOn().ordinal() + ";";
Expand All @@ -85,11 +85,11 @@ public String exportPlugin() {
result = result + Base64.getEncoder().encodeToString(getCustomPluginExecuteString().getBytes()) + ";";
result = result + getCustomPluginParameter().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginParameterString().getBytes()) + ";";
result = result + getCustomPluginParameterEncoding().ordinal() + ";";
result = result + getCustomPluginParameterEncoding().toString() + ";";
result = result + getCustomPluginFunctionOutput().ordinal() + ";";
result = result + Base64.getEncoder().encodeToString(getCustomPluginFunctionOutputString().getBytes()) + ";";
result = result + getCustomPluginOutputEncoding().ordinal() + ";";
result = result + getCustomPluginOutputDecoding().ordinal();
result = result + getCustomPluginOutputEncoding().toString() + ";";
result = result + getCustomPluginOutputDecoding().toString();

return result;

Expand Down Expand Up @@ -204,7 +204,7 @@ public byte[] getMessage() {
byte[] editedContent = txtInput.getText();

// Encode parameter
String[] parameters = new String[] {encodeCustomPluginValue(editedContent,customPluginEditedContentEncodingFridaInput)};
String[] parameters = new String[] {encodeCustomPluginValue(editedContent,customPluginEditedContentEncodingFridaInput, getMainPlugin())};

// Call frida
if(getMainPlugin().serverStarted && getMainPlugin().applicationSpawned) {
Expand All @@ -231,10 +231,10 @@ public byte[] getMessage() {
if(ret != null) {

// Decode function output if requested
byte[] customPluginEditedContentOutputDecoded = decodeCustomPluginOutput(ret,customPluginEditedContentFridaOutputDecoding);
byte[] customPluginEditedContentOutputDecoded = decodeCustomPluginOutput(ret,customPluginEditedContentFridaOutputDecoding, getMainPlugin());

// Encode plugin output if requested
String customPluginEditedContentOutputEncoded = encodeCustomPluginValue(customPluginEditedContentOutputDecoded, customPluginEditedContentOutputEncoding);
String customPluginEditedContentOutputEncoded = encodeCustomPluginValue(customPluginEditedContentOutputDecoded, customPluginEditedContentOutputEncoding, getMainPlugin());

// DEBUG print
printToExternalDebugFrame("** Frida returned value (after deconding/encoding) on edited content\n");
Expand Down Expand Up @@ -338,12 +338,12 @@ public byte[] getMessage() {

}

public CustomPluginEncodingValues getCustomPluginEditedContentEncodingFridaInput() {
public List<BurpExtender.Transformation> getCustomPluginEditedContentEncodingFridaInput() {
return customPluginEditedContentEncodingFridaInput;
}

public void setCustomPluginEditedContentEncodingFridaInput(
CustomPluginEncodingValues customPluginEditedContentEncodingFridaInput) {
List<BurpExtender.Transformation> customPluginEditedContentEncodingFridaInput) {
this.customPluginEditedContentEncodingFridaInput = customPluginEditedContentEncodingFridaInput;
}

Expand All @@ -355,12 +355,12 @@ public void setCustomPluginEditedContentLocationString(String customPluginEdited
this.customPluginEditedContentLocationString = customPluginEditedContentLocationString;
}

public CustomPluginEncodingValues getCustomPluginEditedContentFridaOutputDecoding() {
public List<BurpExtender.Transformation> getCustomPluginEditedContentFridaOutputDecoding() {
return customPluginEditedContentFridaOutputDecoding;
}

public void setCustomPluginEditedContentFridaOutputDecoding(
CustomPluginEncodingValues customPluginEditedContentFridaOutputDecoding) {
List<BurpExtender.Transformation> customPluginEditedContentFridaOutputDecoding) {
this.customPluginEditedContentFridaOutputDecoding = customPluginEditedContentFridaOutputDecoding;
}

Expand All @@ -372,12 +372,12 @@ public void setCustomPluginEditedContentFridaFunctionName(String customPluginEdi
this.customPluginEditedContentFridaFunctionName = customPluginEditedContentFridaFunctionName;
}

public CustomPluginEncodingValues getCustomPluginEditedContentOutputEncoding() {
public List<BurpExtender.Transformation> getCustomPluginEditedContentOutputEncoding() {
return customPluginEditedContentOutputEncoding;
}

public void setCustomPluginEditedContentOutputEncoding(
CustomPluginEncodingValues customPluginEditedContentOutputEncoding) {
List<BurpExtender.Transformation> customPluginEditedContentOutputEncoding) {
this.customPluginEditedContentOutputEncoding = customPluginEditedContentOutputEncoding;
}

Expand Down

0 comments on commit 7326b34

Please sign in to comment.