@@ -44,6 +44,46 @@ class Fingerprint(GenericFingerprint):
4444 def __init__ (self ):
4545 GenericFingerprint .__init__ (self )
4646
47+ def __versionCheck (self ):
48+ infoMsg = "executing SAP MaxDB SYSINFO version check"
49+ logger .info (infoMsg )
50+
51+ query = agent .prefixQuery (" /* NoValue */" )
52+ query = agent .postfixQuery (query )
53+ payload = agent .payload (newValue = query )
54+ result = Request .queryPage (payload )
55+
56+ if not result :
57+ warnMsg = "unable to perform SAP MaxDB version check"
58+ logger .warn (warnMsg )
59+
60+ return None
61+
62+ minor , major = None , None
63+
64+ for version in [6 , 7 ]:
65+ query = agent .prefixQuery (" AND (SELECT MAJORVERSION FROM SYSINFO.VERSION)=%d" % version )
66+ query = agent .postfixQuery (query )
67+ payload = agent .payload (newValue = query )
68+ result = Request .queryPage (payload )
69+
70+ if result :
71+ major = version
72+
73+ for version in xrange (0 , 10 ):
74+ query = agent .prefixQuery (" AND (SELECT MINORVERSION FROM SYSINFO.VERSION)=%d" % version )
75+ query = agent .postfixQuery (query )
76+ payload = agent .payload (newValue = query )
77+ result = Request .queryPage (payload )
78+
79+ if result :
80+ minor = version
81+
82+ if major and minor :
83+ return "%s.%s" % (major , minor )
84+ else :
85+ return None
86+
4787 def getFingerprint (self ):
4888 value = ""
4989 wsOsFp = formatFingerprint ("web server" , kb .headersFp )
@@ -64,7 +104,7 @@ def getFingerprint(self):
64104 value += "SAP MaxDB"
65105 return value
66106
67- actVer = formatDBMSfp () + " (%s)" % None
107+ actVer = formatDBMSfp () + " (%s)" % self . __versionCheck ()
68108 blank = " " * 15
69109 value += "active fingerprint: %s" % actVer
70110
0 commit comments