diff --git a/src/main/java/com/cys4/sensitivediscoverer/component/LogsTableContextMenu.java b/src/main/java/com/cys4/sensitivediscoverer/component/LogsTableContextMenu.java index f81d6a2..20bba8b 100644 --- a/src/main/java/com/cys4/sensitivediscoverer/component/LogsTableContextMenu.java +++ b/src/main/java/com/cys4/sensitivediscoverer/component/LogsTableContextMenu.java @@ -5,12 +5,17 @@ package com.cys4.sensitivediscoverer.component; import burp.api.montoya.MontoyaApi; +import burp.api.montoya.core.Annotations; +import burp.api.montoya.core.ByteArray; +import burp.api.montoya.http.message.HttpRequestResponse; import burp.api.montoya.http.message.requests.HttpRequest; import burp.api.montoya.http.message.responses.HttpResponse; +import burp.api.montoya.proxy.ProxyHttpRequestResponse; import burp.api.montoya.ui.editor.HttpRequestEditor; import burp.api.montoya.ui.editor.HttpResponseEditor; import com.cys4.sensitivediscoverer.model.LogEntity; import com.cys4.sensitivediscoverer.model.LogsTableModel; +import com.cys4.sensitivediscoverer.model.RegexEntity; import javax.swing.*; import java.awt.*; @@ -31,10 +36,14 @@ public LogsTableContextMenu(LogEntity logEntry, LogsTable logsTable, MontoyaApi burpApi, boolean isAnalysisRunning) { + RegexEntity regexEntity = logEntry.getRegexEntity(); + ProxyHttpRequestResponse requestResponse = logEntry.getRequestResponse(); + Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + JMenuItem sendToRepeater = new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-sendToRepeater")) { @Override public void actionPerformed(ActionEvent e) { - burpApi.repeater().sendToRepeater(logEntry.getRequestResponse().request(), logEntry.getRegexEntity().getDescription()); + burpApi.repeater().sendToRepeater(requestResponse.finalRequest(), regexEntity.getDescription()); } }); this.add(sendToRepeater); @@ -42,29 +51,47 @@ public void actionPerformed(ActionEvent e) { JMenuItem sendToIntruder = new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-sendToIntruder")) { @Override public void actionPerformed(ActionEvent e) { - burpApi.intruder().sendToIntruder(logEntry.getRequestResponse().request()); + burpApi.intruder().sendToIntruder(requestResponse.finalRequest()); } }); this.add(sendToIntruder); + JMenuItem sendToOrganizer = new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-sendToOrganizer")) { + @Override + public void actionPerformed(ActionEvent e) { + burpApi.organizer().sendToOrganizer(HttpRequestResponse.httpRequestResponse( + requestResponse.finalRequest(), + requestResponse.response(), + Annotations.annotations(logEntry.getMatch()))); + } + }); + this.add(sendToOrganizer); + JMenu sendToComparer = new JMenu(getLocaleString("logger-ctxMenu-sendToComparer")); JMenuItem comparerRequest = new JMenuItem(new AbstractAction(getLocaleString("common-request")) { @Override public void actionPerformed(ActionEvent actionEvent) { - burpApi.comparer().sendToComparer(logEntry.getRequestResponse().finalRequest().toByteArray()); + burpApi.comparer().sendToComparer(requestResponse.finalRequest().toByteArray()); } }); - sendToComparer.add(comparerRequest); - JMenuItem comparerResponse = new JMenuItem(new AbstractAction(getLocaleString("common-response")) { @Override public void actionPerformed(ActionEvent actionEvent) { - burpApi.comparer().sendToComparer(logEntry.getRequestResponse().response().toByteArray()); + burpApi.comparer().sendToComparer(requestResponse.response().toByteArray()); } }); + sendToComparer.add(comparerRequest); sendToComparer.add(comparerResponse); this.add(sendToComparer); + JMenuItem sendToDecoder = new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-sendToDecoder")) { + @Override + public void actionPerformed(ActionEvent e) { + burpApi.decoder().sendToDecoder(ByteArray.byteArray(logEntry.getMatch())); + } + }); + this.add(sendToDecoder); + this.add(new JPopupMenu.Separator()); JMenuItem removeItem = new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-removeItem")) { @Override @@ -86,27 +113,24 @@ public void actionPerformed(ActionEvent actionEvent) { this.add(new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-copyURL")) { @Override public void actionPerformed(final ActionEvent e) { - StringSelection selection = new StringSelection(logEntry.getRequestResponse().finalRequest().url()); - Clipboard system = Toolkit.getDefaultToolkit().getSystemClipboard(); - system.setContents(selection, selection); + StringSelection selection = new StringSelection(requestResponse.finalRequest().url()); + systemClipboard.setContents(selection, selection); } })); this.add(new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-copyDescription")) { @Override public void actionPerformed(final ActionEvent e) { - StringSelection selection = new StringSelection(logEntry.getRegexEntity().getDescription()); - Clipboard system = Toolkit.getDefaultToolkit().getSystemClipboard(); - system.setContents(selection, selection); + StringSelection selection = new StringSelection(regexEntity.getDescription()); + systemClipboard.setContents(selection, selection); } })); this.add(new JMenuItem(new AbstractAction(getLocaleString("logger-ctxMenu-copyRegex")) { @Override public void actionPerformed(final ActionEvent e) { - StringSelection selection = new StringSelection(logEntry.getRegexEntity().getRegex()); - Clipboard system = Toolkit.getDefaultToolkit().getSystemClipboard(); - system.setContents(selection, selection); + StringSelection selection = new StringSelection(regexEntity.getRegex()); + systemClipboard.setContents(selection, selection); } })); @@ -114,8 +138,7 @@ public void actionPerformed(final ActionEvent e) { @Override public void actionPerformed(final ActionEvent e) { StringSelection selection = new StringSelection(logEntry.getMatch()); - Clipboard system = Toolkit.getDefaultToolkit().getSystemClipboard(); - system.setContents(selection, selection); + systemClipboard.setContents(selection, selection); } })); } diff --git a/src/main/java/com/cys4/sensitivediscoverer/model/RegexEntity.java b/src/main/java/com/cys4/sensitivediscoverer/model/RegexEntity.java index 6f9e5f7..af40caf 100644 --- a/src/main/java/com/cys4/sensitivediscoverer/model/RegexEntity.java +++ b/src/main/java/com/cys4/sensitivediscoverer/model/RegexEntity.java @@ -118,6 +118,15 @@ public boolean equals(Object o) { return this.getRegex().equals(that.getRegex()); } + @Override + public String toString() { + return "RegexEntity{" + + "regex='" + regex + '\'' + + ", description='" + description + '\'' + + ", sections=" + sections + + '}'; + } + @Override public int hashCode() { return Objects.hash(this.getRegex()); diff --git a/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java b/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java index 60c8239..2a5a999 100644 --- a/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java +++ b/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java @@ -296,10 +296,10 @@ private void onMouseEvent(MouseEvent e) { logsTable.setRowSelectionInterval(row, row); if (logsTable.getSelectedRowCount() == 1) { int realRow = logsTable.convertRowIndexToModel(row); - LogEntity logentry = logEntries.get(realRow); + LogEntity logEntry = logEntries.get(realRow); if (e.getComponent() instanceof LogsTable) { - new LogsTableContextMenu(logentry, logEntries, originalRequestViewer, originalResponseViewer, logsTableModel, logsTable, mainUI.getBurpApi(), isAnalysisRunning) + new LogsTableContextMenu(logEntry, logEntries, originalRequestViewer, originalResponseViewer, logsTableModel, logsTable, mainUI.getBurpApi(), isAnalysisRunning) .show(e.getComponent(), e.getX(), e.getY()); } } diff --git a/src/main/resources/TextUI_en_US.properties b/src/main/resources/TextUI_en_US.properties index 7902ce7..99cf880 100644 --- a/src/main/resources/TextUI_en_US.properties +++ b/src/main/resources/TextUI_en_US.properties @@ -20,7 +20,9 @@ logger-clearLogs-confirm=Delete ALL the logs in the list? logger-exportLogs-label=Export logs... logger-ctxMenu-sendToRepeater=Send to Repeater logger-ctxMenu-sendToIntruder=Send to Intruder +logger-ctxMenu-sendToOrganizer=Send to Organizer logger-ctxMenu-sendToComparer=Send to Comparer +logger-ctxMenu-sendToDecoder=Send to Decoder logger-ctxMenu-removeItem=Remove Item logger-ctxMenu-copyURL=Copy URL logger-ctxMenu-copyDescription=Copy Description diff --git a/src/main/resources/regexes/regex_token.jsonc b/src/main/resources/regexes/regex_token.jsonc index 44ca788..de44182 100644 --- a/src/main/resources/regexes/regex_token.jsonc +++ b/src/main/resources/regexes/regex_token.jsonc @@ -277,13 +277,15 @@ { "active": true, "description": "Square Auth Token", - "regex": "(?