From a8e3bfb78bae883528d5137ade4a6043adff5082 Mon Sep 17 00:00:00 2001 From: snh <1476164672@qq.com> Date: Fri, 27 Dec 2024 21:05:40 +0800 Subject: [PATCH] =?UTF-8?q?ansistrm=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/ansistrm/ansistrm.py | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/sqlmap-master/thirdparty/ansistrm/ansistrm.py b/src/sqlmap-master/thirdparty/ansistrm/ansistrm.py index e205c24..6c88776 100644 --- a/src/sqlmap-master/thirdparty/ansistrm/ansistrm.py +++ b/src/sqlmap-master/thirdparty/ansistrm/ansistrm.py @@ -61,10 +61,13 @@ class ColorizingStreamHandler(logging.StreamHandler): message = stdoutEncode(self.format(record)) stream = self.stream + #如果当前流不是TTY,直接写入消息 + if not self.is_tty: if message and message[0] == "\r": message = message[1:] stream.write(message) + #如果是TTY,调用output_colorized方法来输出带颜色的消息 else: self.output_colorized(message) stream.write(getattr(self, 'terminator', '\n')) @@ -73,8 +76,10 @@ class ColorizingStreamHandler(logging.StreamHandler): except (KeyboardInterrupt, SystemExit): raise except IOError: + #IO错误时,什么也不做(pass) pass except: + #其他异常时,调用handleError方法 self.handleError(record) if not IS_WIN: @@ -102,22 +107,27 @@ class ColorizingStreamHandler(logging.StreamHandler): h = None fd = getattr(self.stream, 'fileno', None) + #文件描述符有效,并且是标准输出或标准错误,获取对应的Windows句柄 if fd is not None: fd = fd() if fd in (1, 2): # stdout or stderr h = ctypes.windll.kernel32.GetStdHandle(-10 - fd) + #循环处理分割后的消息部分 while parts: text = parts.pop(0) + #如果部分是文本,写入并刷新流 if text: self.stream.write(text) self.stream.flush() + #如果还有部分,取出下一个部分作为参数 if parts: params = parts.pop(0) + #如果句柄有效,将参数分割并转换为整数,初始化颜色代码 if h is not None: params = [int(p) for p in params.split(';')] color = 0 @@ -137,10 +147,12 @@ 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: # 如果消息包含加粗,则在重置后加粗 + elif self.bold in message: + # 如果消息包含加粗,则在重置后加粗 reset = self.reset + self.bold else: reset = self.reset @@ -148,20 +160,23 @@ class ColorizingStreamHandler(logging.StreamHandler): return reset def colorize(self, message, levelno): - # 根据日志级别给消息上色 + # 根据日志级别给消息上色 if levelno in self.level_map and self.is_tty: bg, fg, bold = self.level_map[levelno] params = [] + #如果背景色有效,添加背景色参数 if bg in self.color_map: params.append(str(self.color_map[bg] + 40)) + #如果前景色有效,添加前景色参数 if fg in self.color_map: params.append(str(self.color_map[fg] + 30)) - + #如果需要加粗,添加加粗参数 if bold: params.append('1') + #如果参数和消息都有效,检查消息是否有前缀(空格),并提取出来 if params and message: if message.lstrip() != message: prefix = re.search(r"\s+", message).group(0)