Path: blob/master/plugins/dbms/access/connector.py
2992 views
#!/usr/bin/env python12"""3Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)4See the file 'LICENSE' for copying permission5"""67try:8import pyodbc9except:10pass1112import logging1314from lib.core.common import getSafeExString15from lib.core.data import conf16from lib.core.data import logger17from lib.core.exception import SqlmapConnectionException18from lib.core.exception import SqlmapUnsupportedFeatureException19from lib.core.settings import IS_WIN20from plugins.generic.connector import Connector as GenericConnector2122class Connector(GenericConnector):23"""24Homepage: https://github.com/mkleehammer/pyodbc25User guide: https://github.com/mkleehammer/pyodbc/wiki26Debian package: python-pyodbc27License: MIT28"""2930def connect(self):31if not IS_WIN:32errMsg = "currently, direct connection to Microsoft Access database(s) "33errMsg += "is restricted to Windows platforms"34raise SqlmapUnsupportedFeatureException(errMsg)3536self.initConnection()37self.checkFileDb()3839try:40self.connector = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb)};Dbq=%s;Uid=Admin;Pwd=;' % self.db)41except (pyodbc.Error, pyodbc.OperationalError) as ex:42raise SqlmapConnectionException(getSafeExString(ex))4344self.initCursor()45self.printConnected()4647def fetchall(self):48try:49return self.cursor.fetchall()50except pyodbc.ProgrammingError as ex:51logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) %s" % getSafeExString(ex))52return None5354def execute(self, query):55try:56self.cursor.execute(query)57except (pyodbc.OperationalError, pyodbc.ProgrammingError) as ex:58logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) %s" % getSafeExString(ex))59except pyodbc.Error as ex:60raise SqlmapConnectionException(getSafeExString(ex))6162self.connector.commit()6364def select(self, query):65self.execute(query)66return self.fetchall()676869