From 0ff76d87c7be9722f17348a4241ea3ab03204730 Mon Sep 17 00:00:00 2001 From: Dobin Date: Sun, 2 Jun 2024 11:14:50 +0100 Subject: [PATCH] refactor: better key handling yet again --- config.py | 32 +++++++++++++++++++------------- config.yaml | 8 +++++++- supermega.py | 3 +++ 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/config.py b/config.py index 5de37ac..97d7970 100644 --- a/config.py +++ b/config.py @@ -14,19 +14,13 @@ class Config(object): self.ShowCommandOutput: bool = False self.debug: bool = False + self.data_fixups = None + self.data_fixup_entries = None + # Default keys self.xor_key: int = 0x42 self.xor_key2: bytes = b"\x13\x37" - self.data_fixups = None - self.data_fixup_entries = None - - - def getConfigPath(self): - return CONFIG_FILE - - def getConfig(self): - return self.data def load(self): with open(CONFIG_FILE) as jsonfile: @@ -41,20 +35,32 @@ class Config(object): self.data["server"] = { "server": server } print("Using ENV: server={}, overwriting all others from config.yaml".format( server)) - + + + def make_encryption_keys(self): # keys if self.data["xor_key"] == "": self.xor_key = random.randint(0, 255) else: self.xor_key = self.data["xor_key"] + if self.data["xor_key2"] == "": - self.xor_key = os.urandom(2) + self.xor_key2 = os.urandom(2) else: - self.xor_key = self.data["xor_key2"] - logger.info("XOR Key: {} XOR2 Key: {}".format( + self.xor_key2 = self.data["xor_key2"] + + logger.info("-( Payload encryption keys: XOR: {} XOR2: {}".format( self.xor_key, self.xor_key2 )) + + def getConfigPath(self): + return CONFIG_FILE + + + def getConfig(self): + return self.data + def get(self, value): return self.data.get(value, "") diff --git a/config.yaml b/config.yaml index d3eae5a..968eaa5 100644 --- a/config.yaml +++ b/config.yaml @@ -8,4 +8,10 @@ path_runshc: 'C:\Users\hacker\Source\Repos\masm_shc\out\build\x64-Debug\runshc\r path_sgn: 'C:\tools\sgn2.1\sgn.exe' #avred_server: "http://192.168.88.65:8001" -avred_server: "" \ No newline at end of file +avred_server: "" + +# leave empty for random on each build +xor_key: "" +xor_key2: "" +#xor_key: "\x42" +#xor_key2: "\x13\x37" diff --git a/supermega.py b/supermega.py index 0595c4f..3d3f735 100644 --- a/supermega.py +++ b/supermega.py @@ -105,6 +105,9 @@ def start(settings: Settings) -> int: # And logs observer.reset() + # Set new keys + config.make_encryption_keys() + # Prepare the project: copy all files to projects// prepare_project(settings.project_name, settings)