public interface IExtensionHelpers
IBurpExtenderCallbacks.getHelpers
to obtain
an instance of this interface.Modifier and Type | Method and Description |
---|---|
byte[] |
addParameter(byte[] request,
IParameter parameter)
This method adds a new parameter to an HTTP request, and if appropriate
updates the Content-Length header.
|
IRequestInfo |
analyzeRequest(byte[] request)
This method can be used to analyze an HTTP request, and obtain various
key details about it.
|
IRequestInfo |
analyzeRequest(IHttpRequestResponse request)
This method can be used to analyze an HTTP request, and obtain various
key details about it.
|
IRequestInfo |
analyzeRequest(IHttpService httpService,
byte[] request)
This method can be used to analyze an HTTP request, and obtain various
key details about it.
|
IResponseInfo |
analyzeResponse(byte[] response)
This method can be used to analyze an HTTP response, and obtain various
key details about it.
|
IResponseKeywords |
analyzeResponseKeywords(java.util.List<java.lang.String> keywords,
byte[]... responses)
This method analyzes one or more responses to identify the number of
occurrences of the specified keywords and returns an
IResponseKeywords object that can be queried to obtain
details of the number of occurrences of each keyword. |
IResponseVariations |
analyzeResponseVariations(byte[]... responses)
This method analyzes one or more responses to identify variations in a
number of attributes and returns an
IResponseVariations
object that can be queried to obtain details of the variations. |
byte[] |
base64Decode(byte[] data)
This method can be used to Base64-decode the specified data.
|
byte[] |
base64Decode(java.lang.String data)
This method can be used to Base64-decode the specified data.
|
java.lang.String |
base64Encode(byte[] data)
This method can be used to Base64-encode the specified data.
|
java.lang.String |
base64Encode(java.lang.String data)
This method can be used to Base64-encode the specified data.
|
IHttpHeader |
buildHeader(java.lang.String name,
java.lang.String value)
This method constructs an
IHttpHeader object based on the
details provided. |
byte[] |
buildHttpMessage(java.util.List<java.lang.String> headers,
byte[] body)
This method builds an HTTP message containing the specified headers and
message body.
|
byte[] |
buildHttpRequest(java.net.URL url)
This method creates a GET request to the specified URL.
|
IHttpService |
buildHttpService(java.lang.String host,
int port,
boolean useHttps)
This method constructs an
IHttpService object based on the
details provided. |
IHttpService |
buildHttpService(java.lang.String host,
int port,
java.lang.String protocol)
This method constructs an
IHttpService object based on the
details provided. |
IParameter |
buildParameter(java.lang.String name,
java.lang.String value,
byte type)
This method constructs an
IParameter object based on the
details provided. |
java.lang.String |
bytesToString(byte[] data)
This method can be used to convert data from an array of bytes into
String form.
|
IParameter |
getRequestParameter(byte[] request,
java.lang.String parameterName)
This method can be used to retrieve details of a specified parameter
within an HTTP request.
|
int |
indexOf(byte[] data,
byte[] pattern,
boolean caseSensitive,
int from,
int to)
This method searches a piece of data for the first occurrence of a
specified pattern.
|
IScannerInsertionPoint |
makeScannerInsertionPoint(java.lang.String insertionPointName,
byte[] baseRequest,
int from,
int to)
This method constructs an
IScannerInsertionPoint object
based on the details provided. |
byte[] |
removeParameter(byte[] request,
IParameter parameter)
This method removes a parameter from an HTTP request, and if appropriate
updates the Content-Length header.
|
byte[] |
stringToBytes(java.lang.String data)
This method can be used to convert data from String form into an array of
bytes.
|
byte[] |
toggleRequestMethod(byte[] request)
This method can be used to toggle a request's method between GET and
POST.
|
byte[] |
updateParameter(byte[] request,
IParameter parameter)
This method updates the value of a parameter within an HTTP request, and
if appropriate updates the Content-Length header.
|
byte[] |
urlDecode(byte[] data)
This method can be used to URL-decode the specified data.
|
java.lang.String |
urlDecode(java.lang.String data)
This method can be used to URL-decode the specified data.
|
byte[] |
urlEncode(byte[] data)
This method can be used to URL-encode the specified data.
|
java.lang.String |
urlEncode(java.lang.String data)
This method can be used to URL-encode the specified data.
|
IRequestInfo analyzeRequest(IHttpRequestResponse request)
request
- An IHttpRequestResponse
object containing the
request to be analyzed.IRequestInfo
object that can be queried to obtain
details about the request.IRequestInfo analyzeRequest(IHttpService httpService, byte[] request)
httpService
- The HTTP service associated with the request. This is
optional and may be null
, in which case the resulting
IRequestInfo
object will not include the full request URL.request
- The request to be analyzed.IRequestInfo
object that can be queried to obtain
details about the request.IRequestInfo analyzeRequest(byte[] request)
IRequestInfo
object will
not include the full request URL. To obtain the full URL, use one of the
other overloaded analyzeRequest()
methods.request
- The request to be analyzed.IRequestInfo
object that can be queried to obtain
details about the request.IResponseInfo analyzeResponse(byte[] response)
response
- The response to be analyzed.IResponseInfo
object that can be queried to
obtain details about the response.IParameter getRequestParameter(byte[] request, java.lang.String parameterName)
analyzeRequest()
to
obtain details of all parameters within the request.request
- The request to be inspected for the specified parameter.parameterName
- The name of the parameter to retrieve.IParameter
object that can be queried to obtain
details about the parameter, or null
if the parameter was
not found.java.lang.String urlDecode(java.lang.String data)
data
- The data to be decoded.java.lang.String urlEncode(java.lang.String data)
data
- The data to be encoded.byte[] urlDecode(byte[] data)
data
- The data to be decoded.byte[] urlEncode(byte[] data)
data
- The data to be encoded.byte[] base64Decode(java.lang.String data)
data
- The data to be decoded.byte[] base64Decode(byte[] data)
data
- The data to be decoded.java.lang.String base64Encode(java.lang.String data)
data
- The data to be encoded.java.lang.String base64Encode(byte[] data)
data
- The data to be encoded.byte[] stringToBytes(java.lang.String data)
bytesToString()
, and byte-based
data that is converted to a String and back again using these two methods
is guaranteed to retain its integrity (which may not be the case with
conversions that reflect a given character set).data
- The data to be converted.java.lang.String bytesToString(byte[] data)
stringToBytes()
, and
byte-based data that is converted to a String and back again using these
two methods is guaranteed to retain its integrity (which may not be the
case with conversions that reflect a given character set).data
- The data to be converted.int indexOf(byte[] data, byte[] pattern, boolean caseSensitive, int from, int to)
String.indexOf()
works on
String-based data.data
- The data to be searched.pattern
- The pattern to be searched for.caseSensitive
- Flags whether or not the search is case-sensitive.from
- The offset within data
where the search should
begin.to
- The offset within data
where the search should
end.byte[] buildHttpMessage(java.util.List<java.lang.String> headers, byte[] body)
headers
- A list of headers to include in the message.body
- The body of the message, of null
if the message
has an empty body.byte[] buildHttpRequest(java.net.URL url)
url
- The URL to which the request should be made.byte[] addParameter(byte[] request, IParameter parameter)
request
- The request to which the parameter should be added.parameter
- An IParameter
object containing details of
the parameter to be added. Supported parameter types are:
PARAM_URL
, PARAM_BODY
and
PARAM_COOKIE
.byte[] removeParameter(byte[] request, IParameter parameter)
request
- The request from which the parameter should be removed.parameter
- An IParameter
object containing details of
the parameter to be removed. Supported parameter types are:
PARAM_URL
, PARAM_BODY
and
PARAM_COOKIE
.byte[] updateParameter(byte[] request, IParameter parameter)
removeParameter()
to remove the
parameter with the old type, and then call addParameter()
to
add a parameter with the new type.request
- The request containing the parameter to be updated.parameter
- An IParameter
object containing details of
the parameter to be updated. Supported parameter types are:
PARAM_URL
, PARAM_BODY
and
PARAM_COOKIE
.byte[] toggleRequestMethod(byte[] request)
request
- The HTTP request whose method should be toggled.IHttpService buildHttpService(java.lang.String host, int port, java.lang.String protocol)
IHttpService
object based on the
details provided.host
- The HTTP service host.port
- The HTTP service port.protocol
- The HTTP service protocol.IHttpService
object based on the details
provided.IHttpService buildHttpService(java.lang.String host, int port, boolean useHttps)
IHttpService
object based on the
details provided.host
- The HTTP service host.port
- The HTTP service port.useHttps
- Flags whether the HTTP service protocol is HTTPS or HTTP.IHttpService
object based on the details
provided.IParameter buildParameter(java.lang.String name, java.lang.String value, byte type)
IParameter
object based on the
details provided.name
- The parameter name.value
- The parameter value.type
- The parameter type, as defined in the IParameter
interface.IParameter
object based on the details provided.IHttpHeader buildHeader(java.lang.String name, java.lang.String value)
IHttpHeader
object based on the
details provided.name
- The header name.value
- The header value.IHttpHeader
object based on the details provided.IScannerInsertionPoint makeScannerInsertionPoint(java.lang.String insertionPointName, byte[] baseRequest, int from, int to)
IScannerInsertionPoint
object
based on the details provided. It can be used to quickly create a simple
insertion point based on a fixed payload location within a base request.insertionPointName
- The name of the insertion point.baseRequest
- The request from which to build scan requests.from
- The offset of the start of the payload location.to
- The offset of the end of the payload location.IScannerInsertionPoint
object based on the
details provided.IResponseVariations analyzeResponseVariations(byte[]... responses)
IResponseVariations
object that can be queried to obtain details of the variations.responses
- The responses to analyze.IResponseVariations
object representing the
variations in the responses.IResponseKeywords analyzeResponseKeywords(java.util.List<java.lang.String> keywords, byte[]... responses)
IResponseKeywords
object that can be queried to obtain
details of the number of occurrences of each keyword.keywords
- The keywords to look for.responses
- The responses to analyze.IResponseKeywords
object representing the counts
of the keywords appearing in the responses.