@@ -91,7 +91,7 @@ public String getHeadersAsStr(boolean messageIsRequest,IHttpRequestResponse mess
91
91
* 获取header的字符串数组,是构造burp中请求需要的格式。
92
92
* return headers list
93
93
*/
94
- public static List <String > getHeaderList (boolean messageIsRequest ,IHttpRequestResponse messageInfo ) {
94
+ public List <String > getHeaderList (boolean messageIsRequest ,IHttpRequestResponse messageInfo ) {
95
95
if (null == messageInfo ) {
96
96
return new ArrayList <>();
97
97
}
@@ -107,7 +107,7 @@ public static List<String> getHeaderList(boolean messageIsRequest,IHttpRequestRe
107
107
/*
108
108
* 获取请求包或者响应包中的header List
109
109
*/
110
- public static List <String > getHeaderList (boolean IsRequest ,byte [] requestOrResponse ) {
110
+ public List <String > getHeaderList (boolean IsRequest ,byte [] requestOrResponse ) {
111
111
if (null == requestOrResponse ) {
112
112
return new ArrayList <>();
113
113
}
@@ -143,7 +143,7 @@ public static List<String> addOrUpdateHeader(List<String> headers,String headerN
143
143
}
144
144
145
145
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 ){
147
147
List <String > headers = getHeaderList (messageIsRequest ,messageInfo );
148
148
byte [] body = getBody (messageIsRequest ,messageInfo );
149
149
headers = addOrUpdateHeader (headers ,headerName ,headerValue );
@@ -156,7 +156,7 @@ public static IHttpRequestResponse addOrUpdateHeader(boolean messageIsRequest,IH
156
156
return messageInfo ;
157
157
}
158
158
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 ){
160
160
List <String > headers = getHeaderList (isRequest ,requestOrResponse );
161
161
byte [] body = getBody (isRequest ,requestOrResponse );
162
162
headers = addOrUpdateHeader (headers ,headerName ,headerValue );
@@ -176,7 +176,7 @@ public static List<String> removeHeader(List<String> headers,String headerNameOr
176
176
return headers ;
177
177
}
178
178
179
- public static IHttpRequestResponse removeHeader (boolean messageIsRequest ,IHttpRequestResponse messageInfo ,String headerNameOrHeaderLine ){
179
+ public IHttpRequestResponse removeHeader (boolean messageIsRequest ,IHttpRequestResponse messageInfo ,String headerNameOrHeaderLine ){
180
180
List <String > headers = getHeaderList (messageIsRequest ,messageInfo );
181
181
byte [] body = getBody (messageIsRequest ,messageInfo );
182
182
headers = removeHeader (headers ,headerNameOrHeaderLine );
@@ -192,7 +192,7 @@ public static IHttpRequestResponse removeHeader(boolean messageIsRequest,IHttpRe
192
192
/*
193
193
* 删除特定的header。
194
194
*/
195
- public static byte [] removeHeader (boolean isRequest ,byte [] requestOrResponse , String headerNameOrHeaderLine ) {
195
+ public byte [] removeHeader (boolean isRequest ,byte [] requestOrResponse , String headerNameOrHeaderLine ) {
196
196
List <String > headers = getHeaderList (isRequest ,requestOrResponse );
197
197
byte [] body = getBody (isRequest ,requestOrResponse );
198
198
headers = removeHeader (headers ,headerNameOrHeaderLine );
@@ -239,7 +239,7 @@ public String getHeaderLine(boolean messageIsRequest,byte[] requestOrResponse, S
239
239
/*
240
240
* 获取某个header的值,如果没有此header,返回null。
241
241
*/
242
- public String getHeaderValueOf (List <String > headers ,String headerName ) {
242
+ public static String getHeaderValueOf (List <String > headers ,String headerName ) {
243
243
if (null ==headers || headerName ==null ) return null ;
244
244
for (String header :headers ) {
245
245
if (header .contains (":" )) {
@@ -304,7 +304,7 @@ public static byte[] getBody(boolean messageIsRequest,IHttpRequestResponse messa
304
304
return getBody (messageIsRequest , requestOrResponse );
305
305
}
306
306
307
- public static IHttpRequestResponse UpdateBody (boolean messageIsRequest ,IHttpRequestResponse messageInfo ,byte [] body ){
307
+ public IHttpRequestResponse UpdateBody (boolean messageIsRequest ,IHttpRequestResponse messageInfo ,byte [] body ){
308
308
List <String > headers = getHeaderList (messageIsRequest ,messageInfo );
309
309
byte [] RequestOrResponse = helpers .buildHttpMessage (headers , body );
310
310
if (messageIsRequest ) {
@@ -315,7 +315,7 @@ public static IHttpRequestResponse UpdateBody(boolean messageIsRequest,IHttpRequ
315
315
return messageInfo ;
316
316
}
317
317
318
- public static byte [] UpdateBody (boolean isRequest ,byte [] requestOrResponse ,byte [] body ){
318
+ public byte [] UpdateBody (boolean isRequest ,byte [] requestOrResponse ,byte [] body ){
319
319
List <String > headers = getHeaderList (isRequest ,requestOrResponse );
320
320
return helpers .buildHttpMessage (headers , body );
321
321
}
@@ -330,7 +330,7 @@ public static byte[] UpdateBody(boolean isRequest,byte[] requestOrResponse,byte[
330
330
*
331
331
* eg. http://bit4woo.com:80/ 包含默认端口和默认path(/)
332
332
*/
333
- public URL getShortURL (IHttpRequestResponse messageInfo ){
333
+ public static URL getShortURL (IHttpRequestResponse messageInfo ){
334
334
if (null == messageInfo ) return null ;
335
335
String shortUrlString = messageInfo .getHttpService ().toString ();//http://www.baidu.com
336
336
shortUrlString = formateURLString (shortUrlString );
@@ -385,15 +385,15 @@ public static String formateURLString(String urlString) {
385
385
return urlString ;
386
386
}
387
387
388
- public String getHost (IHttpRequestResponse messageInfo ) {
388
+ public static String getHost (IHttpRequestResponse messageInfo ) {
389
389
return messageInfo .getHttpService ().getHost ();
390
390
}
391
391
392
- public String getProtocol (IHttpRequestResponse messageInfo ) {
392
+ public static String getProtocol (IHttpRequestResponse messageInfo ) {
393
393
return messageInfo .getHttpService ().getProtocol ();
394
394
}
395
395
396
- public int getPort (IHttpRequestResponse messageInfo ) {
396
+ public static int getPort (IHttpRequestResponse messageInfo ) {
397
397
return messageInfo .getHttpService ().getPort ();
398
398
}
399
399
@@ -416,6 +416,11 @@ public short getStatusCode(byte[] response) {
416
416
return -1 ;
417
417
}
418
418
}
419
+
420
+
421
+
422
+
423
+
419
424
420
425
public List <IParameter > getParameters (IHttpRequestResponse messageInfo ){
421
426
IRequestInfo analyzeRequest = helpers .analyzeRequest (messageInfo );
@@ -427,11 +432,25 @@ public List<IParameter> getParameters(byte[] request){
427
432
return analyzeRequest .getParameters ();
428
433
}
429
434
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
+
430
448
/*
431
- * 根据参数的key查找IParameter对象
432
- * 需要考虑同名参数的情况
449
+ * 根据参数的key查找IParameter对象,考虑了同名函数的情况,但这种情况很少,几乎用不上。
450
+ * 尽量不要使用这个函数
433
451
*/
434
- public static List <IParameter > findParameterByKey (List <IParameter > parameters ,String key ){
452
+ @ Deprecated
453
+ public static List <IParameter > findParametersByKey (List <IParameter > parameters ,String key ){
435
454
List <IParameter > result = new ArrayList <IParameter >();
436
455
for (IParameter para :parameters ) {
437
456
if (para .getName ().equalsIgnoreCase (key )){
@@ -440,22 +459,14 @@ public static List<IParameter> findParameterByKey(List<IParameter> parameters,St
440
459
}
441
460
return result ;
442
461
}
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
- }
453
462
454
463
/*
455
464
* 根据参数的key和type查找IParameter对象
456
- * 需要考虑同名参数的情况
465
+ * 考虑了同名函数的情况,但这种情况很少,几乎用不上
466
+ * 尽量不要使用这个函数
457
467
*/
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 ){
459
470
List <IParameter > result = new ArrayList <IParameter >();
460
471
for (IParameter para :parameters ) {
461
472
if (para .getName ().equalsIgnoreCase (key ) && para .getType () == type ){
@@ -464,20 +475,51 @@ public static List<IParameter> findParameterByKeyAndType(List<IParameter> parame
464
475
}
465
476
return result ;
466
477
}
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 ){
469
485
IRequestInfo analyzeRequest = helpers .analyzeRequest (messageInfo );
470
486
List <IParameter > paras = analyzeRequest .getParameters ();
471
- return findParameterByKeyAndType (paras ,key ,type );
487
+ return findParametersByKeyAndType (paras ,key ,type );
472
488
}
473
489
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 ){
475
496
IRequestInfo analyzeRequest = helpers .analyzeRequest (request );
476
- return findParameterByKeyAndType (analyzeRequest .getParameters (),key ,type );
497
+ return findParametersByKeyAndType (analyzeRequest .getParameters (),key ,type );
477
498
}
478
499
479
500
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
+ }
480
507
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
+ }
481
523
482
524
483
525
public String getMethod (IHttpRequestResponse messageInfo ){
0 commit comments