diff --git a/plugins/dbms/sqlite/connector.py b/plugins/dbms/sqlite/connector.py index e33d9226d..f8a3f5978 100644 --- a/plugins/dbms/sqlite/connector.py +++ b/plugins/dbms/sqlite/connector.py @@ -22,14 +22,68 @@ with sqlmap; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ +try: + import sqlite3 +except ImportError, _: + pass + +from lib.core.data import conf +from lib.core.data import logger +from lib.core.exception import sqlmapConnectionException + from plugins.generic.connector import Connector as GenericConnector class Connector(GenericConnector): """ - Homepage: - User guide: - API: + Homepage: http://pysqlite.googlecode.com/ + User guide: http://docs.python.org/release/2.5/lib/module-sqlite3.html + API: http://docs.python.org/library/sqlite3.html + Debian package: python-pysqlite2 + License: zlib/libpng + + Possible connectors: http://wiki.python.org/moin/SQLite """ def __init__(self): GenericConnector.__init__(self) + + def connect(self): + self.initConnection() + + try: + self.connector = sqlite3.connect(database=self.db, timeout=conf.timeout) + except sqlite3.OperationalError, msg: + raise sqlmapConnectionException, msg[1] + + self.setCursor() + self.connected() + + def fetchall(self): + try: + return self.cursor.fetchall() + except sqlite3.OperationalError, msg: + logger.log(8, msg[1]) + return None + + def execute(self, query): + logger.debug(query) + + try: + self.cursor.execute(query) + except sqlite3.OperationalError, msg: + logger.log(8, msg[1]) + except sqlite3.Error, msg: + raise sqlmapConnectionException, msg[1] + + self.connector.commit() + + def select(self, query): + self.execute(query) + return self.fetchall() + + def setCursor(self): + self.cursor = self.connector.cursor() + + def close(self): + self.cursor.close() + self.connector.close()