docs: def get_lm_challenge_response(self):
          """
          [MS-NLMP] v28.0 2016-07-14
  
          3.3.1 - NTLM v1 Authentication
          3.3.2 - NTLM v2 Authentication
  
          This method returns the LmChallengeResponse key based on the ntlm_compatibility chosen
          and the target_info supplied by the CHALLENGE_MESSAGE. It is quite different from what
          is set in the document as it combines the NTLMv1, NTLM2 and NTLMv2 methods into one
          and calls separate methods based on the ntlm_compatibility flag chosen.
  
          :return: response (LmChallengeResponse) - The LM response to the server challenge. Computed by the client
          """
          if self._negotiate_flags & NegotiateFlags.NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY and self._ntlm_compatibility < 3:
              response = ComputeResponse._get_LMv1_with_session_security_response(self._client_challenge)
  
          elif 0 <= self._ntlm_compatibility <= 1:
              response = ComputeResponse._get_LMv1_response(self._password, self._server_challenge)
          elif self._ntlm_compatibility == 2:
              # Based on the compatibility level we don't want to use LM responses, ignore the session_base_key as it is returned in nt
              response, ignore_key = ComputeResponse._get_NTLMv1_response(self._password, self._server_challenge)
          else:
              """
              [MS-NLMP] v28.0 page 45 - 2016-07-14
  
              3.1.5.12 Client Received a CHALLENGE_MESSAGE from the Server
              If NTLMv2 authentication is used and the CHALLENGE_MESSAGE TargetInfo field has an MsvAvTimestamp present,
              the client SHOULD NOT send the LmChallengeResponse and SHOULD send Z(24) instead.
              """
  
              response = ComputeResponse._get_LMv2_response(self._user_name, self._password, self._domain_name,
                                                            self._server_challenge,
                                                            self._client_challenge)
              if self._server_target_info is not None:
                  timestamp = self._server_target_info[TargetInfo.MSV_AV_TIMESTAMP]
                  if timestamp is not None:
                      response = b'\0' * 24
  
          return response