# Copyright: (c) 2018, Jordan Borean (@jborean93) # MIT License (see LICENSE or https://opensource.org/licenses/MIT) import hashlib import hmac import os import struct from ntlm_auth.compute_response import ComputeResponse from ntlm_auth.constants import AvId, AvFlags, MessageTypes, NegotiateFlags, \ NTLM_SIGNATURE from ntlm_auth.rc4 import ARC4 try: from collections import OrderedDict except ImportError: # pragma: no cover from ordereddict import OrderedDict class TargetInfo(object): def __init__(self): self.fields = OrderedDict() def __setitem__(self, key, value): self.fields[key] = value def __getitem__(self, key): return self.fields.get(key, None) def __delitem__(self, key): del self.fields[key] def pack(self): if AvId.MSV_AV_EOL in self.fields: del self[AvId.MSV_AV_EOL] data = b'' for attribute_type, attribute_value in self.fields.items(): data += struct.pack(" 48: self.version = struct.unpack("