def run(self):
        key = None
        pwd_found = []
        try:
            key = OpenKey(HKEY_CURRENT_USER, 'Software\\FTPware\\CoreFTP\\Sites')
        except Exception as e:
            self.debug(str(e))

        if key:
            num_profiles = winreg.QueryInfoKey(key)[0]
            elements = ['Host', 'Port', 'User', 'PW']
            for n in range(num_profiles):
                name_skey = winreg.EnumKey(key, n)
                skey = OpenKey(key, name_skey)
                num = winreg.QueryInfoKey(skey)[1]
                values = {}
                for nn in range(num):
                    k = winreg.EnumValue(skey, nn)
                    if k[0] in elements:
                        if k[0] == 'User':
                            values['Login'] = k[1]
                            pwd_found.append(values)
                        if k[0] == 'PW':
                            try:
                                values['Password'] = self.decrypt(k[1])
                            except Exception as e:
                                self.debug(str(e))
                        else:
                            values[k[0]] = k[1]

                winreg.CloseKey(skey)
            winreg.CloseKey(key)

            return pwd_found
Beispiel #2
0
    def get_credentials(self):
        try:
            key = OpenKey(HKEY_CURRENT_USER,
                          'Software\\Martin Prikryl\\WinSCP 2\\Sessions')
        except Exception as e:
            self.debug(str(e))
            return False

        pwd_found = []
        num_profiles = winreg.QueryInfoKey(key)[0]
        for n in range(num_profiles):
            name_skey = winreg.EnumKey(key, n)
            skey = OpenKey(key, name_skey)
            num = winreg.QueryInfoKey(skey)[1]

            values = {}
            elements = {
                'HostName': 'URL',
                'UserName': '******',
                'PortNumber': 'Port',
                'Password': '******'
            }
            for nn in range(num):
                k = winreg.EnumValue(skey, nn)

                for e in elements:
                    if k[0] == e:
                        if e == 'Password':
                            try:
                                values['Password'] = self.decrypt_password(
                                    username=values.get('Login', ''),
                                    hostname=values.get('URL', ''),
                                    _hash=k[1])
                            except Exception as e:
                                self.debug(str(e))
                        else:
                            values[elements[k[0]]] = str(k[1])

            if num != 0:
                if 'Port' not in values:
                    values['Port'] = '22'

                pwd_found.append(values)

            winreg.CloseKey(skey)
        winreg.CloseKey(key)

        return pwd_found
Beispiel #3
0
 def check_winscp_installed(self):
     try:
         key = OpenKey(HKEY_CURRENT_USER, 'Software\\Martin Prikryl\\WinSCP 2\\Configuration\\Security')
         return key
     except Exception as e:
         self.debug(str(e))
         return False
 def get_default_database(self):
     try:
         key = OpenKey(HKEY_CURRENT_USER, 'Software\\ACS\\PuTTY Connection Manager')
         db = string_to_unicode(winreg.QueryValueEx(key, 'DefaultDatabase')[0])
         winreg.CloseKey(key)
         return db
     except Exception:
         return False
Beispiel #5
0
 def is_in_domain(self):
     """
     Return the context of the host
     If a domain controller is set we are in an active directory.
     """
     try:
         key = OpenKey(HKEY_LOCAL_MACHINE, r'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Group Policy\\History\\')
         val, _ = _winreg.QueryValueEx(key, 'DCName')
         _winreg.CloseKey(key)
         return val
     except Exception:
         return False