From 0237701f2e3331be2fb707cca3fb696cd9ea117a Mon Sep 17 00:00:00 2001 From: Ryan Means Date: Wed, 18 Apr 2018 14:15:46 -0700 Subject: [PATCH] Add configuration to force NTLMv2 --- wmi_client_wrapper/wrapper.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/wmi_client_wrapper/wrapper.py b/wmi_client_wrapper/wrapper.py index 43effa9..88c462c 100644 --- a/wmi_client_wrapper/wrapper.py +++ b/wmi_client_wrapper/wrapper.py @@ -19,19 +19,26 @@ class WmiClientWrapper(object): it directly to end-users. """ - def __init__(self, username="Administrator", password=None, host=None, namespace='//./root/cimv2', delimiter="\01"): + def __init__(self, + username="Administrator", + password=None, + host=None, + namespace='//./root/cimv2', + delimiter="\01", + force_ntlm_v2=False): assert username assert password - assert host # assume host is up + assert host # assume host is up # store the credentials for later self.username = username self.password = password self.host = host + self.force_ntlm_v2 = force_ntlm_v2 self.delimiter = delimiter self.namespace = namespace - + def _make_credential_args(self): """ Makes credentials that get passed to wmic. This assembles a list of @@ -54,7 +61,7 @@ def _make_credential_args(self): arguments.append(hostaddr) # the format for namespace space= "--namespace={namespace}".format(namespace=self.namespace) - + arguments.append(space) return arguments @@ -62,7 +69,15 @@ def _setup_params(self): """ Makes extra configuration that gets passed to wmic. """ - return ["--delimiter={delimiter}".format(delimiter=self.delimiter)] + + params = [] + + if (self.force_ntlm_v2): + params.append('--option=client ntlmv2 auth=Yes') + + params.append("--delimiter={delimiter}".format(delimiter=self.delimiter)) + + return params def _construct_query(self, klass): """