Created
November 2, 2023 14:41
-
-
Save Serhatcck/a60c354798bd33899e4f3251f64062b1 to your computer and use it in GitHub Desktop.
Burp Suite base64 encoder gist
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package burp; | |
import java.awt.*; | |
import java.io.PrintWriter; | |
import java.util.List; | |
public class BurpExtender implements IBurpExtender, IMessageEditorTabFactory { | |
private IBurpExtenderCallbacks callbacks; | |
private PrintWriter stdout; | |
private IExtensionHelpers helpers; | |
@Override | |
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) { | |
this.callbacks = callbacks; | |
callbacks.setExtensionName("Test Extension"); | |
callbacks.registerMessageEditorTabFactory(this); | |
helpers = callbacks.getHelpers(); | |
stdout = new PrintWriter(callbacks.getStdout(), true); | |
stdout.println("Hello test"); | |
} | |
@Override | |
public IMessageEditorTab createNewInstance(IMessageEditorController iMessageEditorController, boolean editable) { | |
return new Base64Encoder(iMessageEditorController, false); | |
} | |
class Base64Encoder implements IMessageEditorTab{ | |
private boolean editable; | |
private ITextEditor txtInput; | |
private byte[] currentMessage; | |
public Base64Encoder(IMessageEditorController controller, boolean editable) | |
{ | |
this.editable = editable; | |
txtInput = callbacks.createTextEditor(); | |
txtInput.setEditable(editable); | |
} | |
@Override | |
public String getTabCaption() { | |
return "base64encoder"; | |
} | |
@Override | |
public Component getUiComponent() { | |
return txtInput.getComponent(); | |
} | |
@Override | |
public boolean isEnabled(byte[] content, boolean isRequest) { | |
return isRequest; | |
} | |
@Override | |
public void setMessage(byte[] content, boolean isRequest) { | |
IRequestInfo analyzedRequest = helpers.analyzeRequest(content); | |
//if request has parameter | |
if (isRequest && !analyzedRequest.getParameters().isEmpty()) | |
{ | |
String urlencodedValue = new String(); | |
//get all query string parameter | |
List<IParameter> parameter = analyzedRequest.getParameters(); | |
for (IParameter param : parameter) { | |
urlencodedValue += param.getName() + "="; | |
urlencodedValue += param.getValue() + "&"; | |
} | |
//remove the "&" at the end of the string | |
urlencodedValue = urlencodedValue.replaceAll("&$", ""); | |
txtInput.setText(helpers.base64Encode(urlencodedValue).getBytes()); | |
txtInput.setEditable(editable); | |
} | |
else | |
{ | |
// clear our display | |
txtInput.setText(null); | |
txtInput.setEditable(false); | |
} | |
// remember the displayed content | |
currentMessage = content; | |
} | |
@Override | |
public byte[] getMessage() { | |
return currentMessage; | |
} | |
@Override | |
public boolean isModified() { | |
return txtInput.isTextModified(); | |
} | |
@Override | |
public byte[] getSelectedData() { | |
return txtInput.getSelectedText(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment