Skip to content

Commit 1527b2b

Browse files
Bugfix ContextMenu
1 parent df0832b commit 1527b2b

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

src/main/java/BurpExtension/ContextMenu.java

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
import burp.api.montoya.MontoyaApi;
1212
import burp.api.montoya.core.Range;
1313
import burp.api.montoya.core.ToolType;
14+
import burp.api.montoya.http.Http;
1415
import burp.api.montoya.http.message.HttpRequestResponse;
1516
import burp.api.montoya.scanner.Scanner;
1617
import burp.api.montoya.ui.Selection;
1718
import burp.api.montoya.ui.contextmenu.ContextMenuEvent;
1819
import burp.api.montoya.ui.contextmenu.ContextMenuItemsProvider;
20+
import burp.api.montoya.ui.contextmenu.MessageEditorHttpRequestResponse;
1921
import burp.api.montoya.ui.editor.HttpRequestEditor;
2022

2123
import javax.swing.*;
@@ -44,30 +46,49 @@ public List<Component> provideMenuItems(ContextMenuEvent event)
4446
{
4547
if (event.isFromTool(ToolType.PROXY, ToolType.REPEATER, ToolType.TARGET, ToolType.LOGGER, ToolType.INTRUDER))
4648
{
49+
MessageEditorHttpRequestResponse editorHttpRequestResponse = null;
50+
HttpRequestResponse requestResponse;
51+
52+
boolean editorIsPresent = event.messageEditorRequestResponse().isPresent();
53+
4754
List<Component> menuItemList = new ArrayList<>();
4855

49-
JMenuItem retrieveRequestItem = new JMenuItem("Autodetect JWT");
56+
if (editorIsPresent) {
57+
editorHttpRequestResponse = event.messageEditorRequestResponse().get();
58+
requestResponse = editorHttpRequestResponse.requestResponse();
59+
} else {
60+
List<HttpRequestResponse> selectedRequests = event.selectedRequestResponses();
61+
62+
// only 1 request is support at this time
63+
if (selectedRequests.size() == 1) {
64+
requestResponse = selectedRequests.get(0);
65+
} else {
66+
return null;
67+
}
68+
}
5069

51-
HttpRequestResponse requestResponse = event.messageEditorRequestResponse().isPresent() ? event.messageEditorRequestResponse().get().requestResponse() : event.selectedRequestResponses().get(0);
70+
// Autodetect JWT
71+
JMenuItem retrieveRequestItem = new JMenuItem("Autodetect JWT");
5272

5373
JWTScanCheck scan = new JWTScanCheck(api);
5474
JwtInsertionPoint insertionPoint = new JwtInsertionPoint(api,requestResponse.request());
5575
retrieveRequestItem.addActionListener(l -> SwingUtilities.invokeLater(() ->
56-
this.executor.execute(() -> scan.activeAudit(requestResponse,insertionPoint)))
76+
this.executor.execute(() -> scan.activeAudit(requestResponse,insertionPoint)))
5777
);
5878
menuItemList.add(retrieveRequestItem);
5979

60-
if (event.messageEditorRequestResponse().get().selectionOffsets().isPresent()) {
80+
// Selected JWT
81+
if (editorIsPresent && editorHttpRequestResponse.selectionOffsets().isPresent()) {
6182
JMenuItem retrieveSelectedRequestItem = new JMenuItem("Selected JWT");
6283
int startindex = event.messageEditorRequestResponse().get().selectionOffsets().get().startIndexInclusive();
6384
int endindex = event.messageEditorRequestResponse().get().selectionOffsets().get().endIndexExclusive();
6485
JWTScanCheck scanSelected = new JWTScanCheck(api);
6586
JwtInsertionPoint insertionPointSelected = new JwtInsertionPoint(api,requestResponse.request(),startindex,endindex);
6687
retrieveSelectedRequestItem.addActionListener(l -> SwingUtilities.invokeLater(() ->
67-
this.executor.execute(() -> scanSelected.activeAudit(requestResponse,insertionPointSelected)))
88+
this.executor.execute(() -> scanSelected.activeAudit(requestResponse,insertionPointSelected)))
6889
);
69-
menuItemList.add(retrieveSelectedRequestItem);
7090

91+
menuItemList.add(retrieveSelectedRequestItem);
7192
}
7293

7394
return menuItemList;

0 commit comments

Comments
 (0)