Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/plugins/dbms/sqlite/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 sqlite3
10
except:
11
pass
12
13
import logging
14
15
from lib.core.common import getSafeExString
16
from lib.core.convert import getText
17
from lib.core.data import conf
18
from lib.core.data import logger
19
from lib.core.exception import SqlmapConnectionException
20
from lib.core.exception import SqlmapMissingDependence
21
from plugins.generic.connector import Connector as GenericConnector
22
23
class Connector(GenericConnector):
24
"""
25
Homepage: http://pysqlite.googlecode.com/ and http://packages.ubuntu.com/quantal/python-sqlite
26
User guide: http://docs.python.org/release/2.5/lib/module-sqlite3.html
27
API: http://docs.python.org/library/sqlite3.html
28
Debian package: python-sqlite (SQLite 2), python-pysqlite3 (SQLite 3)
29
License: MIT
30
31
Possible connectors: http://wiki.python.org/moin/SQLite
32
"""
33
34
def __init__(self):
35
GenericConnector.__init__(self)
36
self.__sqlite = sqlite3
37
38
def connect(self):
39
self.initConnection()
40
self.checkFileDb()
41
42
try:
43
self.connector = self.__sqlite.connect(database=self.db, check_same_thread=False, timeout=conf.timeout)
44
45
cursor = self.connector.cursor()
46
cursor.execute("SELECT * FROM sqlite_master")
47
cursor.close()
48
49
except (self.__sqlite.DatabaseError, self.__sqlite.OperationalError):
50
warnMsg = "unable to connect using SQLite 3 library, trying with SQLite 2"
51
logger.warning(warnMsg)
52
53
try:
54
try:
55
import sqlite
56
except ImportError:
57
errMsg = "sqlmap requires 'python-sqlite' third-party library "
58
errMsg += "in order to directly connect to the database '%s'" % self.db
59
raise SqlmapMissingDependence(errMsg)
60
61
self.__sqlite = sqlite
62
self.connector = self.__sqlite.connect(database=self.db, check_same_thread=False, timeout=conf.timeout)
63
except (self.__sqlite.DatabaseError, self.__sqlite.OperationalError) as ex:
64
raise SqlmapConnectionException(getSafeExString(ex))
65
66
self.initCursor()
67
self.printConnected()
68
69
def fetchall(self):
70
try:
71
return self.cursor.fetchall()
72
except self.__sqlite.OperationalError as ex:
73
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex))
74
return None
75
76
def execute(self, query):
77
try:
78
self.cursor.execute(getText(query))
79
except self.__sqlite.OperationalError as ex:
80
logger.log(logging.WARN if conf.dbmsHandler else logging.DEBUG, "(remote) '%s'" % getSafeExString(ex))
81
except self.__sqlite.DatabaseError as ex:
82
raise SqlmapConnectionException(getSafeExString(ex))
83
84
self.connector.commit()
85
86
def select(self, query):
87
self.execute(query)
88
return self.fetchall()
89
90