Files
2026-04-26 14:05:44 +08:00

48 lines
1.9 KiB
Python

import logging
from lib.modules.service_mgr import Service_Toolkit
from lib.modules.firewall import Firewall_Toolkit
from lib.module_base import ModuleBase
class WINRM_Toolkit(ModuleBase):
name = "winrm"
description = "Enable/Disable WINRM service."
@staticmethod
def register_parser(subparsers):
p = subparsers.add_parser(WINRM_Toolkit.name, help=WINRM_Toolkit.description)
p.add_argument("-enable", action="store_true", help="Enable WINRM service")
p.add_argument("-disable", action="store_true", help="Disable WINRM service")
return p
@staticmethod
def run(iWbemLevel1Login, dcom, options, **kwargs):
toolkit = WINRM_Toolkit(iWbemLevel1Login, dcom)
if options.enable:
toolkit.WINRM_Wrapper("enable")
if options.disable:
toolkit.WINRM_Wrapper("disable")
def __init__(self, iWbemLevel1Login, dcom):
self.logger = logging.getLogger("wmiexec-pro")
self.iWbemLevel1Login = iWbemLevel1Login
self.dcom = dcom
def WINRM_Wrapper(self, flag):
executer_Service = Service_Toolkit(self.iWbemLevel1Login, self.dcom)
if flag == "enable":
executer_Service.control_Service(action="start", serviceName="WINRM")
self.configure_Firewall(flag)
self.logger.log(100, "Enabled WINRM service and configure firewall.")
else:
executer_Service.control_Service(action="stop", serviceName="WINRM")
self.configure_Firewall(flag)
self.logger.log(100, "Disabled WINRM service and configure firewall.")
def configure_Firewall(self,flag):
winrm_Firewall = Firewall_Toolkit(self.iWbemLevel1Login)
self.logger.info("Configuring winrm firewall...")
id_List = ["WINRM-HTTP-In-TCP", "WINRM-HTTP-In-TCP-PUBLIC"]
for i in id_List:
winrm_Firewall.rule_Controller(i,flag)