refactor: better key handling yet again

This commit is contained in:
Dobin
2024-06-02 11:14:50 +01:00
parent c11bd73534
commit 0ff76d87c7
3 changed files with 29 additions and 14 deletions
+18 -12
View File
@@ -14,19 +14,13 @@ class Config(object):
self.ShowCommandOutput: bool = False self.ShowCommandOutput: bool = False
self.debug: bool = False self.debug: bool = False
self.data_fixups = None
self.data_fixup_entries = None
# Default keys # Default keys
self.xor_key: int = 0x42 self.xor_key: int = 0x42
self.xor_key2: bytes = b"\x13\x37" 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): def load(self):
with open(CONFIG_FILE) as jsonfile: with open(CONFIG_FILE) as jsonfile:
@@ -42,19 +36,31 @@ class Config(object):
print("Using ENV: server={}, overwriting all others from config.yaml".format( print("Using ENV: server={}, overwriting all others from config.yaml".format(
server)) server))
def make_encryption_keys(self):
# keys # keys
if self.data["xor_key"] == "": if self.data["xor_key"] == "":
self.xor_key = random.randint(0, 255) self.xor_key = random.randint(0, 255)
else: else:
self.xor_key = self.data["xor_key"] self.xor_key = self.data["xor_key"]
if self.data["xor_key2"] == "": if self.data["xor_key2"] == "":
self.xor_key = os.urandom(2) self.xor_key2 = os.urandom(2)
else: else:
self.xor_key = self.data["xor_key2"] self.xor_key2 = self.data["xor_key2"]
logger.info("XOR Key: {} XOR2 Key: {}".format(
logger.info("-( Payload encryption keys: XOR: {} XOR2: {}".format(
self.xor_key, self.xor_key2 self.xor_key, self.xor_key2
)) ))
def getConfigPath(self):
return CONFIG_FILE
def getConfig(self):
return self.data
def get(self, value): def get(self, value):
return self.data.get(value, "") return self.data.get(value, "")
+6
View File
@@ -9,3 +9,9 @@ path_sgn: 'C:\tools\sgn2.1\sgn.exe'
#avred_server: "http://192.168.88.65:8001" #avred_server: "http://192.168.88.65:8001"
avred_server: "" avred_server: ""
# leave empty for random on each build
xor_key: ""
xor_key2: ""
#xor_key: "\x42"
#xor_key2: "\x13\x37"
+3
View File
@@ -105,6 +105,9 @@ def start(settings: Settings) -> int:
# And logs # And logs
observer.reset() observer.reset()
# Set new keys
config.make_encryption_keys()
# Prepare the project: copy all files to projects/<project_name>/ # Prepare the project: copy all files to projects/<project_name>/
prepare_project(settings.project_name, settings) prepare_project(settings.project_name, settings)