Skip to content

Instantly share code, notes, and snippets.

@nlf
Last active August 31, 2016 21:20
Show Gist options
  • Save nlf/997c19ed140f7e015e4bf1ca13193c26 to your computer and use it in GitHub Desktop.
Save nlf/997c19ed140f7e015e4bf1ca13193c26 to your computer and use it in GitHub Desktop.
from burp import IBurpExtender
from burp import IHttpListener
from burp import IExtensionStateListener
from java.io import PrintWriter
class BurpExtender(IBurpExtender, IHttpListener, IExtensionStateListener):
def registerExtenderCallbacks(self, callbacks):
callbacks.setExtensionName("spider2scanner")
self._callbacks = callbacks
self._helpers = callbacks.getHelpers()
self._stdout = PrintWriter(callbacks.getStdout(), True)
self._urls = []
callbacks.registerHttpListener(self)
return
def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
if self._callbacks.getToolName(toolFlag) == "Spider" and messageIsRequest:
request = self._helpers.analyzeRequest(messageInfo)
url = request.getUrl()
if self._callbacks.isInScope(url):
params = request.getParameters()
raw = messageInfo.getRequest()
for param in params:
if param.getType() <> 0:
continue
blankParam = self._helpers.buildParameter(param.getName(), "", 0)
raw = self._helpers.updateParam(raw, blankParam)
service = messageInfo.getHttpService()
normalized = self._helpers.analyzeRequest(service, raw).getUrl().toString()
if normalized in self._urls:
return
self._urls.append(normalized)
self._callbacks.doActiveScan(service.getHost(), service.getPort(), service.getProtocol() == "https", raw)
return
def extensionUnloaded():
self._urls = []
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment