Path: blob/master/plugins/dbms/firebird/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 kinterbasdb9except:10pass1112import logging1314from lib.core.common import getSafeExString15from lib.core.data import conf16from lib.core.data import logger17from lib.core.exception import SqlmapConnectionException18from lib.core.settings import UNICODE_ENCODING19from plugins.generic.connector import Connector as GenericConnector2021class Connector(GenericConnector):22"""23Homepage: http://kinterbasdb.sourceforge.net/24User guide: http://kinterbasdb.sourceforge.net/dist_docs/usage.html25Debian package: python-kinterbasdb26License: BSD27"""2829# sample usage:30# ./sqlmap.py -d "firebird://sysdba:testpass@/opt/firebird/testdb.fdb"31# ./sqlmap.py -d "firebird://sysdba:[email protected]:3050//opt/firebird/testdb.fdb"32def connect(self):33self.initConnection()3435if not self.hostname:36self.checkFileDb()3738try:39# Reference: http://www.daniweb.com/forums/thread248499.html40self.connector = kinterbasdb.connect(host=self.hostname.encode(UNICODE_ENCODING), database=self.db.encode(UNICODE_ENCODING), user=self.user.encode(UNICODE_ENCODING), password=self.password.encode(UNICODE_ENCODING), charset="UTF8")41except kinterbasdb.OperationalError as ex:42raise SqlmapConnectionException(getSafeExString(ex))4344self.initCursor()45self.printConnected()4647def fetchall(self):48try:49return self.cursor.fetchall()50except kinterbasdb.OperationalError 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 kinterbasdb.OperationalError as ex:58logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) %s" % getSafeExString(ex))59except kinterbasdb.Error as ex:60raise SqlmapConnectionException(getSafeExString(ex))6162self.connector.commit()6364def select(self, query):65self.execute(query)66return self.fetchall()676869