From cc81d31ab6be343bd76112b1b6db37090a176232 Mon Sep 17 00:00:00 2001 From: _N0x Date: Wed, 9 Feb 2022 05:10:15 +0100 Subject: [PATCH] First test to read and edit the firmware, added defines for the required offsets etc --- firmware.bin | Bin 0 -> 32768 bytes include/change_key.h | 32 +++++++++++++++++++++++ include/firmware_handling.h | 11 ++++++++ src/change_key.c | 10 ++++++++ src/firmware_handling.c | 49 ++++++++++++++++++++++++++++++++++++ src/main.c | 27 ++++++++++++++++++++ 6 files changed, 129 insertions(+) create mode 100644 firmware.bin create mode 100644 include/change_key.h create mode 100644 include/firmware_handling.h create mode 100644 src/change_key.c create mode 100644 src/firmware_handling.c create mode 100644 src/main.c diff --git a/firmware.bin b/firmware.bin new file mode 100644 index 0000000000000000000000000000000000000000..3e478deb202031cb1feb665f245103022cdfc54b GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/include/change_key.h b/include/change_key.h new file mode 100644 index 0000000..d39ed56 --- /dev/null +++ b/include/change_key.h @@ -0,0 +1,32 @@ +/* changeKey.h */ + +/* Define for key offsets */ +#define KEY1 0x00005149 +#define KEY2 0x00005179 +#define KEY3 0x00005181 +#define KEY4 0x00005189 +#define KEY5 0x00005190 +#define KEY6 0x00005182 +#define KEY7 0x0000517a +#define KEY8 0x0000514a + +/* Define for prog1-8 offset */ +#define PROG1_OFFSET 0x0000539C +#define PROG2_OFFSET 0x000056BC +#define PROG3_OFFSET 0x000059DC +#define PROG4_OFFSET 0x00005CFC +#define PROG5_OFFSET 0x0000601C +#define PROG6_OFFSET 0x0000633C +#define PROG7_OFFSET 0x0000665C +#define PROG8_OFFSET 0x0006977C + +typedef struct key_prog key_prog; +struct key_prog +{ + int offset; + int key_settings[100][8]; +}; + + +void set_key_value(char* firmware_buffer, int key, int value); + diff --git a/include/firmware_handling.h b/include/firmware_handling.h new file mode 100644 index 0000000..07eeb91 --- /dev/null +++ b/include/firmware_handling.h @@ -0,0 +1,11 @@ +typedef struct fbuffer_t fbuffer_t; +struct fbuffer_t +{ + char* buffer; + int size; +}; + +/* reads in the firmware file into a buffer */ +fbuffer_t* get_firmware_buffer(char* filename); +void write_firmware_buffer(char* filename, fbuffer_t* p_fb); + diff --git a/src/change_key.c b/src/change_key.c new file mode 100644 index 0000000..9166d04 --- /dev/null +++ b/src/change_key.c @@ -0,0 +1,10 @@ +#include +#include +#include +#include + +#include "../include/change_key.h" + +void set_key_value(char* firmware_buffer, int key, int value) { + memset(firmware_buffer + key, value, 1); +} diff --git a/src/firmware_handling.c b/src/firmware_handling.c new file mode 100644 index 0000000..2447fa1 --- /dev/null +++ b/src/firmware_handling.c @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include + +#include "../include/firmware_handling.h" + +fbuffer_t* get_firmware_buffer(char* filename) { + + fbuffer_t buffer; + fbuffer_t* p_fb = &buffer; + + FILE *firmware = fopen(filename, "rb"); + if(!firmware) { + perror("Error while reading in Firmware File.\r\nExiting."); + exit(EXIT_FAILURE); + } + + struct stat sb; + if(stat(filename, &sb) == -1) { + perror("Error while reading Firmware metadata.\r\nExiting."); + exit(EXIT_FAILURE); + } + + p_fb->size = sb.st_size; + p_fb->buffer = malloc(p_fb->size); + fread(p_fb->buffer, p_fb->size, 1, firmware); + + /* for testing if the buffer could be read correclty */ + // printf("buffer size: %d", p_fb->size); + + fclose(firmware); + + return p_fb; +} + +void write_firmware_buffer(char* filename, fbuffer_t* p_fb) { + + FILE *firmware_file = fopen(filename, "wb+"); + if(!firmware_file) { + perror("Error while opening in Firmware File.\r\nExiting."); + exit(EXIT_FAILURE); + } + + fwrite(p_fb->buffer, p_fb->size, 1, firmware_file); + + fclose(firmware_file); +} diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..e5ba17b --- /dev/null +++ b/src/main.c @@ -0,0 +1,27 @@ +#include +#include +#include + +#include "../include/change_key.h" +#include "../include/firmware_handling.h" + +int main (int argc, char *argv[]) +{ + fbuffer_t* p_fb = get_firmware_buffer(argv[1]); + + set_key_value(p_fb->buffer, KEY8, 0x1E); + + /* for debugging -> print content of buffer to terminal */ + /* + for(int i = 0; isize; i++){ + putc(isprint(fb->buffer[i]) ? fb->buffer[i] : '.', stdout); + } + */ + + char str[50]; + + sprintf(str, "new_%s", argv[1]); + + write_firmware_buffer(str, p_fb); + return 0; +}