more unicode refactoring

This commit is contained in:
Miroslav Stampar 2010-06-02 12:45:40 +00:00
parent 2fb8bf3b6a
commit 12a5ec9f3d
16 changed files with 37 additions and 23 deletions

View File

@ -27,6 +27,7 @@ import socket
import time import time
from lib.core.agent import agent from lib.core.agent import agent
from lib.core.common import getUnicode
from lib.core.common import randomInt from lib.core.common import randomInt
from lib.core.common import randomStr from lib.core.common import randomStr
from lib.core.convert import md5hash from lib.core.convert import md5hash
@ -257,7 +258,7 @@ def checkDynParam(place, parameter, value):
logger.info(infoMsg) logger.info(infoMsg)
randInt = randomInt() randInt = randomInt()
payload = agent.payload(place, parameter, value, unicode(randInt)) payload = agent.payload(place, parameter, value, getUnicode(randInt))
dynResult1 = Request.queryPage(payload, place) dynResult1 = Request.queryPage(payload, place)
if True == dynResult1: if True == dynResult1:
@ -395,7 +396,7 @@ def checkConnection():
conf.seqMatcher.set_seq1(page) conf.seqMatcher.set_seq1(page)
except sqlmapConnectionException, errMsg: except sqlmapConnectionException, errMsg:
errMsg = unicode(errMsg) errMsg = getUnicode(errMsg)
raise sqlmapConnectionException, errMsg raise sqlmapConnectionException, errMsg
return True return True

View File

@ -29,6 +29,7 @@ from lib.controller.checks import checkStability
from lib.controller.checks import checkString from lib.controller.checks import checkString
from lib.controller.checks import checkRegexp from lib.controller.checks import checkRegexp
from lib.controller.checks import checkConnection from lib.controller.checks import checkConnection
from lib.core.common import getUnicode
from lib.core.common import paramToDict from lib.core.common import paramToDict
from lib.core.common import parseTargetUrl from lib.core.common import parseTargetUrl
from lib.core.common import readInput from lib.core.common import readInput
@ -155,7 +156,7 @@ def start():
if not conf.dropSetCookie: if not conf.dropSetCookie:
for _, cookie in enumerate(conf.cj): for _, cookie in enumerate(conf.cj):
cookie = unicode(cookie) cookie = getUnicode(cookie)
index = cookie.index(" for ") index = cookie.index(" for ")
cookieStr += "%s;" % cookie[8:index] cookieStr += "%s;" % cookie[8:index]
@ -267,7 +268,7 @@ def start():
action() action()
except exceptionsTuple, e: except exceptionsTuple, e:
e = unicode(e) e = getUnicode(e)
if conf.multipleTargets: if conf.multipleTargets:
e += ", skipping to next url" e += ", skipping to next url"

View File

@ -1354,7 +1354,7 @@ def getCommonStart(strings=[]):
def getUnicode(value): def getUnicode(value):
if isinstance(value, basestring): if isinstance(value, basestring):
return value if isinstance(value, unicode) else unicode(value, conf.dataEncoding) return value if isinstance(value, unicode) else unicode(value, conf.dataEncoding if 'dataEncoding' in conf else "utf-8")
else: else:
return unicode(value) return unicode(value)

View File

@ -22,6 +22,7 @@ with sqlmap; if not, write to the Free Software Foundation, Inc., 51
Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
""" """
from lib.core.common import getUnicode
from lib.core.common import dataToStdout from lib.core.common import dataToStdout
from lib.core.data import conf from lib.core.data import conf
@ -80,7 +81,7 @@ class ProgressBar:
" " * (allFull - numHashes)) " " * (allFull - numHashes))
# Add the percentage at the beginning of the progress bar # Add the percentage at the beginning of the progress bar
percentString = unicode(percentDone) + "%" percentString = getUnicode(percentDone) + "%"
self.__progBar = "%s %s" % (percentString, self.__progBar) self.__progBar = "%s %s" % (percentString, self.__progBar)
def draw(self, eta=0): def draw(self, eta=0):
@ -102,4 +103,4 @@ class ProgressBar:
This method returns the progress bar string This method returns the progress bar string
""" """
return unicode(self.__progBar) return getUnicode(self.__progBar)

View File

@ -39,6 +39,7 @@ from xml.dom.minidom import Document
from subprocess import PIPE from subprocess import PIPE
from subprocess import Popen as execute from subprocess import Popen as execute
from lib.core.common import getUnicode
from lib.core.common import dataToStdout from lib.core.common import dataToStdout
from lib.core.common import pollProcess from lib.core.common import pollProcess
from lib.core.common import readInput from lib.core.common import readInput
@ -215,7 +216,7 @@ def __updateSqlmap():
logger.debug(debugMsg) logger.debug(debugMsg)
def notify(event_dict): def notify(event_dict):
action = unicode(event_dict['action']) action = getUnicode(event_dict['action'])
index = action.find('_') index = action.find('_')
prefix = action[index + 1].upper() if index != -1 else action.capitalize() prefix = action[index + 1].upper() if index != -1 else action.capitalize()
@ -225,7 +226,7 @@ def __updateSqlmap():
if action.find('_completed') == -1: if action.find('_completed') == -1:
print "%s\t%s" % (prefix, event_dict['path']) print "%s\t%s" % (prefix, event_dict['path'])
else: else:
revision = unicode(event_dict['revision']) revision = getUnicode(event_dict['revision'])
index = revision.find('number ') index = revision.find('number ')
if index != -1: if index != -1:

View File

@ -94,7 +94,7 @@ def decodePage(page, encoding):
Decode gzip/deflate HTTP response Decode gzip/deflate HTTP response
""" """
if unicode(encoding).lower() in ('gzip', 'x-gzip', 'deflate'): if isinstance(encoding, basestring) and encoding.lower() in ('gzip', 'x-gzip', 'deflate'):
if encoding == 'deflate': if encoding == 'deflate':
# http://stackoverflow.com/questions/1089662/python-inflate-and-deflate-implementations # http://stackoverflow.com/questions/1089662/python-inflate-and-deflate-implementations
data = StringIO.StringIO(zlib.decompress(page, -15)) data = StringIO.StringIO(zlib.decompress(page, -15))

View File

@ -24,6 +24,7 @@ Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
from lib.core.agent import agent from lib.core.agent import agent
from lib.core.common import dataToSessionFile from lib.core.common import dataToSessionFile
from lib.core.common import getUnicode
from lib.core.convert import base64pickle from lib.core.convert import base64pickle
from lib.core.convert import base64unpickle from lib.core.convert import base64unpickle
from lib.core.convert import utf8decode from lib.core.convert import utf8decode
@ -55,7 +56,7 @@ def direct(query, content=True):
output = base64unpickle(kb.resumedQueries[conf.hostname][query][:-1]) output = base64unpickle(kb.resumedQueries[conf.hostname][query][:-1])
infoMsg = "resumed from file '%s': " % conf.sessionFile infoMsg = "resumed from file '%s': " % conf.sessionFile
infoMsg += "%s..." % unicode(output)[:20] infoMsg += "%s..." % getUnicode(output)[:20]
logger.info(infoMsg) logger.info(infoMsg)
elif select: elif select:
output = timeout(func=conf.dbmsConnector.select, args=(query,), duration=conf.timeout, default=None) output = timeout(func=conf.dbmsConnector.select, args=(query,), duration=conf.timeout, default=None)

View File

@ -36,6 +36,7 @@ from subprocess import Popen as execute
from lib.core.common import dataToStdout from lib.core.common import dataToStdout
from lib.core.common import getLocalIP from lib.core.common import getLocalIP
from lib.core.common import getRemoteIP from lib.core.common import getRemoteIP
from lib.core.common import getUnicode
from lib.core.common import normalizePath from lib.core.common import normalizePath
from lib.core.common import ntToPosixSlashes from lib.core.common import ntToPosixSlashes
from lib.core.common import pollProcess from lib.core.common import pollProcess
@ -157,7 +158,7 @@ class Metasploit:
if not choice: if not choice:
if lst: if lst:
choice = unicode(default) choice = getUnicode(default)
else: else:
return default return default

View File

@ -27,6 +27,7 @@ import time
from lib.core.agent import agent from lib.core.agent import agent
from lib.core.common import calculateDeltaSeconds from lib.core.common import calculateDeltaSeconds
from lib.core.common import getUnicode
from lib.core.common import parseUnionPage from lib.core.common import parseUnionPage
from lib.core.data import conf from lib.core.data import conf
from lib.core.data import kb from lib.core.data import kb
@ -227,7 +228,7 @@ def unionUse(expression, direct=False, unescape=True, resetCounter=False, nullCh
# sql injection output # sql injection output
startPosition = resultPage.index(temp.start) startPosition = resultPage.index(temp.start)
endPosition = resultPage.rindex(temp.stop) + len(temp.stop) endPosition = resultPage.rindex(temp.stop) + len(temp.stop)
value = unicode(resultPage[startPosition:endPosition]) value = getUnicode(resultPage[startPosition:endPosition])
duration = calculateDeltaSeconds(start) duration = calculateDeltaSeconds(start)

View File

@ -27,6 +27,7 @@ import re
import socket import socket
import urllib2 import urllib2
from lib.core.common import getUnicode
from lib.core.convert import urlencode from lib.core.convert import urlencode
from lib.core.data import conf from lib.core.data import conf
from lib.core.data import kb from lib.core.data import kb
@ -123,7 +124,7 @@ class Google:
responseMsg = "HTTP response (%s - %d):\n" % (status, code) responseMsg = "HTTP response (%s - %d):\n" % (status, code)
if conf.verbose <= 4: if conf.verbose <= 4:
responseMsg += unicode(responseHeaders) responseMsg += getUnicode(responseHeaders)
elif conf.verbose > 4: elif conf.verbose > 4:
responseMsg += "%s\n%s\n" % (responseHeaders, page) responseMsg += "%s\n%s\n" % (responseHeaders, page)

View File

@ -28,6 +28,7 @@ from lib.core.agent import agent
from lib.core.common import formatDBMSfp from lib.core.common import formatDBMSfp
from lib.core.common import formatFingerprint from lib.core.common import formatFingerprint
from lib.core.common import getHtmlErrorFp from lib.core.common import getHtmlErrorFp
from lib.core.common import getUnicode
from lib.core.common import randomInt from lib.core.common import randomInt
from lib.core.common import randomRange from lib.core.common import randomRange
from lib.core.data import conf from lib.core.data import conf
@ -94,7 +95,7 @@ class Fingerprint(GenericFingerprint):
for i in xrange(len(table)): for i in xrange(len(table)):
version, checks = table[i] version, checks = table[i]
failed = False failed = False
check = checks[randomRange(0,len(checks)-1)].replace("%d", unicode(randomRange(1,100))) check = checks[randomRange(0,len(checks)-1)].replace("%d", getUnicode(randomRange(1,100)))
payload = agent.fullPayload(check) payload = agent.fullPayload(check)
result = Request.queryPage(payload) result = Request.queryPage(payload)
if result: if result:

View File

@ -26,6 +26,7 @@ from lib.core.agent import agent
from lib.core.common import formatDBMSfp from lib.core.common import formatDBMSfp
from lib.core.common import formatFingerprint from lib.core.common import formatFingerprint
from lib.core.common import getHtmlErrorFp from lib.core.common import getHtmlErrorFp
from lib.core.common import getUnicode
from lib.core.common import randomInt from lib.core.common import randomInt
from lib.core.data import conf from lib.core.data import conf
from lib.core.data import kb from lib.core.data import kb
@ -217,7 +218,7 @@ class Fingerprint(GenericFingerprint):
for sp in sps: for sp in sps:
query = "(SELECT LEN(%s) FROM %s WHERE %s " % (self.tblField, self.fileTblName, self.tblField) query = "(SELECT LEN(%s) FROM %s WHERE %s " % (self.tblField, self.fileTblName, self.tblField)
query += "LIKE '%Service Pack " + unicode(sp) + "%')>0" query += "LIKE '%Service Pack " + getUnicode(sp) + "%')>0"
query = agent.forgeCaseStatement(query) query = agent.forgeCaseStatement(query)
if inject.getValue(query, charsetType=1) == "1": if inject.getValue(query, charsetType=1) == "1":

View File

@ -28,6 +28,7 @@ from lib.core.agent import agent
from lib.core.common import formatDBMSfp from lib.core.common import formatDBMSfp
from lib.core.common import formatFingerprint from lib.core.common import formatFingerprint
from lib.core.common import getHtmlErrorFp from lib.core.common import getHtmlErrorFp
from lib.core.common import getUnicode
from lib.core.common import randomInt from lib.core.common import randomInt
from lib.core.data import conf from lib.core.data import conf
from lib.core.data import kb from lib.core.data import kb
@ -76,7 +77,7 @@ class Fingerprint(GenericFingerprint):
for version in range(element[0], element[1] + 1): for version in range(element[0], element[1] + 1):
randInt = randomInt() randInt = randomInt()
version = unicode(version) version = getUnicode(version)
query = agent.prefixQuery(" /*!%s AND %d=%d*/" % (version, randInt, randInt + 1)) query = agent.prefixQuery(" /*!%s AND %d=%d*/" % (version, randInt, randInt + 1))
query = agent.postfixQuery(query) query = agent.postfixQuery(query)
payload = agent.payload(newValue=query) payload = agent.payload(newValue=query)
@ -168,7 +169,7 @@ class Fingerprint(GenericFingerprint):
infoMsg = "testing MySQL" infoMsg = "testing MySQL"
logger.info(infoMsg) logger.info(infoMsg)
randInt = unicode(randomInt(1)) randInt = getUnicode(randomInt(1))
payload = agent.fullPayload(" AND CONNECTION_ID()=CONNECTION_ID()") payload = agent.fullPayload(" AND CONNECTION_ID()=CONNECTION_ID()")
result = Request.queryPage(payload) result = Request.queryPage(payload)

View File

@ -28,6 +28,7 @@ from lib.core.agent import agent
from lib.core.common import formatDBMSfp from lib.core.common import formatDBMSfp
from lib.core.common import formatFingerprint from lib.core.common import formatFingerprint
from lib.core.common import getHtmlErrorFp from lib.core.common import getHtmlErrorFp
from lib.core.common import getUnicode
from lib.core.common import randomInt from lib.core.common import randomInt
from lib.core.data import conf from lib.core.data import conf
from lib.core.data import kb from lib.core.data import kb
@ -97,7 +98,7 @@ class Fingerprint(GenericFingerprint):
infoMsg = "testing PostgreSQL" infoMsg = "testing PostgreSQL"
logger.info(infoMsg) logger.info(infoMsg)
randInt = unicode(randomInt(1)) randInt = getUnicode(randomInt(1))
payload = agent.fullPayload(" AND %s::int=%s" % (randInt, randInt)) payload = agent.fullPayload(" AND %s::int=%s" % (randInt, randInt))
result = Request.queryPage(payload) result = Request.queryPage(payload)

View File

@ -26,6 +26,7 @@ import re
from lib.core.agent import agent from lib.core.agent import agent
from lib.core.common import getRange from lib.core.common import getRange
from lib.core.common import getUnicode
from lib.core.common import parsePasswordHash from lib.core.common import parsePasswordHash
from lib.core.common import readInput from lib.core.common import readInput
from lib.core.common import safeStringFormat from lib.core.common import safeStringFormat
@ -440,7 +441,7 @@ class Enumeration:
# In PostgreSQL we get 1 if the privilege is # In PostgreSQL we get 1 if the privilege is
# True, 0 otherwise # True, 0 otherwise
if kb.dbms == "PostgreSQL" and unicode(privilege).isdigit(): if kb.dbms == "PostgreSQL" and getUnicode(privilege).isdigit():
for position, pgsqlPriv in pgsqlPrivs: for position, pgsqlPriv in pgsqlPrivs:
if count == position and int(privilege) == 1: if count == position and int(privilege) == 1:
privileges.add(pgsqlPriv) privileges.add(pgsqlPriv)
@ -1058,7 +1059,7 @@ class Enumeration:
else: else:
colEntry = entry[index] colEntry = entry[index]
colEntryLen = len(unicode(colEntry)) colEntryLen = len(getUnicode(colEntry))
maxLen = max(colLen, colEntryLen) maxLen = max(colLen, colEntryLen)
if maxLen > kb.data.dumpedTable[column]["length"]: if maxLen > kb.data.dumpedTable[column]["length"]:

View File

@ -44,6 +44,7 @@ except ImportError, _:
from lib.controller.controller import start from lib.controller.controller import start
from lib.core.common import banner from lib.core.common import banner
from lib.core.common import getUnicode
from lib.core.common import profile from lib.core.common import profile
from lib.core.common import setPaths from lib.core.common import setPaths
from lib.core.common import weAreFrozen from lib.core.common import weAreFrozen
@ -63,7 +64,7 @@ def modulePath():
""" """
if weAreFrozen(): if weAreFrozen():
return os.path.dirname(unicode(sys.executable, sys.getfilesystemencoding())) return os.path.dirname(getUnicode(sys.executable, sys.getfilesystemencoding()))
else: else:
return os.path.dirname(os.path.realpath(__file__)) return os.path.dirname(os.path.realpath(__file__))
@ -87,7 +88,7 @@ def main():
else: else:
start() start()
except exceptionsTuple, e: except exceptionsTuple, e:
e = unicode(e) e = getUnicode(e)
logger.error(e) logger.error(e)
closeDumper(False, e) closeDumper(False, e)