Path: blob/master/plugins/dbms/sybase/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 _mssql9import pymssql10except:11pass1213import logging1415from lib.core.common import getSafeExString16from lib.core.convert import getText17from lib.core.data import conf18from lib.core.data import logger19from lib.core.exception import SqlmapConnectionException20from plugins.generic.connector import Connector as GenericConnector2122class Connector(GenericConnector):23"""24Homepage: http://pymssql.sourceforge.net/25User guide: http://pymssql.sourceforge.net/examples_pymssql.php26API: http://pymssql.sourceforge.net/ref_pymssql.php27Debian package: python-pymssql28License: LGPL2930Possible connectors: http://wiki.python.org/moin/SQL%20Server3132Important note: pymssql library on your system MUST be version 1.0.233to work, get it from http://sourceforge.net/projects/pymssql/files/pymssql/1.0.2/34"""3536def connect(self):37self.initConnection()3839try:40self.connector = pymssql.connect(host="%s:%d" % (self.hostname, self.port), user=self.user, password=self.password, database=self.db, login_timeout=conf.timeout, timeout=conf.timeout)41except (pymssql.Error, _mssql.MssqlDatabaseException) as ex:42raise SqlmapConnectionException(ex)43except ValueError:44raise SqlmapConnectionException4546self.initCursor()47self.printConnected()4849def fetchall(self):50try:51return self.cursor.fetchall()52except (pymssql.Error, _mssql.MssqlDatabaseException) as ex:53logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex).replace("\n", " "))54return None5556def execute(self, query):57retVal = False5859try:60self.cursor.execute(getText(query))61retVal = True62except (pymssql.OperationalError, pymssql.ProgrammingError) as ex:63logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex).replace("\n", " "))64except pymssql.InternalError as ex:65raise SqlmapConnectionException(getSafeExString(ex))6667return retVal6869def select(self, query):70retVal = None7172if self.execute(query):73retVal = self.fetchall()7475try:76self.connector.commit()77except pymssql.OperationalError:78pass7980return retVal818283