Skip to content

Commit 8018693

Browse files
committed
Merge branch 'develop'
2 parents ee3b84c + 5c57184 commit 8018693

File tree

3 files changed

+90
-5
lines changed

3 files changed

+90
-5
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ m0nst3r(Song Xinlei) @ CFCA
1515
- @Center-Sun
1616
- @ViCrack
1717

18+
1819
# TODO
1920
- [ ] add tab's in request and response, so we don't have to click our mouse that often (allow specify which method to call for response/request tab)
2021
- [x] to python3, from version `1.3`

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<modelVersion>4.0.0</modelVersion>
33
<groupId>me.m0nst3r</groupId>
44
<artifactId>burpy</artifactId>
5-
<version>3.0-SNAPSHOT</version>
5+
<version>4.0-SNAPSHOT</version>
66
<name>burpy</name>
77
<description>burp plugin to run custom python</description>
88
<properties>

src/main/java/burp/BurpExtender.java

Lines changed: 88 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package burp;
22

33
import burp.ui.MessageDialog;
4-
import net.razorvine.pyro.NameServerProxy;
54
import net.razorvine.pyro.PyroException;
65
import net.razorvine.pyro.PyroProxy;
7-
import net.razorvine.pyro.PyroURI;
86

97
import javax.swing.*;
108
import javax.swing.text.*;
@@ -21,7 +19,7 @@
2119
import java.util.regex.Pattern;
2220

2321

24-
public class BurpExtender implements IBurpExtender, ITab, ActionListener, IContextMenuFactory, MouseListener, IExtensionStateListener, IIntruderPayloadProcessor,IHttpListener {
22+
public class BurpExtender implements IBurpExtender, ITab, ActionListener, IContextMenuFactory, MouseListener, IExtensionStateListener, IIntruderPayloadProcessor,IHttpListener,IMessageEditorTabFactory {
2523

2624
private IBurpExtenderCallbacks callbacks;
2725
private IExtensionHelpers helpers;
@@ -102,6 +100,9 @@ public void registerExtenderCallbacks(IBurpExtenderCallbacks c) {
102100
// register to execute actions on unload
103101
callbacks.registerExtensionStateListener(this);
104102

103+
// register editor tab
104+
callbacks.registerMessageEditorTabFactory(this);
105+
105106
// Initialize stdout and stderr
106107
stdout = new PrintWriter(callbacks.getStdout(), true);
107108
stderr = new PrintWriter(callbacks.getStderr(), true);
@@ -1082,6 +1083,90 @@ public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequ
10821083

10831084
}
10841085

1086+
@Override
1087+
public IMessageEditorTab createNewInstance(IMessageEditorController controller, boolean editable) {
1088+
return new iMessageEditorTab(controller, editable);
1089+
}
1090+
1091+
public class iMessageEditorTab implements IMessageEditorTab {
1092+
1093+
private IMessageEditorController controller;
1094+
private ITextEditor iTextEditor = callbacks.createTextEditor();
1095+
private byte[] currentMessage;
1096+
1097+
1098+
public iMessageEditorTab(IMessageEditorController controller, boolean editable) {
1099+
this.controller = controller;
1100+
}
1101+
1102+
1103+
@Override
1104+
public String getTabCaption() {
1105+
return "BurpyTab";
1106+
}
1107+
1108+
@Override
1109+
public Component getUiComponent() {
1110+
return iTextEditor.getComponent();
1111+
}
1112+
1113+
@Override
1114+
public boolean isEnabled(byte[] content, boolean isRequest) {
1115+
return true;
1116+
}
1117+
1118+
@Override
1119+
public void setMessage(byte[] content, boolean isRequest) {
1120+
1121+
String ret = "";
1122+
try {
1123+
ret = (String) pyroBurpyService.call("invoke_method", "decrypt", helpers.base64Encode(content));
1124+
} catch(Exception e) {
1125+
stderr.println(e.toString());
1126+
StackTraceElement[] exceptionElements = e.getStackTrace();
1127+
for(int i=0; i< exceptionElements.length; i++) {
1128+
stderr.println(exceptionElements[i].toString());
1129+
}
1130+
}
1131+
iTextEditor.setText(ret.getBytes(StandardCharsets.UTF_8));
1132+
1133+
currentMessage = ret.getBytes(StandardCharsets.UTF_8);
1134+
}
1135+
1136+
@Override
1137+
public byte[] getMessage() {
1138+
if (iTextEditor.isTextModified()){
1139+
byte[] data = iTextEditor.getText();
1140+
String ret = "";
1141+
try {
1142+
ret = (String) pyroBurpyService.call("invoke_method", "encrypt", helpers.base64Encode(data));
1143+
} catch(Exception e) {
1144+
stderr.println(e.toString());
1145+
StackTraceElement[] exceptionElements = e.getStackTrace();
1146+
for(int i=0; i< exceptionElements.length; i++) {
1147+
stderr.println(exceptionElements[i].toString());
1148+
}
1149+
}
1150+
1151+
return ret.getBytes(StandardCharsets.UTF_8);
1152+
} else {
1153+
return currentMessage;
1154+
}
1155+
}
1156+
1157+
@Override
1158+
public boolean isModified() {
1159+
return iTextEditor.isTextModified();
1160+
}
1161+
1162+
@Override
1163+
public byte[] getSelectedData() {
1164+
return iTextEditor.getSelectedText();
1165+
}
1166+
}
1167+
1168+
1169+
10851170
public static void main(String[] args) throws PyroException, java.io.IOException {
10861171
// for testing purpose
10871172
System.out.println("Initializing service");
@@ -1106,6 +1191,5 @@ public static void main(String[] args) throws PyroException, java.io.IOException
11061191
}
11071192

11081193
}
1109-
11101194
}
11111195

0 commit comments

Comments
 (0)