Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/plugins/generic/fingerprint.py
2989 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
from lib.core.common import Backend
9
from lib.core.common import readInput
10
from lib.core.data import logger
11
from lib.core.enums import OS
12
from lib.core.exception import SqlmapUndefinedMethod
13
14
class Fingerprint(object):
15
"""
16
This class defines generic fingerprint functionalities for plugins.
17
"""
18
19
def __init__(self, dbms):
20
Backend.forceDbms(dbms)
21
22
def getFingerprint(self):
23
errMsg = "'getFingerprint' method must be defined "
24
errMsg += "into the specific DBMS plugin"
25
raise SqlmapUndefinedMethod(errMsg)
26
27
def checkDbms(self):
28
errMsg = "'checkDbms' method must be defined "
29
errMsg += "into the specific DBMS plugin"
30
raise SqlmapUndefinedMethod(errMsg)
31
32
def checkDbmsOs(self, detailed=False):
33
errMsg = "'checkDbmsOs' method must be defined "
34
errMsg += "into the specific DBMS plugin"
35
raise SqlmapUndefinedMethod(errMsg)
36
37
def forceDbmsEnum(self):
38
pass
39
40
def userChooseDbmsOs(self):
41
warnMsg = "for some reason sqlmap was unable to fingerprint "
42
warnMsg += "the back-end DBMS operating system"
43
logger.warning(warnMsg)
44
45
msg = "do you want to provide the OS? [(W)indows/(l)inux]"
46
47
while True:
48
os = readInput(msg, default='W').upper()
49
50
if os == 'W':
51
Backend.setOs(OS.WINDOWS)
52
break
53
elif os == 'L':
54
Backend.setOs(OS.LINUX)
55
break
56
else:
57
warnMsg = "invalid value"
58
logger.warning(warnMsg)
59
60