Creation of a protection system against unintentional updates to Epsilon 16 (foundation) + Recovery Improvement (#37)

This commit is contained in:
devdl11
2021-11-11 18:20:16 +01:00
committed by GitHub
parent b304a2ff7d
commit e8a1bc6149
63 changed files with 1893 additions and 565 deletions

View 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!")

View File

@@ -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