Skip to content

Instantly share code, notes, and snippets.

@Serhatcck
Created November 2, 2023 14:41
Show Gist options
  • Save Serhatcck/a60c354798bd33899e4f3251f64062b1 to your computer and use it in GitHub Desktop.
Save Serhatcck/a60c354798bd33899e4f3251f64062b1 to your computer and use it in GitHub Desktop.
Burp Suite base64 encoder gist
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