mirror of
https://github.com/XiaoliChan/wmiexec-Pro.git
synced 2026-10-18 22:50:54 +08:00
681cc87406
Signed-off-by: XiaoliChan <30458572+XiaoliChan@users.noreply.github.com>
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
import sys
|
|
import logging
|
|
|
|
from rich.theme import Theme
|
|
from rich.console import Console
|
|
from rich.logging import RichHandler
|
|
from datetime import datetime
|
|
|
|
|
|
class FlushHandler(logging.StreamHandler):
|
|
def emit(self, record):
|
|
record_time = datetime.fromtimestamp(record.created).strftime("[%y/%m/%d %H:%M:%S]")
|
|
level_name = record.levelname.ljust(8)
|
|
msg = self.format(record)
|
|
formatted_msg = f"\r{record_time} {level_name} {msg}"
|
|
stream = self.stream
|
|
stream.write(formatted_msg)
|
|
stream.flush()
|
|
|
|
class Log:
|
|
def __init__(self, log_level=logging.DEBUG):
|
|
self.log_level = log_level
|
|
self.wmi_console = Console(
|
|
soft_wrap=True,
|
|
tab_size=4,
|
|
theme=Theme(
|
|
{"logging.level.success": "green"}
|
|
)
|
|
)
|
|
logging.basicConfig(
|
|
format="%(message)s",
|
|
datefmt="[%X]",
|
|
handlers=[],
|
|
encoding="utf-8"
|
|
)
|
|
logging.getLogger("impacket").disabled = True
|
|
self.setup_logger1()
|
|
self.setup_logger2()
|
|
|
|
def setup_logger1(self):
|
|
logger = logging.getLogger("wmiexec-pro")
|
|
logging.addLevelName(100, "SUCCESS")
|
|
logger.setLevel(self.log_level)
|
|
logger.propagate = False
|
|
if not logger.handlers:
|
|
logger.addHandler(
|
|
RichHandler(
|
|
console=self.wmi_console,
|
|
rich_tracebacks=True,
|
|
tracebacks_show_locals=False
|
|
)
|
|
)
|
|
|
|
def setup_logger2(self):
|
|
# Set up logging
|
|
logger = logging.getLogger("CountdownLogger")
|
|
logger.setLevel(self.log_level)
|
|
logger.propagate = False
|
|
# Use the custom handler
|
|
if not logger.handlers:
|
|
logger.addHandler(
|
|
FlushHandler(sys.stdout)
|
|
) |