added new option --flush-session

This commit is contained in:
Miroslav Stampar 2010-03-04 13:01:18 +00:00
parent a839566bb2
commit 58d54b6515
5 changed files with 52 additions and 37 deletions

View File

@ -139,6 +139,7 @@ optDict = {
"Miscellaneous": { "Miscellaneous": {
"sessionFile": "string", "sessionFile": "string",
"flushSession": "boolean",
"eta": "boolean", "eta": "boolean",
"googlePage": "integer", "googlePage": "integer",
"updateAll": "boolean", "updateAll": "boolean",

View File

@ -117,42 +117,50 @@ def __setOutputResume():
logger.info("using '%s' as session file" % conf.sessionFile) logger.info("using '%s' as session file" % conf.sessionFile)
if os.path.exists(conf.sessionFile): if os.path.exists(conf.sessionFile):
readSessionFP = open(conf.sessionFile, "r") if not conf.flushSession:
lines = readSessionFP.readlines() readSessionFP = open(conf.sessionFile, "r")
lines = readSessionFP.readlines()
for line in lines:
if line.count("][") == 4: for line in lines:
line = line.split("][") if line.count("][") == 4:
line = line.split("][")
if len(line) != 5:
continue if len(line) != 5:
continue
url, _, _, expression, value = line
url, _, _, expression, value = line
if not value:
continue if not value:
continue
if url[0] == "[":
url = url[1:] if url[0] == "[":
url = url[1:]
if value[-1] == "\n":
value = value[:-1] if value[-1] == "\n":
value = value[:-1]
if url != conf.url:
continue if url != conf.url:
continue
if url not in kb.resumedQueries.keys():
kb.resumedQueries[url] = {} if url not in kb.resumedQueries.keys():
kb.resumedQueries[url][expression] = value kb.resumedQueries[url] = {}
kb.resumedQueries[url][expression] = value
resumeConfKb(expression, url, value)
resumeConfKb(expression, url, value)
if expression not in kb.resumedQueries[url].keys():
kb.resumedQueries[url][expression] = value if expression not in kb.resumedQueries[url].keys():
elif len(value) >= len(kb.resumedQueries[url][expression]): kb.resumedQueries[url][expression] = value
kb.resumedQueries[url][expression] = value elif len(value) >= len(kb.resumedQueries[url][expression]):
kb.resumedQueries[url][expression] = value
readSessionFP.close()
readSessionFP.close()
else:
try:
os.remove(conf.sessionFile)
logger.info("flushing session file")
except OSError, msg:
errMsg = "unable to flush the session file (%s)" % msg
raise sqlmapFilePathException, errMsg
try: try:
conf.sessionFP = open(conf.sessionFile, "a") conf.sessionFP = open(conf.sessionFile, "a")

View File

@ -397,6 +397,9 @@ def cmdLineParser():
help="Save and resume all data retrieved " help="Save and resume all data retrieved "
"on a session file") "on a session file")
miscellaneous.add_option("--flush-session", dest="flushSession", action="store_true",
help="Flush session file for current target")
miscellaneous.add_option("--eta", dest="eta", action="store_true", miscellaneous.add_option("--eta", dest="eta", action="store_true",
help="Display for each output the " help="Display for each output the "
"estimated time of arrival") "estimated time of arrival")

View File

@ -103,7 +103,6 @@ class Enumeration:
infoMsg = "fetching banner" infoMsg = "fetching banner"
logger.info(infoMsg) logger.info(infoMsg)
if not kb.data.banner: if not kb.data.banner:
if conf.unionUse or conf.unionTest: if conf.unionUse or conf.unionTest:
dumper.string("valid union", unionTest()) dumper.string("valid union", unionTest())

View File

@ -398,6 +398,10 @@ regType =
# Save and resume all data retrieved on a session file. # Save and resume all data retrieved on a session file.
sessionFile = sessionFile =
# Flush session file for current target.
flushSession = False
# Retrieve each query output length and calculate the estimated time of # Retrieve each query output length and calculate the estimated time of
# arrival in real time. # arrival in real time.
# Valid: True or False # Valid: True or False