|
11 | 11 | import burp.api.montoya.MontoyaApi; |
12 | 12 | import burp.api.montoya.core.Range; |
13 | 13 | import burp.api.montoya.core.ToolType; |
| 14 | +import burp.api.montoya.http.Http; |
14 | 15 | import burp.api.montoya.http.message.HttpRequestResponse; |
15 | 16 | import burp.api.montoya.scanner.Scanner; |
16 | 17 | import burp.api.montoya.ui.Selection; |
17 | 18 | import burp.api.montoya.ui.contextmenu.ContextMenuEvent; |
18 | 19 | import burp.api.montoya.ui.contextmenu.ContextMenuItemsProvider; |
| 20 | +import burp.api.montoya.ui.contextmenu.MessageEditorHttpRequestResponse; |
19 | 21 | import burp.api.montoya.ui.editor.HttpRequestEditor; |
20 | 22 |
|
21 | 23 | import javax.swing.*; |
@@ -44,30 +46,49 @@ public List<Component> provideMenuItems(ContextMenuEvent event) |
44 | 46 | { |
45 | 47 | if (event.isFromTool(ToolType.PROXY, ToolType.REPEATER, ToolType.TARGET, ToolType.LOGGER, ToolType.INTRUDER)) |
46 | 48 | { |
| 49 | + MessageEditorHttpRequestResponse editorHttpRequestResponse = null; |
| 50 | + HttpRequestResponse requestResponse; |
| 51 | + |
| 52 | + boolean editorIsPresent = event.messageEditorRequestResponse().isPresent(); |
| 53 | + |
47 | 54 | List<Component> menuItemList = new ArrayList<>(); |
48 | 55 |
|
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 | + } |
50 | 69 |
|
51 | | - HttpRequestResponse requestResponse = event.messageEditorRequestResponse().isPresent() ? event.messageEditorRequestResponse().get().requestResponse() : event.selectedRequestResponses().get(0); |
| 70 | + // Autodetect JWT |
| 71 | + JMenuItem retrieveRequestItem = new JMenuItem("Autodetect JWT"); |
52 | 72 |
|
53 | 73 | JWTScanCheck scan = new JWTScanCheck(api); |
54 | 74 | JwtInsertionPoint insertionPoint = new JwtInsertionPoint(api,requestResponse.request()); |
55 | 75 | retrieveRequestItem.addActionListener(l -> SwingUtilities.invokeLater(() -> |
56 | | - this.executor.execute(() -> scan.activeAudit(requestResponse,insertionPoint))) |
| 76 | + this.executor.execute(() -> scan.activeAudit(requestResponse,insertionPoint))) |
57 | 77 | ); |
58 | 78 | menuItemList.add(retrieveRequestItem); |
59 | 79 |
|
60 | | - if (event.messageEditorRequestResponse().get().selectionOffsets().isPresent()) { |
| 80 | + // Selected JWT |
| 81 | + if (editorIsPresent && editorHttpRequestResponse.selectionOffsets().isPresent()) { |
61 | 82 | JMenuItem retrieveSelectedRequestItem = new JMenuItem("Selected JWT"); |
62 | 83 | int startindex = event.messageEditorRequestResponse().get().selectionOffsets().get().startIndexInclusive(); |
63 | 84 | int endindex = event.messageEditorRequestResponse().get().selectionOffsets().get().endIndexExclusive(); |
64 | 85 | JWTScanCheck scanSelected = new JWTScanCheck(api); |
65 | 86 | JwtInsertionPoint insertionPointSelected = new JwtInsertionPoint(api,requestResponse.request(),startindex,endindex); |
66 | 87 | retrieveSelectedRequestItem.addActionListener(l -> SwingUtilities.invokeLater(() -> |
67 | | - this.executor.execute(() -> scanSelected.activeAudit(requestResponse,insertionPointSelected))) |
| 88 | + this.executor.execute(() -> scanSelected.activeAudit(requestResponse,insertionPointSelected))) |
68 | 89 | ); |
69 | | - menuItemList.add(retrieveSelectedRequestItem); |
70 | 90 |
|
| 91 | + menuItemList.add(retrieveSelectedRequestItem); |
71 | 92 | } |
72 | 93 |
|
73 | 94 | return menuItemList; |
|
0 commit comments