mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
Creation of a protection system against unintentional updates to Epsilon 16 (foundation) + Recovery Improvement (#37)
This commit is contained in:
29
build/device/secure_ext.py
Normal file
29
build/device/secure_ext.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import sys
|
||||
import os
|
||||
|
||||
MAGIK_CODE = [0x64, 0x6c, 0x31, 0x31, 0x23, 0x39, 0x38, 0x33, 0x35]
|
||||
MAGIK_POS = [0x03, 0xb, 0x44f]
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
print("Patching external bin...")
|
||||
ext_path = os.path.join(os.getcwd(), sys.argv[1])
|
||||
if not os.path.isfile(ext_path):
|
||||
print("Error: File not found!")
|
||||
sys.exit(-1)
|
||||
file = open(ext_path, "r+b")
|
||||
first_packet = bytearray(file.read(2048))
|
||||
for b in first_packet:
|
||||
if b != 255:
|
||||
print("Error: Invalid file! (maybe already patched?)")
|
||||
sys.exit(-1)
|
||||
|
||||
for i in range(4):
|
||||
first_packet[MAGIK_POS[0] + i] = MAGIK_CODE[i]
|
||||
for i in range(4):
|
||||
first_packet[MAGIK_POS[1] + i] = MAGIK_CODE[i + 5]
|
||||
for i in range(len(MAGIK_CODE)):
|
||||
first_packet[MAGIK_POS[2] + i] = MAGIK_CODE[i]
|
||||
|
||||
file.seek(0)
|
||||
file.write(first_packet)
|
||||
print("External bin Patched!")
|
||||
@@ -27,11 +27,11 @@ $(BUILD_DIR)/%.map: $(BUILD_DIR)/%.elf
|
||||
@echo "LDMAP $@"
|
||||
$(Q) $(LD) $^ $(LDFLAGS) -Wl,-M -Wl,-Map=$@ -o /dev/null
|
||||
|
||||
.PHONY: %_memory_map
|
||||
%_memory_map: $(BUILD_DIR)/%.map
|
||||
@echo "========== MEMORY MAP ========="
|
||||
$(Q) awk -f build/device/memory_map.awk < $<
|
||||
@echo "==============================="
|
||||
.PHONY: mapfile
|
||||
mapfile:
|
||||
$(BUILD_DIR)/%.map: $(BUILD_DIR)/%.elf
|
||||
@echo "LDMAP $@"
|
||||
$(Q) $(LD) $^ $(LDFLAGS) -Wl,-M -Wl,-Map=$@ -o /dev/null
|
||||
|
||||
.PHONY: openocd
|
||||
openocd:
|
||||
@@ -72,3 +72,4 @@ binpack: $(BUILD_DIR)/flasher.light.bin $(BUILD_DIR)/epsilon.onboarding.two_bina
|
||||
cp $(BUILD_DIR)/epsilon.onboarding.internal.bin $(BUILD_DIR)/epsilon.onboarding.external.bin $(BUILD_DIR)/binpack
|
||||
cd $(BUILD_DIR) && for binary in flasher.light.bin epsilon.onboarding.internal.bin epsilon.onboarding.external.bin; do shasum -a 256 -b binpack/$${binary} > binpack/$${binary}.sha256;done
|
||||
cd $(BUILD_DIR) && tar cvfz binpack-$(MODEL)-`git rev-parse HEAD | head -c 7`.tgz binpack/*
|
||||
$(PYTHON) build/device/secure_ext.py $(BUILD_DIR)/epsilon.onboarding.external.bin
|
||||
Reference in New Issue
Block a user