MCPcopy Index your code
hub / github.com/sqlmapproject/sqlmap / _parseBurpLog

Function _parseBurpLog

lib/core/common.py:5317–5465  ·  view source on GitHub ↗

Parses Burp logs

(content)

Source from the content-addressed store, hash-verified

5315 yield (url, method, None, cookie, tuple())
5316
5317 def _parseBurpLog(content):
5318 """
5319 Parses Burp logs
5320 """
5321
5322 if not re.search(BURP_REQUEST_REGEX, content, re.I | re.S):
5323 if re.search(BURP_XML_HISTORY_REGEX, content, re.I | re.S):
5324 reqResList = []
5325 for match in re.finditer(BURP_XML_HISTORY_REGEX, content, re.I | re.S):
5326 port, request = match.groups()
5327 try:
5328 request = decodeBase64(request, binary=False)
5329 except (binascii.Error, TypeError):
5330 continue
5331 _ = re.search(r"%s:.+" % re.escape(HTTP_HEADER.HOST), request)
5332 if _:
5333 host = _.group(0).strip()
5334 if not re.search(r":\d+\Z", host) and int(port) != 80:
5335 request = request.replace(host, "%s:%d" % (host, int(port)))
5336 reqResList.append(request)
5337 else:
5338 reqResList = [content]
5339 else:
5340 reqResList = re.finditer(BURP_REQUEST_REGEX, content, re.I | re.S)
5341
5342 for match in reqResList:
5343 request = match if isinstance(match, six.string_types) else match.group(1)
5344 request = re.sub(r"\A[^\w]+", "", request)
5345 schemePort = re.search(r"(http[\w]*)\:\/\/.*?\:([\d]+).+?={10,}", request, re.I | re.S)
5346
5347 if schemePort:
5348 scheme = schemePort.group(1)
5349 port = schemePort.group(2)
5350 request = re.sub(r"\n=+\Z", "", request.split(schemePort.group(0))[-1].lstrip())
5351 else:
5352 scheme, port = None, None
5353
5354 if "HTTP/" not in request:
5355 continue
5356
5357 if re.search(r"^[\n]*%s[^?]*?\.(%s)\sHTTP\/" % (HTTPMETHOD.GET, "|".join(CRAWL_EXCLUDE_EXTENSIONS)), request, re.I | re.M):
5358 if not re.search(r"^[\n]*%s[^\n]*\*[^\n]*\sHTTP\/" % HTTPMETHOD.GET, request, re.I | re.M):
5359 continue
5360
5361 getPostReq = False
5362 forceBody = False
5363 url = None
5364 host = None
5365 method = None
5366 data = None
5367 cookie = None
5368 params = False
5369 newline = None
5370 lines = request.split('\n')
5371 headers = []
5372
5373 for index in xrange(len(lines)):
5374 line = lines[index]

Callers 1

parseRequestFileFunction · 0.85

Calls 9

decodeBase64Function · 0.90
getUnicodeFunction · 0.90
xrangeClass · 0.85
extractRegexResultFunction · 0.85
searchMethod · 0.45
escapeMethod · 0.45
replaceMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…