From caf6220c53a475c0303d4d0938245fe0267b2a61 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Wed, 9 Feb 2011 10:50:38 +0000 Subject: [PATCH] done with implementation for retrieving table names via access system table(s) --- plugins/generic/enumeration.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/plugins/generic/enumeration.py b/plugins/generic/enumeration.py index 298caa41f..c86bb78c6 100644 --- a/plugins/generic/enumeration.py +++ b/plugins/generic/enumeration.py @@ -721,22 +721,29 @@ class Enumeration: return kb.data.cachedDbs - def getTables(self): - bruteForce = False - + def getTables(self, bruteForce=None): self.forceDbmsEnum() - if Backend.getIdentifiedDbms() == DBMS.MYSQL and not kb.data.has_information_schema: - errMsg = "information_schema not available, " - errMsg += "back-end DBMS is MySQL < 5.0" - logger.error(errMsg) - bruteForce = True + if bruteForce is None: + if Backend.getIdentifiedDbms() == DBMS.MYSQL and not kb.data.has_information_schema: + errMsg = "information_schema not available, " + errMsg += "back-end DBMS is MySQL < 5.0" + logger.error(errMsg) + bruteForce = True - elif Backend.getIdentifiedDbms() == DBMS.ACCESS: - errMsg = "cannot retrieve table names, " - errMsg += "back-end DBMS is Access" - logger.error(errMsg) - bruteForce = True + elif Backend.getIdentifiedDbms() == DBMS.ACCESS: + try: + tables = self.getTables(False) + except sqlmapNoneDataException: + tables = None + + if not tables: + errMsg = "cannot retrieve table names, " + errMsg += "back-end DBMS is Access" + logger.error(errMsg) + bruteForce = True + else: + return tables if bruteForce: resumeAvailable = False