Yes, it's possible to modify the contents of a message editor.
In the example below, I used "
withAddedHeader()
", but you could substitute this out for a different method.
import burp.api.montoya.BurpExtension;
import burp.api.montoya.MontoyaApi;
import burp.api.montoya.ui.contextmenu.ContextMenuEvent;
import burp.api.montoya.ui.contextmenu.ContextMenuItemsProvider;
import burp.api.montoya.ui.contextmenu.MessageEditorHttpRequestResponse;
import javax.swing.*;
import java.awt.*;
import java.util.List;
import static burp.api.montoya.core.ToolType.REPEATER;
import static java.util.Collections.emptyList;
public class Extension implements BurpExtension
{
@Override
public void initialize(MontoyaApi api)
{
api.extension().setName("Add header in Repeater");
api.userInterface().registerContextMenuItemsProvider(new ContextMenuItemsProvider()
{
@Override
public List<Component> provideMenuItems(ContextMenuEvent event)
{
if (event.isFromTool(REPEATER))
{
if (event.messageEditorRequestResponse().isPresent())
{
JMenuItem menuItem = new JMenuItem("Add header");
menuItem.addActionListener(l -> {
MessageEditorHttpRequestResponse messageEditorHttpRequestResponse = event.messageEditorRequestResponse().get();
messageEditorHttpRequestResponse.setRequest(messageEditorHttpRequestResponse.requestResponse().request().withAddedHeader("Foo", "bar"));
});
return List.of(menuItem);
}
}
return emptyList();
}
});
}
}