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

Class MSSQLBannerHandler

lib/parse/banner.py:20–84  ·  view source on GitHub ↗

This class defines methods to parse and extract information from the given Microsoft SQL Server banner based upon the data in XML file

Source from the content-addressed store, hash-verified

18from lib.parse.handler import FingerprintHandler
19
20class MSSQLBannerHandler(ContentHandler):
21 """
22 This class defines methods to parse and extract information from the
23 given Microsoft SQL Server banner based upon the data in XML file
24 """
25
26 def __init__(self, banner, info):
27 ContentHandler.__init__(self)
28
29 self._banner = sanitizeStr(banner or "")
30 self._inVersion = False
31 self._inServicePack = False
32 self._release = None
33 self._version = ""
34 self._versionAlt = None
35 self._servicePack = ""
36 self._info = info
37
38 def _feedInfo(self, key, value):
39 value = sanitizeStr(value)
40
41 if value in (None, "None"):
42 return
43
44 self._info[key] = value
45
46 def startElement(self, name, attrs):
47 if name == "signatures":
48 self._release = sanitizeStr(attrs.get("release"))
49
50 elif name == "version":
51 self._inVersion = True
52
53 elif name == "servicepack":
54 self._inServicePack = True
55
56 def characters(self, content):
57 if self._inVersion:
58 self._version += sanitizeStr(content)
59 elif self._inServicePack:
60 self._servicePack += sanitizeStr(content)
61
62 def endElement(self, name):
63 if name == "signature":
64 for version in (self._version, self._versionAlt):
65 if version and self._banner and re.search(r" %s[\.\ ]+" % re.escape(version), self._banner):
66 self._feedInfo("dbmsRelease", self._release)
67 self._feedInfo("dbmsVersion", self._version)
68 self._feedInfo("dbmsServicePack", self._servicePack)
69 break
70
71 self._version = ""
72 self._versionAlt = None
73 self._servicePack = ""
74
75 elif name == "version":
76 self._inVersion = False
77 self._version = self._version.replace(" ", "")

Callers 1

bannerParserFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…