Skip to content

Commit 85b8898

Browse files
committed
Update HelperPlus.java
1 parent f0cbe35 commit 85b8898

File tree

1 file changed

+75
-33
lines changed

1 file changed

+75
-33
lines changed

src/main/java/burp/HelperPlus.java

+75-33
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public String getHeadersAsStr(boolean messageIsRequest,IHttpRequestResponse mess
9191
* 获取header的字符串数组,是构造burp中请求需要的格式。
9292
* return headers list
9393
*/
94-
public static List<String> getHeaderList(boolean messageIsRequest,IHttpRequestResponse messageInfo) {
94+
public List<String> getHeaderList(boolean messageIsRequest,IHttpRequestResponse messageInfo) {
9595
if (null == messageInfo) {
9696
return new ArrayList<>();
9797
}
@@ -107,7 +107,7 @@ public static List<String> getHeaderList(boolean messageIsRequest,IHttpRequestRe
107107
/*
108108
* 获取请求包或者响应包中的header List
109109
*/
110-
public static List<String> getHeaderList(boolean IsRequest,byte[] requestOrResponse) {
110+
public List<String> getHeaderList(boolean IsRequest,byte[] requestOrResponse) {
111111
if (null == requestOrResponse) {
112112
return new ArrayList<>();
113113
}
@@ -143,7 +143,7 @@ public static List<String> addOrUpdateHeader(List<String> headers,String headerN
143143
}
144144

145145

146-
public static IHttpRequestResponse addOrUpdateHeader(boolean messageIsRequest,IHttpRequestResponse messageInfo,String headerName,String headerValue){
146+
public IHttpRequestResponse addOrUpdateHeader(boolean messageIsRequest,IHttpRequestResponse messageInfo,String headerName,String headerValue){
147147
List<String> headers = getHeaderList(messageIsRequest,messageInfo);
148148
byte[] body = getBody(messageIsRequest,messageInfo);
149149
headers = addOrUpdateHeader(headers,headerName,headerValue);
@@ -156,7 +156,7 @@ public static IHttpRequestResponse addOrUpdateHeader(boolean messageIsRequest,IH
156156
return messageInfo;
157157
}
158158

159-
public static byte[] addOrUpdateHeader(boolean isRequest,byte[] requestOrResponse,String headerName,String headerValue){
159+
public byte[] addOrUpdateHeader(boolean isRequest,byte[] requestOrResponse,String headerName,String headerValue){
160160
List<String> headers = getHeaderList(isRequest,requestOrResponse);
161161
byte[] body = getBody(isRequest,requestOrResponse);
162162
headers = addOrUpdateHeader(headers,headerName,headerValue);
@@ -176,7 +176,7 @@ public static List<String> removeHeader(List<String> headers,String headerNameOr
176176
return headers;
177177
}
178178

179-
public static IHttpRequestResponse removeHeader(boolean messageIsRequest,IHttpRequestResponse messageInfo,String headerNameOrHeaderLine){
179+
public IHttpRequestResponse removeHeader(boolean messageIsRequest,IHttpRequestResponse messageInfo,String headerNameOrHeaderLine){
180180
List<String> headers = getHeaderList(messageIsRequest,messageInfo);
181181
byte[] body = getBody(messageIsRequest,messageInfo);
182182
headers = removeHeader(headers,headerNameOrHeaderLine);
@@ -192,7 +192,7 @@ public static IHttpRequestResponse removeHeader(boolean messageIsRequest,IHttpRe
192192
/*
193193
* 删除特定的header。
194194
*/
195-
public static byte[] removeHeader(boolean isRequest,byte[] requestOrResponse, String headerNameOrHeaderLine) {
195+
public byte[] removeHeader(boolean isRequest,byte[] requestOrResponse, String headerNameOrHeaderLine) {
196196
List<String> headers = getHeaderList(isRequest,requestOrResponse);
197197
byte[] body = getBody(isRequest,requestOrResponse);
198198
headers = removeHeader(headers,headerNameOrHeaderLine);
@@ -239,7 +239,7 @@ public String getHeaderLine(boolean messageIsRequest,byte[] requestOrResponse, S
239239
/*
240240
* 获取某个header的值,如果没有此header,返回null。
241241
*/
242-
public String getHeaderValueOf(List<String> headers,String headerName) {
242+
public static String getHeaderValueOf(List<String> headers,String headerName) {
243243
if (null ==headers || headerName ==null) return null;
244244
for (String header:headers) {
245245
if (header.contains(":")) {
@@ -304,7 +304,7 @@ public static byte[] getBody(boolean messageIsRequest,IHttpRequestResponse messa
304304
return getBody(messageIsRequest, requestOrResponse);
305305
}
306306

307-
public static IHttpRequestResponse UpdateBody(boolean messageIsRequest,IHttpRequestResponse messageInfo,byte[] body){
307+
public IHttpRequestResponse UpdateBody(boolean messageIsRequest,IHttpRequestResponse messageInfo,byte[] body){
308308
List<String> headers = getHeaderList(messageIsRequest,messageInfo);
309309
byte[] RequestOrResponse = helpers.buildHttpMessage(headers, body);
310310
if (messageIsRequest) {
@@ -315,7 +315,7 @@ public static IHttpRequestResponse UpdateBody(boolean messageIsRequest,IHttpRequ
315315
return messageInfo;
316316
}
317317

318-
public static byte[] UpdateBody(boolean isRequest,byte[] requestOrResponse,byte[] body){
318+
public byte[] UpdateBody(boolean isRequest,byte[] requestOrResponse,byte[] body){
319319
List<String> headers = getHeaderList(isRequest,requestOrResponse);
320320
return helpers.buildHttpMessage(headers, body);
321321
}
@@ -330,7 +330,7 @@ public static byte[] UpdateBody(boolean isRequest,byte[] requestOrResponse,byte[
330330
*
331331
* eg. http://bit4woo.com:80/ 包含默认端口和默认path(/)
332332
*/
333-
public URL getShortURL(IHttpRequestResponse messageInfo){
333+
public static URL getShortURL(IHttpRequestResponse messageInfo){
334334
if (null == messageInfo) return null;
335335
String shortUrlString = messageInfo.getHttpService().toString();//http://www.baidu.com
336336
shortUrlString = formateURLString(shortUrlString);
@@ -385,15 +385,15 @@ public static String formateURLString(String urlString) {
385385
return urlString;
386386
}
387387

388-
public String getHost(IHttpRequestResponse messageInfo) {
388+
public static String getHost(IHttpRequestResponse messageInfo) {
389389
return messageInfo.getHttpService().getHost();
390390
}
391391

392-
public String getProtocol(IHttpRequestResponse messageInfo) {
392+
public static String getProtocol(IHttpRequestResponse messageInfo) {
393393
return messageInfo.getHttpService().getProtocol();
394394
}
395395

396-
public int getPort(IHttpRequestResponse messageInfo) {
396+
public static int getPort(IHttpRequestResponse messageInfo) {
397397
return messageInfo.getHttpService().getPort();
398398
}
399399

@@ -416,6 +416,11 @@ public short getStatusCode(byte[] response) {
416416
return -1;
417417
}
418418
}
419+
420+
421+
422+
423+
419424

420425
public List<IParameter> getParameters(IHttpRequestResponse messageInfo){
421426
IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo);
@@ -427,11 +432,25 @@ public List<IParameter> getParameters(byte[] request){
427432
return analyzeRequest.getParameters();
428433
}
429434

435+
436+
/*
437+
* 使用burp.IExtensionHelpers.getRequestParameter(byte[], String),未考虑同名参数的情况!
438+
*/
439+
public IParameter getParameterByKey(IHttpRequestResponse messageInfo,String key){
440+
return helpers.getRequestParameter(messageInfo.getRequest(), key);
441+
}
442+
443+
public IParameter getParameterByKey(byte[] request,String key){
444+
return helpers.getRequestParameter(request, key);
445+
}
446+
447+
430448
/*
431-
* 根据参数的key查找IParameter对象
432-
* 需要考虑同名参数的情况
449+
* 根据参数的key查找IParameter对象,考虑了同名函数的情况,但这种情况很少,几乎用不上。
450+
* 尽量不要使用这个函数
433451
*/
434-
public static List<IParameter> findParameterByKey(List<IParameter> parameters,String key){
452+
@Deprecated
453+
public static List<IParameter> findParametersByKey(List<IParameter> parameters,String key){
435454
List<IParameter> result = new ArrayList<IParameter>();
436455
for (IParameter para:parameters) {
437456
if (para.getName().equalsIgnoreCase(key)){
@@ -440,22 +459,14 @@ public static List<IParameter> findParameterByKey(List<IParameter> parameters,St
440459
}
441460
return result;
442461
}
443-
/*
444-
* 使用burp.IExtensionHelpers.getRequestParameter(byte[], String)
445-
*/
446-
public IParameter getParameterByKey(IHttpRequestResponse messageInfo,String key){
447-
return helpers.getRequestParameter(messageInfo.getRequest(), key);
448-
}
449-
450-
public IParameter getParameterByKey(byte[] request,String key){
451-
return helpers.getRequestParameter(request, key);
452-
}
453462

454463
/*
455464
* 根据参数的key和type查找IParameter对象
456-
* 需要考虑同名参数的情况
465+
* 考虑了同名函数的情况,但这种情况很少,几乎用不上
466+
* 尽量不要使用这个函数
457467
*/
458-
public static List<IParameter> findParameterByKeyAndType(List<IParameter> parameters,String key,byte type){
468+
@Deprecated
469+
public static List<IParameter> findParametersByKeyAndType(List<IParameter> parameters,String key,byte type){
459470
List<IParameter> result = new ArrayList<IParameter>();
460471
for (IParameter para:parameters) {
461472
if (para.getName().equalsIgnoreCase(key) && para.getType() == type){
@@ -464,20 +475,51 @@ public static List<IParameter> findParameterByKeyAndType(List<IParameter> parame
464475
}
465476
return result;
466477
}
467-
468-
public List<IParameter> getParameterByKeyAndType(IHttpRequestResponse messageInfo,String key,byte type){
478+
479+
/*
480+
* 考虑了同名函数的情况,但这种情况很少,几乎用不上
481+
* 尽量不要使用这个函数
482+
*/
483+
@Deprecated
484+
public List<IParameter> getParametersByKeyAndType(IHttpRequestResponse messageInfo,String key,byte type){
469485
IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo);
470486
List<IParameter> paras = analyzeRequest.getParameters();
471-
return findParameterByKeyAndType(paras,key,type);
487+
return findParametersByKeyAndType(paras,key,type);
472488
}
473489

474-
public List<IParameter> getParameterByKeyAndType(byte[] request,String key,byte type){
490+
/*
491+
* 考虑了同名函数的情况,但这种情况很少,几乎用不上
492+
* 尽量不要使用这个函数
493+
*/
494+
@Deprecated
495+
public List<IParameter> getParametersByKeyAndType(byte[] request,String key,byte type){
475496
IRequestInfo analyzeRequest = helpers.analyzeRequest(request);
476-
return findParameterByKeyAndType(analyzeRequest.getParameters(),key,type);
497+
return findParametersByKeyAndType(analyzeRequest.getParameters(),key,type);
477498
}
478499

479500

501+
public IHttpRequestResponse addOrUpdateParameter(IHttpRequestResponse messageInfo,IParameter para){
502+
byte[] request = messageInfo.getRequest();
503+
request = addOrUpdateParameter(request, para);
504+
messageInfo.setRequest(request);
505+
return messageInfo;
506+
}
480507

508+
public byte[] addOrUpdateParameter(byte[] request,IParameter para){
509+
IParameter existPara = helpers.getRequestParameter(request, para.getName());
510+
if (null != existPara) {
511+
request = helpers.removeParameter(request, existPara);
512+
}
513+
request = helpers.addParameter(request, para);
514+
return request;
515+
}
516+
517+
public IHttpRequestResponse removeParameter(IHttpRequestResponse messageInfo, IParameter parameter) {
518+
byte[] request = messageInfo.getRequest();
519+
request = helpers.removeParameter(request, parameter);
520+
messageInfo.setRequest(request);
521+
return messageInfo;
522+
}
481523

482524

483525
public String getMethod(IHttpRequestResponse messageInfo){

0 commit comments

Comments
 (0)