Codebase list python-lsassy / run/d0e13edf-8701-4115-b190-867e42f4c3d5/upstream lsassy / credential.py
run/d0e13edf-8701-4115-b190-867e42f4c3d5/upstream

Tree @run/d0e13edf-8701-4115-b190-867e42f4c3d5/upstream (Download .tar.gz)

credential.py @run/d0e13edf-8701-4115-b190-867e42f4c3d5/upstreamraw · history · blame

class Credential:
    """
    Credential class to hold extracted credentials from remote hosts
    """
    def __init__(self, username, password=None, domain=None, lmhash=None, nthash=None, sha1=None, ticket=None, ssp=None, masterkey=None):
        self.username = username
        self.password = password
        self.domain = domain
        self.lmhash = lmhash
        self.nthash = nthash
        self.sha1 = sha1
        self.ticket = ticket
        self.ssp = ssp
        self.masterkey = masterkey

    def get_username(self):
        """
        Get credential username
        :return: username
        """
        return self.username

    def get_password(self):
        """
        Get credential password
        :return: password
        """
        return self.password

    def get_domain(self):
        """
        Get credential domain
        :return: domain
        """
        return self.domain

    @staticmethod
    def _decode(data):
        """
        Ugly trick because of mixed content coming back from pypykatz
        Can be either string, bytes, None
        """
        try:
            return data.decode('utf-8', 'backslashreplace')
        except Exception:
            return data

    def get_object(self):
        """
        Transform credential instance into dictionary
        :return: dict with credentials information
        """
        return {
            "username": self.username,
            "password": self.password,
            "domain": self.domain,
            "lmhash": self.lmhash,
            "nthash": self.nthash,
            "sha1": self.sha1,
            "ticket": self.ticket,
            "ssp": self.ssp,
            "masterkey": self.masterkey,
        }