Another 'six' update

This commit is contained in:
Miroslav Stampar 2019-03-27 02:55:44 +01:00
parent df5a5c6fe8
commit b5c82c4685
2 changed files with 19 additions and 20 deletions

View File

@ -33,8 +33,6 @@ import threading
import time import time
import types import types
import urllib import urllib
import urllib2
import urlparse
import unicodedata import unicodedata
from ConfigParser import DEFAULTSECT from ConfigParser import DEFAULTSECT
@ -178,6 +176,7 @@ from thirdparty.clientform.clientform import ParseError
from thirdparty.colorama.initialise import init as coloramainit from thirdparty.colorama.initialise import init as coloramainit
from thirdparty.magic import magic from thirdparty.magic import magic
from thirdparty.odict import OrderedDict from thirdparty.odict import OrderedDict
from thirdparty.six.moves import urllib as _urllib
from thirdparty.termcolor.termcolor import colored from thirdparty.termcolor.termcolor import colored
class UnicodeRawConfigParser(RawConfigParser): class UnicodeRawConfigParser(RawConfigParser):
@ -1467,7 +1466,7 @@ def parseTargetUrl():
conf.url = conf.url.replace('?', URI_QUESTION_MARKER) conf.url = conf.url.replace('?', URI_QUESTION_MARKER)
try: try:
urlSplit = urlparse.urlsplit(conf.url) urlSplit = _urllib.parse.urlsplit(conf.url)
except ValueError as ex: except ValueError as ex:
errMsg = "invalid URL '%s' has been given ('%s'). " % (conf.url, getSafeExString(ex)) errMsg = "invalid URL '%s' has been given ('%s'). " % (conf.url, getSafeExString(ex))
errMsg += "Please be sure that you don't have any leftover characters (e.g. '[' or ']') " errMsg += "Please be sure that you don't have any leftover characters (e.g. '[' or ']') "
@ -2653,7 +2652,7 @@ def urldecode(value, encoding=None, unsafe="%%&=;+%s" % CUSTOM_INJECTION_MARK_CH
pass pass
finally: finally:
if convall: if convall:
result = urllib.unquote_plus(value) if spaceplus else urllib.unquote(value) result = _urllib.parse.unquote_plus(value) if spaceplus else _urllib.parse.unquote(value)
else: else:
def _(match): def _(match):
charset = reduce(lambda x, y: x.replace(y, ""), unsafe, string.printable) charset = reduce(lambda x, y: x.replace(y, ""), unsafe, string.printable)
@ -2661,7 +2660,7 @@ def urldecode(value, encoding=None, unsafe="%%&=;+%s" % CUSTOM_INJECTION_MARK_CH
return char if char in charset else match.group(0) return char if char in charset else match.group(0)
result = value result = value
if spaceplus: if spaceplus:
result = result.replace('+', ' ') # plus sign has a special meaning in URL encoded data (hence the usage of urllib.unquote_plus in convall case) result = result.replace('+', ' ') # plus sign has a special meaning in URL encoded data (hence the usage of _urllib.parse.unquote_plus in convall case)
result = re.sub(r"%([0-9a-fA-F]{2})", _, result) result = re.sub(r"%([0-9a-fA-F]{2})", _, result)
if isinstance(result, str): if isinstance(result, str):
@ -2700,7 +2699,7 @@ def urlencode(value, safe="%&=-_", convall=False, limit=False, spaceplus=False):
value = re.sub(r"%(?![0-9a-fA-F]{2})", "%25", value) value = re.sub(r"%(?![0-9a-fA-F]{2})", "%25", value)
while True: while True:
result = urllib.quote(utf8encode(value), safe) result = _urllib.parse.quote(utf8encode(value), safe)
if limit and len(result) > URLENCODE_CHAR_LIMIT: if limit and len(result) > URLENCODE_CHAR_LIMIT:
if count >= len(URLENCODE_FAILSAFE_CHARS): if count >= len(URLENCODE_FAILSAFE_CHARS):
@ -2715,7 +2714,7 @@ def urlencode(value, safe="%&=-_", convall=False, limit=False, spaceplus=False):
break break
if spaceplus: if spaceplus:
result = result.replace(urllib.quote(' '), '+') result = result.replace(_urllib.parse.quote(' '), '+')
return result return result
@ -3442,10 +3441,10 @@ def getLatestRevision():
""" """
retVal = None retVal = None
req = urllib2.Request(url="https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/lib/core/settings.py") req = _urllib.request.Request(url="https://raw.githubusercontent.com/sqlmapproject/sqlmap/master/lib/core/settings.py")
try: try:
content = urllib2.urlopen(req).read() content = _urllib.request.urlopen(req).read()
retVal = extractRegexResult(r"VERSION\s*=\s*[\"'](?P<result>[\d.]+)", content) retVal = extractRegexResult(r"VERSION\s*=\s*[\"'](?P<result>[\d.]+)", content)
except: except:
pass pass
@ -3485,10 +3484,10 @@ def createGithubIssue(errMsg, excMsg):
ex = None ex = None
errMsg = errMsg[errMsg.find("\n"):] errMsg = errMsg[errMsg.find("\n"):]
req = urllib2.Request(url="https://api.github.com/search/issues?q=%s" % urllib.quote("repo:sqlmapproject/sqlmap Unhandled exception (#%s)" % key)) req = _urllib.request.Request(url="https://api.github.com/search/issues?q=%s" % _urllib.parse.quote("repo:sqlmapproject/sqlmap Unhandled exception (#%s)" % key))
try: try:
content = urllib2.urlopen(req).read() content = _urllib.request.urlopen(req).read()
_ = json.loads(content) _ = json.loads(content)
duplicate = _["total_count"] > 0 duplicate = _["total_count"] > 0
closed = duplicate and _["items"][0]["state"] == "closed" closed = duplicate and _["items"][0]["state"] == "closed"
@ -3503,10 +3502,10 @@ def createGithubIssue(errMsg, excMsg):
pass pass
data = {"title": "Unhandled exception (#%s)" % key, "body": "```%s\n```\n```\n%s```" % (errMsg, excMsg)} data = {"title": "Unhandled exception (#%s)" % key, "body": "```%s\n```\n```\n%s```" % (errMsg, excMsg)}
req = urllib2.Request(url="https://api.github.com/repos/sqlmapproject/sqlmap/issues", data=json.dumps(data), headers={"Authorization": "token %s" % GITHUB_REPORT_OAUTH_TOKEN.decode("base64")}) req = _urllib.request.Request(url="https://api.github.com/repos/sqlmapproject/sqlmap/issues", data=json.dumps(data), headers={"Authorization": "token %s" % GITHUB_REPORT_OAUTH_TOKEN.decode("base64")})
try: try:
content = urllib2.urlopen(req).read() content = _urllib.request.urlopen(req).read()
except Exception as ex: except Exception as ex:
content = None content = None
@ -4018,7 +4017,7 @@ def asciifyUrl(url, forceQuote=False):
u'http://www.xn--uuraj-gxa24d.com' u'http://www.xn--uuraj-gxa24d.com'
""" """
parts = urlparse.urlsplit(url) parts = _urllib.parse.urlsplit(url)
if not parts.scheme or not parts.netloc: if not parts.scheme or not parts.netloc:
# apparently not an url # apparently not an url
return url return url
@ -4039,10 +4038,10 @@ def asciifyUrl(url, forceQuote=False):
def quote(s, safe): def quote(s, safe):
s = s or '' s = s or ''
# Triggers on non-ascii characters - another option would be: # Triggers on non-ascii characters - another option would be:
# urllib.quote(s.replace('%', '')) != s.replace('%', '') # _urllib.parse.quote(s.replace('%', '')) != s.replace('%', '')
# which would trigger on all %-characters, e.g. "&". # which would trigger on all %-characters, e.g. "&".
if getUnicode(s).encode("ascii", "replace") != s or forceQuote: if getUnicode(s).encode("ascii", "replace") != s or forceQuote:
return urllib.quote(s.encode(UNICODE_ENCODING) if isinstance(s, unicode) else s, safe=safe) return _urllib.parse.quote(s.encode(UNICODE_ENCODING) if isinstance(s, unicode) else s, safe=safe)
return s return s
username = quote(parts.username, '') username = quote(parts.username, '')
@ -4066,7 +4065,7 @@ def asciifyUrl(url, forceQuote=False):
if port: if port:
netloc += ':' + str(port) netloc += ':' + str(port)
return urlparse.urlunsplit([parts.scheme, netloc, path, query, parts.fragment]) or url return _urllib.parse.urlunsplit([parts.scheme, netloc, path, query, parts.fragment]) or url
def isAdminFromPrivileges(privileges): def isAdminFromPrivileges(privileges):
""" """
@ -4224,7 +4223,7 @@ def checkSameHost(*urls):
value = "http://%s" % value value = "http://%s" % value
return value return value
return all(re.sub(r"(?i)\Awww\.", "", urlparse.urlparse(_(url) or "").netloc.split(':')[0]) == re.sub(r"(?i)\Awww\.", "", urlparse.urlparse(_(urls[0]) or "").netloc.split(':')[0]) for url in urls[1:]) return all(re.sub(r"(?i)\Awww\.", "", _urllib.parse.urlparse(_(url) or "").netloc.split(':')[0]) == re.sub(r"(?i)\Awww\.", "", _urllib.parse.urlparse(_(urls[0]) or "").netloc.split(':')[0]) for url in urls[1:])
def getHostHeader(url): def getHostHeader(url):
""" """
@ -4237,7 +4236,7 @@ def getHostHeader(url):
retVal = url retVal = url
if url: if url:
retVal = urlparse.urlparse(url).netloc retVal = _urllib.parse.urlparse(url).netloc
if re.search(r"http(s)?://\[.+\]", url, re.I): if re.search(r"http(s)?://\[.+\]", url, re.I):
retVal = extractRegexResult(r"http(s)?://\[(?P<result>.+)\]", url) retVal = extractRegexResult(r"http(s)?://\[(?P<result>.+)\]", url)

View File

@ -17,7 +17,7 @@ from lib.core.enums import DBMS_DIRECTORY_NAME
from lib.core.enums import OS from lib.core.enums import OS
# sqlmap version (<major>.<minor>.<month>.<monthly commit>) # sqlmap version (<major>.<minor>.<month>.<monthly commit>)
VERSION = "1.3.3.54" VERSION = "1.3.3.55"
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable" TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34} TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE) VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)