From b77662c1cd8703299faddc0d63dbe16e1437ba13 Mon Sep 17 00:00:00 2001
From: Diego Capriotti <59816245+naksyn@users.noreply.github.com>
Date: Mon, 11 Mar 2024 12:47:48 +0100
Subject: [PATCH 1/8] Cooler image
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
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
From 3fc17a257c42c0815783950ff2e16cab07cc89a5 Mon Sep 17 00:00:00 2001
From: Jorge Gimenez
Date: Mon, 1 Apr 2024 15:52:16 +0200
Subject: [PATCH 2/8] Replaced find_module with find_spec as the former is
deprecated since Python 3.12
---
Server/Modules/DonPAPI.py | 38 +++++++++++-------------
Server/Modules/LaZagne.py | 38 +++++++++++-------------
Server/Modules/bh.py | 38 +++++++++++-------------
Server/Modules/clr.py | 37 +++++++++++------------
Server/Modules/moduleshifting.py | 38 +++++++++++-------------
Server/Modules/pythonmemorymodule.py | 44 +++++++++++++---------------
Server/Modules/secretsdump.py | 38 +++++++++++-------------
Server/Modules/tunnel-socks5.py | 41 ++++++++++++--------------
8 files changed, 140 insertions(+), 172 deletions(-)
diff --git a/Server/Modules/DonPAPI.py b/Server/Modules/DonPAPI.py
index e62c0a8..4e8c426 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(self.repoName, 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 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):
diff --git a/Server/Modules/LaZagne.py b/Server/Modules/LaZagne.py
index 15a31de..ab9985a 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(self.repoName, 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 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):
diff --git a/Server/Modules/bh.py b/Server/Modules/bh.py
index 19625d7..fecfc9b 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(self.repoName, 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 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):
diff --git a/Server/Modules/clr.py b/Server/Modules/clr.py
index 432a04a..e8959ce 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(self.repoName, 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, '')
diff --git a/Server/Modules/moduleshifting.py b/Server/Modules/moduleshifting.py
index 7b618a8..02fa366 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(self.repoName, 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 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):
diff --git a/Server/Modules/pythonmemorymodule.py b/Server/Modules/pythonmemorymodule.py
index 940d54c..07ce6ee 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(self.repoName, 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 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):
@@ -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..dd2ce4d 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(self.repoName, 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 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):
diff --git a/Server/Modules/tunnel-socks5.py b/Server/Modules/tunnel-socks5.py
index 2d37f98..bda4039 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(self.repoName, 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 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, '')
From 77ceb37d9dd1f5f4ce9c3bca7e69b85573bccd1e Mon Sep 17 00:00:00 2001
From: Jorge Gimenez
Date: Mon, 1 Apr 2024 16:05:46 +0200
Subject: [PATCH 3/8] Replaced find_module with find_spec as the former is
deprecated since Python 3.12
---
Server/Modules/DonPAPI.py | 6 +++---
Server/Modules/LaZagne.py | 6 +++---
Server/Modules/bh.py | 6 +++---
Server/Modules/clr.py | 6 +++---
Server/Modules/moduleshifting.py | 6 +++---
Server/Modules/pythonmemorymodule.py | 6 +++---
Server/Modules/secretsdump.py | 6 +++---
Server/Modules/tunnel-socks5.py | 6 +++---
8 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/Server/Modules/DonPAPI.py b/Server/Modules/DonPAPI.py
index 4e8c426..5f59ad8 100644
--- a/Server/Modules/DonPAPI.py
+++ b/Server/Modules/DonPAPI.py
@@ -247,7 +247,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -294,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 ab9985a..b2e0a6a 100644
--- a/Server/Modules/LaZagne.py
+++ b/Server/Modules/LaZagne.py
@@ -252,7 +252,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -299,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 fecfc9b..d63c511 100644
--- a/Server/Modules/bh.py
+++ b/Server/Modules/bh.py
@@ -241,7 +241,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -288,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):
diff --git a/Server/Modules/clr.py b/Server/Modules/clr.py
index e8959ce..94d3b43 100644
--- a/Server/Modules/clr.py
+++ b/Server/Modules/clr.py
@@ -244,7 +244,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -290,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 02fa366..bb47da0 100644
--- a/Server/Modules/moduleshifting.py
+++ b/Server/Modules/moduleshifting.py
@@ -212,7 +212,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -259,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 07ce6ee..76ea6ac 100644
--- a/Server/Modules/pythonmemorymodule.py
+++ b/Server/Modules/pythonmemorymodule.py
@@ -219,7 +219,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -266,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):
diff --git a/Server/Modules/secretsdump.py b/Server/Modules/secretsdump.py
index dd2ce4d..8210091 100644
--- a/Server/Modules/secretsdump.py
+++ b/Server/Modules/secretsdump.py
@@ -239,7 +239,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -286,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 bda4039..4f71309 100644
--- a/Server/Modules/tunnel-socks5.py
+++ b/Server/Modules/tunnel-socks5.py
@@ -247,7 +247,7 @@ def _get_info(self, fullname):
def _get_source(self, fullname):
"""Get the source code for the requested module"""
- submodule, is_package, relpath = self._get_info(self.repoName, fullname)
+ 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]
@@ -293,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):
From 55cc2d672ebb5ac78812a221197f36f6e4111eed Mon Sep 17 00:00:00 2001
From: Evan Lewis
Date: Wed, 18 Sep 2024 22:21:59 -0600
Subject: [PATCH 4/8] Update ldap3.zip
This updated version of LDAP fixes an issue in NTLM handling where MD4 may not be available already on the system. If this was the case it would try to load the MD4 module from Crypto which is a dependency we did not have installed. This version will load MD4 from Cryptodome, which we are already installing in memory
---
Server/Dependencies/bloodhound/ldap3.zip | Bin 438830 -> 468060 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/Server/Dependencies/bloodhound/ldap3.zip b/Server/Dependencies/bloodhound/ldap3.zip
index 394620407d912d408946fa6eb61ab82d59b7ddb0..99422e439dd9d0f5826f6237322159ad8920d5b4 100644
GIT binary patch
literal 468060
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