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
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
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
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