Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b0ab837

Browse files
committed
minor code refactoring and implemented issue #95
1 parent 9cb1c4c commit b0ab837

2 files changed

Lines changed: 77 additions & 11 deletions

File tree

plugins/generic/entries.py

Lines changed: 61 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -483,14 +483,6 @@ def dumpAll(self):
483483
logger.info(infoMsg)
484484

485485
def dumpFoundColumn(self, dbs, foundCols, colConsider):
486-
if not dbs:
487-
warnMsg = "no databases have tables containing any of the "
488-
warnMsg += "provided columns"
489-
logger.warn(warnMsg)
490-
return
491-
492-
conf.dumper.dbColumns(foundCols, colConsider, dbs)
493-
494486
message = "do you want to dump entries? [Y/n] "
495487
output = readInput(message, default="Y")
496488

@@ -552,3 +544,64 @@ def dumpFoundColumn(self, dbs, foundCols, colConsider):
552544

553545
if data:
554546
conf.dumper.dbTableValues(data)
547+
548+
def dumpFoundTables(self, tables):
549+
print "tables:", tables
550+
551+
message = "do you want to dump tables' entries? [Y/n] "
552+
output = readInput(message, default="Y")
553+
554+
if output and output[0].lower() != "y":
555+
return
556+
557+
dumpFromDbs = []
558+
message = "which database(s)?\n[a]ll (default)\n"
559+
560+
for db, tablesList in tables.items():
561+
if tablesList:
562+
message += "[%s]\n" % db
563+
564+
message += "[q]uit"
565+
test = readInput(message, default="a")
566+
567+
if not test or test.lower() == "a":
568+
dumpFromDbs = tables.keys()
569+
elif test.lower() == "q":
570+
return
571+
else:
572+
dumpFromDbs = test.replace(" ", "").split(",")
573+
574+
for db, tablesList in tables.items():
575+
if db not in dumpFromDbs or not tablesList:
576+
continue
577+
578+
conf.db = db
579+
dumpFromTbls = []
580+
message = "which table(s) of database '%s'?\n" % db
581+
message += "[a]ll (default)\n"
582+
583+
for tbl in tablesList:
584+
message += "[%s]\n" % tbl
585+
586+
message += "[s]kip\n"
587+
message += "[q]uit"
588+
test = readInput(message, default="a")
589+
590+
if not test or test.lower() == "a":
591+
dumpFromTbls = tablesList
592+
elif test.lower() == "s":
593+
continue
594+
elif test.lower() == "q":
595+
return
596+
else:
597+
dumpFromTbls = test.replace(" ", "").split(",")
598+
599+
for table in dumpFromTbls:
600+
conf.tbl = table
601+
kb.data.cachedColumns = {}
602+
kb.data.dumpedTable = {}
603+
604+
data = self.dumpTable()
605+
606+
if data:
607+
conf.dumper.dbTableValues(data)

plugins/generic/search.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,13 @@ def searchTable(self):
282282
foundTbl = safeSQLIdentificatorNaming(foundTbl, True)
283283
foundTbls[db].append(foundTbl)
284284

285-
return foundTbls
285+
if not foundTbls:
286+
warnMsg = "no databases contain any of the provided tables"
287+
logger.warn(warnMsg)
288+
return
289+
290+
conf.dumper.dbTables(foundTbls)
291+
self.dumpFoundTables(foundTbls)
286292

287293
def searchColumn(self):
288294
bruteForce = False
@@ -519,6 +525,13 @@ def searchColumn(self):
519525
else:
520526
foundCols[column][db] = [tbl]
521527

528+
if not foundCols:
529+
warnMsg = "no databases have tables containing any of the "
530+
warnMsg += "provided columns"
531+
logger.warn(warnMsg)
532+
return
533+
534+
conf.dumper.dbColumns(foundCols, colConsider, dbs)
522535
self.dumpFoundColumn(dbs, foundCols, colConsider)
523536

524537
def search(self):
@@ -531,12 +544,12 @@ def search(self):
531544
self.searchColumn()
532545

533546
elif conf.tbl:
534-
conf.dumper.dbTables(self.searchTable())
547+
self.searchTable()
535548

536549
elif conf.db:
537550
conf.dumper.lister("found databases", self.searchDb())
538551

539552
else:
540-
errMsg = "missing parameter, provide -D, -T or -C together "
553+
errMsg = "missing parameter, provide -D, -T or -C along "
541554
errMsg += "with --search"
542555
raise sqlmapMissingMandatoryOptionException, errMsg

0 commit comments

Comments
 (0)