From b65179483a3d10be487c1da49bde4b7176b86a62 Mon Sep 17 00:00:00 2001 From: c0ny1 <1627639645@qq.com> Date: Tue, 19 Mar 2019 01:14:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=99=E4=BB=A3=E7=A0=81=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=90=88=E9=80=82=E7=9A=84=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=8D=E5=90=88=E7=90=86=E6=96=B9=E6=B3=95=E5=90=8D?= =?UTF-8?q?=EF=BC=8C=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC=E5=8F=B7=E4=B8=BA?= =?UTF-8?q?0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/burp/BurpExtender.java | 2 +- src/main/java/burp/Config.java | 4 +++- src/main/java/burp/ConfigDlg.java | 4 +++- src/main/java/burp/Menu.java | 5 +++-- src/main/java/burp/Transfer.java | 24 +++++++++++++++++++++++- src/main/java/burp/Util.java | 10 ++++++++-- 6 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/main/java/burp/BurpExtender.java b/src/main/java/burp/BurpExtender.java index 0e052bf..9173f54 100644 --- a/src/main/java/burp/BurpExtender.java +++ b/src/main/java/burp/BurpExtender.java @@ -6,7 +6,7 @@ public class BurpExtender implements IBurpExtender,IHttpListener,IProxyListener public static IBurpExtenderCallbacks callbacks; public static IExtensionHelpers helpers; private String extensionName = "Chunked coding converter"; - private String version ="0.1"; + private String version ="0.2"; public static PrintWriter stdout; public static PrintWriter stderr; diff --git a/src/main/java/burp/Config.java b/src/main/java/burp/Config.java index 5ae220a..fb415b5 100644 --- a/src/main/java/burp/Config.java +++ b/src/main/java/burp/Config.java @@ -1,6 +1,8 @@ package burp; - +/** + * 配置对象类,负责对配置项进行设置与获取 + */ public class Config { private static Integer min_chunked_len = 1; private static Integer max_chunked_len = 3; diff --git a/src/main/java/burp/ConfigDlg.java b/src/main/java/burp/ConfigDlg.java index 093111f..c1aac5e 100644 --- a/src/main/java/burp/ConfigDlg.java +++ b/src/main/java/burp/ConfigDlg.java @@ -5,7 +5,9 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; - +/** + * 配置窗口类,负责显示配置窗口,处理窗口消息 + */ public class ConfigDlg extends JDialog { private final JPanel mainPanel = new JPanel(); private final JPanel topPanel = new JPanel(); diff --git a/src/main/java/burp/Menu.java b/src/main/java/burp/Menu.java index 53fb3b9..5048033 100644 --- a/src/main/java/burp/Menu.java +++ b/src/main/java/burp/Menu.java @@ -6,9 +6,10 @@ import java.util.ArrayList; import java.util.List; - +/** + * 菜单类,负责显示菜单,处理菜单事件 + */ public class Menu implements IContextMenuFactory { - public List createMenuItems(final IContextMenuInvocation invocation) { List menus = new ArrayList(); JMenu chunkedMenu = new JMenu("Chunked coding converter"); diff --git a/src/main/java/burp/Transfer.java b/src/main/java/burp/Transfer.java index 646e422..5d81287 100644 --- a/src/main/java/burp/Transfer.java +++ b/src/main/java/burp/Transfer.java @@ -3,7 +3,21 @@ import java.io.UnsupportedEncodingException; import java.util.*; +/** + * 编码解码类,负责对目标请求进行编码解码 + */ public class Transfer { + /** + * 对请求包进行chunked编码 + * @param requestResponse 要处理的请求响应对象 + * @param minChunkedLen 分块最短长度 + * @param maxChunkedLen 分块最长长度 + * @param isComment 是否添加注释 + * @param minCommentLen 注释最短长度 + * @param maxCommentLen 注释最长长度 + * @return 编码后的请求包 + * @throws UnsupportedEncodingException + */ public static byte[] encoding(IHttpRequestResponse requestResponse,int minChunkedLen, int maxChunkedLen, boolean isComment,int minCommentLen,int maxCommentLen) throws UnsupportedEncodingException { byte[] request = requestResponse.getRequest(); IRequestInfo requestInfo = BurpExtender.helpers.analyzeRequest(request); @@ -27,7 +41,7 @@ public static byte[] encoding(IHttpRequestResponse requestResponse,int minChunk headers.add("Transfer-Encoding: chunked"); //encoding - List str_list = Util.getStrList1(body,minChunkedLen,maxChunkedLen); + List str_list = Util.getStrRandomLenList(body,minChunkedLen,maxChunkedLen); String encoding_body = ""; for(String str:str_list){ if(isComment){ @@ -47,6 +61,13 @@ public static byte[] encoding(IHttpRequestResponse requestResponse,int minChunk return BurpExtender.helpers.buildHttpMessage(headers,encoding_body.getBytes()); } + + /** + * 对编码过的请求包进行解码 + * @param requestResponse 已编码过的请求响应对象 + * @return 解码后的请求包 + * @throws UnsupportedEncodingException + */ public static byte[] decoding(IHttpRequestResponse requestResponse) throws UnsupportedEncodingException { byte[] request = requestResponse.getRequest(); IRequestInfo requestInfo = BurpExtender.helpers.analyzeRequest(request); @@ -84,6 +105,7 @@ public static byte[] decoding(IHttpRequestResponse requestResponse) throws Unsup return BurpExtender.helpers.buildHttpMessage(headers,decoding_body.getBytes()); } + /** * 通过数据包头部是否存在Transfer-Encoding头,来判断其是否被编码 * @param requestResponse diff --git a/src/main/java/burp/Util.java b/src/main/java/burp/Util.java index 7d6a1a3..8110f14 100644 --- a/src/main/java/burp/Util.java +++ b/src/main/java/burp/Util.java @@ -38,8 +38,14 @@ public static List getStrList(String inputString, int length, int size) return list; } - - public static List getStrList1(String str, int minLen, int maxLen){ + /** + * 把原始字符串分割成指定范围的随着长度字符串列表 + * @param str 要分割的字符串 + * @param minLen 随机最小长度 + * @param maxLen 随机最大长度 + * @return + */ + public static List getStrRandomLenList(String str, int minLen, int maxLen){ List list_str = new ArrayList(); int sum = 0; while (sum