diff --git a/lib/core/settings.py b/lib/core/settings.py index 7c91cb454..c6d1307d5 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -19,7 +19,7 @@ from lib.core.enums import DBMS_DIRECTORY_NAME from lib.core.enums import OS # sqlmap version (...) -VERSION = "1.2.9.20" +VERSION = "1.2.9.21" TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable" 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) diff --git a/thirdparty/ansistrm/ansistrm.py b/thirdparty/ansistrm/ansistrm.py index 24533f249..a2af36e2b 100644 --- a/thirdparty/ansistrm/ansistrm.py +++ b/thirdparty/ansistrm/ansistrm.py @@ -130,6 +130,16 @@ class ColorizingStreamHandler(logging.StreamHandler): ctypes.windll.kernel32.SetConsoleTextAttribute(h, color) + def _reset(self, message): + if not message.endswith(self.reset): + reset = self.reset + elif self.bold in message: # bold + reset = self.reset + self.bold + else: + reset = self.reset + + return reset + def colorize(self, message, levelno): if levelno in self.level_map and self.is_tty: bg, fg, bold = self.level_map[levelno] @@ -162,51 +172,29 @@ class ColorizingStreamHandler(logging.StreamHandler): match = re.search(r"\A\s*\[([\d:]+)\]", message) # time if match: time = match.group(1) - if not message.endswith(self.reset): - reset = self.reset - elif self.bold in message: # bold - reset = self.reset + self.bold - else: - reset = self.reset - message = message.replace(time, ''.join((self.csi, str(self.color_map["cyan"] + 30), 'm', time, reset)), 1) + message = message.replace(time, ''.join((self.csi, str(self.color_map["cyan"] + 30), 'm', time, self._reset(message))), 1) match = re.search(r"\[(#\d+)\]", message) # counter if match: counter = match.group(1) - if not message.endswith(self.reset): - reset = self.reset - elif self.bold in message: # bold - reset = self.reset + self.bold - else: - reset = self.reset - message = message.replace(counter, ''.join((self.csi, str(self.color_map["yellow"] + 30), 'm', counter, reset)), 1) + message = message.replace(counter, ''.join((self.csi, str(self.color_map["yellow"] + 30), 'm', counter, self._reset(message))), 1) if level != "PAYLOAD": if any(_ in message for _ in ("parsed DBMS error message",)): string = re.search(r": '(.+)'", message).group(1) - if not message.endswith(self.reset): - reset = self.reset - elif self.bold in message: # bold - reset = self.reset + self.bold - else: - reset = self.reset - message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, reset)), 1) + message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1) else: for match in re.finditer(r"[^\w]'([^']+)'", message): # single-quoted string = match.group(1) - if not message.endswith(self.reset): - reset = self.reset - elif self.bold in message: # bold - reset = self.reset + self.bold - else: - reset = self.reset - message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, reset)), 1) + message = message.replace("'%s'" % string, "'%s'" % ''.join((self.csi, str(self.color_map["white"] + 30), 'm', string, self._reset(message))), 1) else: message = ''.join((self.csi, ';'.join(params), 'm', message, self.reset)) if prefix: message = "%s%s" % (prefix, message) + message = message.replace("%s]" % self.bold, "]%s" % self.bold) # dirty patch + return message def format(self, record): diff --git a/txt/checksum.md5 b/txt/checksum.md5 index a8f816ad9..83c7b7ff1 100644 --- a/txt/checksum.md5 +++ b/txt/checksum.md5 @@ -50,7 +50,7 @@ c8c386d644d57c659d74542f5f57f632 lib/core/patch.py 0c3eef46bdbf87e29a3f95f90240d192 lib/core/replication.py a7db43859b61569b601b97f187dd31c5 lib/core/revision.py fcb74fcc9577523524659ec49e2e964b lib/core/session.py -03a73c87322c0165d98bcc1df2794e9f lib/core/settings.py +3698f90905c46eb938cf0b0f5235132f lib/core/settings.py dd68a9d02fccb4fa1428b20e15b0db5d lib/core/shell.py a7edc9250d13af36ac0108f259859c19 lib/core/subprocessng.py 248bd121e0565318e1efaff54aa427bc lib/core/target.py @@ -287,7 +287,7 @@ f2b9eac52d346315f5705f71beeda791 tamper/varnish.py 0e40966a51d1eb5d42a2159d2015a8a4 tamper/versionedkeywords.py 0fba004bf1be6edbefbda89f23f4e518 tamper/versionedmorekeywords.py 23d845e9f937f2a31c43767b8a8fcff6 tamper/xforwardedfor.py -b422795c5e589decec725963e480ffba thirdparty/ansistrm/ansistrm.py +1ebf563bb2cb18b68ea952418bba0ec5 thirdparty/ansistrm/ansistrm.py d41d8cd98f00b204e9800998ecf8427e thirdparty/ansistrm/__init__.py 8e775c25bc9e84891ad6fcb4f0005c23 thirdparty/beautifulsoup/beautifulsoup.py cb2e1fe7c404dff41a2ae9132828f532 thirdparty/beautifulsoup/__init__.py