diff --git a/src/Deprecated/InsertXSSMenu.java b/src/Deprecated/InsertXSSMenu.java index 471ed69..21d4edd 100644 --- a/src/Deprecated/InsertXSSMenu.java +++ b/src/Deprecated/InsertXSSMenu.java @@ -13,7 +13,6 @@ import org.json.JSONException; import org.json.JSONObject; -import U2C.CharSetHelper; import burp.BurpExtender; import burp.Getter; import burp.IBurpExtenderCallbacks; @@ -21,6 +20,7 @@ import burp.IExtensionHelpers; import burp.IHttpRequestResponse; import burp.IParameter; +import messageTab.U2C.CharSetHelper; @Deprecated diff --git a/src/burp/BurpExtender.java b/src/burp/BurpExtender.java index 73ec132..5428cb2 100644 --- a/src/burp/BurpExtender.java +++ b/src/burp/BurpExtender.java @@ -12,7 +12,6 @@ import com.google.gson.Gson; -import U2C.ChineseTabFactory; import config.ConfigManager; import config.ConfigEntry; import config.ConfigTable; @@ -37,6 +36,7 @@ import knife.UpdateCookieMenu; import knife.UpdateCookieWithHistoryMenu; import knife.UpdateHeaderMenu; +import messageTab.U2C.ChineseTabFactory; import config.ProcessManager; import org.apache.commons.lang3.StringUtils; diff --git a/src/knife/CustomPayloadForAllInsertpointMenu.java b/src/knife/CustomPayloadForAllInsertpointMenu.java index 0613460..ce5850f 100644 --- a/src/knife/CustomPayloadForAllInsertpointMenu.java +++ b/src/knife/CustomPayloadForAllInsertpointMenu.java @@ -17,7 +17,6 @@ import org.json.JSONException; import org.json.JSONObject; -import U2C.CharSetHelper; import burp.BurpExtender; import burp.Getter; import burp.IBurpExtenderCallbacks; @@ -27,6 +26,7 @@ import burp.IParameter; import burp.Methods; import config.ConfigEntry; +import messageTab.U2C.CharSetHelper; /** * 将某个payload插入所有的插入点,比如XSS diff --git a/src/knife/OpenWithBrowserMenu.java b/src/knife/OpenWithBrowserMenu.java index a1a279f..0f46d12 100644 --- a/src/knife/OpenWithBrowserMenu.java +++ b/src/knife/OpenWithBrowserMenu.java @@ -8,7 +8,6 @@ import javax.swing.JMenuItem; -import U2C.CharSetHelper; import burp.BurpExtender; import burp.Getter; import burp.IBurpExtenderCallbacks; @@ -16,6 +15,7 @@ import burp.IExtensionHelpers; import burp.IHttpRequestResponse; import burp.Utils; +import messageTab.U2C.CharSetHelper; public class OpenWithBrowserMenu extends JMenuItem { /** diff --git a/src/messageTab/Info/InfoGrepper.java b/src/messageTab/Info/InfoGrepper.java new file mode 100644 index 0000000..2a64c49 --- /dev/null +++ b/src/messageTab/Info/InfoGrepper.java @@ -0,0 +1,25 @@ +package messageTab.Info; + +import burp.BurpExtender; +import burp.HelperPlus; + +public class InfoGrepper { + + public InfoGrepper(byte[] content, boolean isRequest) { + HelperPlus getter = new HelperPlus(BurpExtender.getCallbacks().getHelpers()); + + byte[] body = getter.getBody(isRequest, content); + + if (body!= null) { + String bodyStr = new String(body); + + } + + } + + + public InfoGrepper(String content, boolean isRequest) { + + } + +} diff --git a/src/messageTab/Info/InfoTab.java b/src/messageTab/Info/InfoTab.java new file mode 100644 index 0000000..0aeb3fa --- /dev/null +++ b/src/messageTab/Info/InfoTab.java @@ -0,0 +1,132 @@ +package messageTab.Info; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.UnsupportedEncodingException; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; + +import org.apache.commons.text.StringEscapeUtils; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; + +import burp.Getter; +import burp.IBurpExtenderCallbacks; +import burp.IExtensionHelpers; +import burp.IMessageEditorController; +import burp.IMessageEditorTab; +import burp.IRequestInfo; +import burp.IResponseInfo; +import burp.ITextEditor; + +/** + * @author bit4woo + * @github https://github.com/bit4woo + * @version CreateTime:2022年1月15日 下午11:07:59 + * + * 想要正确显示中文内容,有三个编码设置会影响结果: + * 1、原始编码,通过代码尝试自动获取,但是结果可能不准确,极端情况下需要手动设置。 + * 2、转换后的编码,手动设置。 + * 3、burp设置的显示编码,显示时时用的编码,应该和转换后的编码一致。 + * + * 原始数据是byte[],但也是文本内容的某种编码的byte[]. + * + */ +public class InfoTab implements IMessageEditorTab{ + private JPanel panel; + + private byte[] originContent; + + private static IExtensionHelpers helpers; + + public InfoTab(IMessageEditorController controller, boolean editable, IExtensionHelpers helpers, IBurpExtenderCallbacks callbacks) + { + panel = createpanel(); + InfoTab.helpers = helpers; + } + + + public JPanel createpanel() { + + JPanel contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + contentPane.setLayout(new BorderLayout(0, 0)); + + return contentPane; + } + + @Override + public String getTabCaption() + { + return "Info"; + } + + @Override + public Component getUiComponent() + { + return panel; + } + + @Override + public boolean isEnabled(byte[] content, boolean isRequest) + { + return true; + } + + @Override + public void setMessage(byte[] content, boolean isRequest) + { + originContent = content; + + } + + + /** + * 中文下的编辑还是有问题,暂不支持。 + * 始终返回原始内容。 + */ + @Override + public byte[] getMessage() + { + return originContent; + } + + @Override + public boolean isModified() + { + return false; + } + + @Override + public byte[] getSelectedData() + { + return null;//TODO + } + + public static boolean isJSON(byte[] content,boolean isRequest) { + if (isRequest) { + IRequestInfo requestInfo = helpers.analyzeRequest(content); + return requestInfo.getContentType() == IRequestInfo.CONTENT_TYPE_JSON; + } else { + IResponseInfo responseInfo = helpers.analyzeResponse(content); + return responseInfo.getInferredMimeType().equals("JSON"); + } + } + + + public static void main(String[] args) { + String aaa = "STK_7411642209636022({\"errno\":1003,\"errmsg\":\"\\u7528\\u6237\\u672a\\u767b\\u5f55\",\"errmsg_lang\":{\"zh\":\"\\u7528\\u6237\\u672a\\u767b\\u5f55\",\"en\":\"User is not logged in.\",\"zh-HK\":\"\\u7528\\u6236\\u672a\\u767b\\u9304\"},\"data\":null});"; + System.out.println(StringEscapeUtils.unescapeJava(aaa)); + } +} \ No newline at end of file diff --git a/src/messageTab/Info/InfoTabFactory.java b/src/messageTab/Info/InfoTabFactory.java new file mode 100644 index 0000000..2a15af5 --- /dev/null +++ b/src/messageTab/Info/InfoTabFactory.java @@ -0,0 +1,31 @@ +package messageTab.Info; + +import burp.IBurpExtenderCallbacks; +import burp.IExtensionHelpers; +import burp.IMessageEditorController; +import burp.IMessageEditorTab; +import burp.IMessageEditorTabFactory; + +/** + * 工厂类,构造一个个的Tab实例 + * @author bit4woo + * @github https://github.com/bit4woo + * + */ +public class InfoTabFactory implements IMessageEditorTabFactory +{ + private static IExtensionHelpers helpers; + private static IBurpExtenderCallbacks callbacks; + + + public InfoTabFactory(IMessageEditorController controller, boolean editable, IExtensionHelpers helpers, IBurpExtenderCallbacks callbacks) + { + InfoTabFactory.callbacks = callbacks; + InfoTabFactory.helpers = helpers; + } + + @Override + public IMessageEditorTab createNewInstance(IMessageEditorController controller, boolean editable) { + return new InfoTab(controller,editable,helpers,callbacks); + } +} \ No newline at end of file diff --git a/src/U2C/CharSetHelper.java b/src/messageTab/U2C/CharSetHelper.java similarity index 98% rename from src/U2C/CharSetHelper.java rename to src/messageTab/U2C/CharSetHelper.java index 9141d41..20acc2f 100644 --- a/src/U2C/CharSetHelper.java +++ b/src/messageTab/U2C/CharSetHelper.java @@ -1,4 +1,4 @@ -package U2C; +package messageTab.U2C; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; diff --git a/src/U2C/ChineseTab.java b/src/messageTab/U2C/ChineseTab.java similarity index 99% rename from src/U2C/ChineseTab.java rename to src/messageTab/U2C/ChineseTab.java index 18d861b..87d1a97 100644 --- a/src/U2C/ChineseTab.java +++ b/src/messageTab/U2C/ChineseTab.java @@ -1,4 +1,4 @@ -package U2C; +package messageTab.U2C; import java.awt.BorderLayout; import java.awt.Component; diff --git a/src/U2C/ChineseTabFactory.java b/src/messageTab/U2C/ChineseTabFactory.java similarity index 97% rename from src/U2C/ChineseTabFactory.java rename to src/messageTab/U2C/ChineseTabFactory.java index 791ae3f..d1a5204 100644 --- a/src/U2C/ChineseTabFactory.java +++ b/src/messageTab/U2C/ChineseTabFactory.java @@ -1,4 +1,4 @@ -package U2C; +package messageTab.U2C; import burp.IBurpExtenderCallbacks; import burp.IExtensionHelpers;