Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/plugins/dbms/access/connector.py
2992 views
1
#!/usr/bin/env python
2
3
"""
4
Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
5
See the file 'LICENSE' for copying permission
6
"""
7
8
try:
9
import pyodbc
10
except:
11
pass
12
13
import logging
14
15
from lib.core.common import getSafeExString
16
from lib.core.data import conf
17
from lib.core.data import logger
18
from lib.core.exception import SqlmapConnectionException
19
from lib.core.exception import SqlmapUnsupportedFeatureException
20
from lib.core.settings import IS_WIN
21
from plugins.generic.connector import Connector as GenericConnector
22
23
class Connector(GenericConnector):
24
"""
25
Homepage: https://github.com/mkleehammer/pyodbc
26
User guide: https://github.com/mkleehammer/pyodbc/wiki
27
Debian package: python-pyodbc
28
License: MIT
29
"""
30
31
def connect(self):
32
if not IS_WIN:
33
errMsg = "currently, direct connection to Microsoft Access database(s) "
34
errMsg += "is restricted to Windows platforms"
35
raise SqlmapUnsupportedFeatureException(errMsg)
36
37
self.initConnection()
38
self.checkFileDb()
39
40
try:
41
self.connector = pyodbc.connect('Driver={Microsoft Access Driver (*.mdb)};Dbq=%s;Uid=Admin;Pwd=;' % self.db)
42
except (pyodbc.Error, pyodbc.OperationalError) as ex:
43
raise SqlmapConnectionException(getSafeExString(ex))
44
45
self.initCursor()
46
self.printConnected()
47
48
def fetchall(self):
49
try:
50
return self.cursor.fetchall()
51
except pyodbc.ProgrammingError as ex:
52
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) %s" % getSafeExString(ex))
53
return None
54
55
def execute(self, query):
56
try:
57
self.cursor.execute(query)
58
except (pyodbc.OperationalError, pyodbc.ProgrammingError) as ex:
59
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) %s" % getSafeExString(ex))
60
except pyodbc.Error as ex:
61
raise SqlmapConnectionException(getSafeExString(ex))
62
63
self.connector.commit()
64
65
def select(self, query):
66
self.execute(query)
67
return self.fetchall()
68
69