From 168aeadf76235756b3f9b14db43072d11b934924 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Tue, 3 Jul 2012 00:50:23 +0200 Subject: [PATCH] Adding switch --output-dir (Issue #53) --- lib/core/dump.py | 7 ++++++- lib/core/option.py | 3 +++ lib/core/optiondict.py | 1 + lib/core/revision.py | 4 ++++ lib/parse/cmdline.py | 4 ++++ sqlmap.conf | 3 +++ 6 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/core/dump.py b/lib/core/dump.py index e2ceab97d..9c569adf4 100644 --- a/lib/core/dump.py +++ b/lib/core/dump.py @@ -25,6 +25,7 @@ from lib.core.data import conf from lib.core.data import kb from lib.core.data import logger from lib.core.enums import DBMS +from lib.core.exception import sqlmapGenericException from lib.core.exception import sqlmapValueException from lib.core.replication import Replication from lib.core.settings import BLANK @@ -61,7 +62,11 @@ class Dump: def setOutputFile(self): self._outputFile = "%s%slog" % (conf.outputPath, os.sep) - self._outputFP = codecs.open(self._outputFile, "ab", UNICODE_ENCODING) + try: + self._outputFP = codecs.open(self._outputFile, "ab", UNICODE_ENCODING) + except IOError, ex: + errMsg = "error occurred while opening log file ('%s')" % ex + raise sqlmapGenericException, errMsg def getOutputFile(self): return self._outputFile diff --git a/lib/core/option.py b/lib/core/option.py index d7cf60282..96da79346 100644 --- a/lib/core/option.py +++ b/lib/core/option.py @@ -1374,6 +1374,9 @@ def __cleanupOptions(): if conf.torType: conf.torType = conf.torType.upper() + if conf.oDir: + paths.SQLMAP_OUTPUT_PATH = conf.oDir + threadData = getCurrentThreadData() threadData.reset() diff --git a/lib/core/optiondict.py b/lib/core/optiondict.py index 45d43079d..68a3fdad7 100644 --- a/lib/core/optiondict.py +++ b/lib/core/optiondict.py @@ -173,6 +173,7 @@ optDict = { "forms": "boolean", "freshQueries": "boolean", "hexConvert": "boolean", + "oDir": "string", "parseErrors": "boolean", "replicate": "boolean", "updateAll": "boolean", diff --git a/lib/core/revision.py b/lib/core/revision.py index c220d9a0e..5d23c77b5 100644 --- a/lib/core/revision.py +++ b/lib/core/revision.py @@ -12,6 +12,10 @@ from subprocess import PIPE from subprocess import Popen as execute def getRevisionNumber(): + """ + Returns revision number in a GitHub style + """ + retVal = None filePath = None diff --git a/lib/parse/cmdline.py b/lib/parse/cmdline.py index d1ce39d54..ac356bd5e 100644 --- a/lib/parse/cmdline.py +++ b/lib/parse/cmdline.py @@ -540,6 +540,10 @@ def cmdLineParser(): action="store_true", help="Uses DBMS hex function(s) for data retrieval") + general.add_option("--output-dir", dest="oDir", + action="store", + help="Custom output directory path") + general.add_option("--parse-errors", dest="parseErrors", action="store_true", help="Parse and display DBMS error messages from responses") diff --git a/sqlmap.conf b/sqlmap.conf index d93e524a2..561bbbf69 100644 --- a/sqlmap.conf +++ b/sqlmap.conf @@ -596,6 +596,9 @@ freshQueries = False # Valid: True or False hexConvert = False +# Custom output directory path. +oDir = + # Parse and display DBMS error messages from responses. # Valid: True or False parseErrors = False