mirror of
https://github.com/dobin/SuperMega
synced 2026-06-03 01:27:11 +00:00
refactor: better key handling yet again
This commit is contained in:
@@ -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, "")
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user