X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/rsbs2/blobdiff_plain/e433bc0319a0fb565bb1f52df5f48abf78de171b..f1fd0cb05e4ee07857ef2fd32131728739088b7f:/rsb-lz.c diff --git a/rsb-lz.c b/rsb-lz.c index 2497702..b624265 100644 --- a/rsb-lz.c +++ b/rsb-lz.c @@ -719,7 +719,7 @@ void extract_lz_file(unsigned char *buf, unsigned char *name) r3 = r11 + 4; r5 = *((unsigned int*)r3); - printf(", length: %d\n", r5); + printf(", length: %d", r5); if ((r7 = malloc(r5)) == NULL) { perror("malloc"); @@ -766,13 +766,20 @@ void search_lz_sections(unsigned char *fw, int len) for(i = 0; i < len - 4; i++) { if (*((unsigned int*)(fw+i)) == LZ_MAGIC) { j = fw + i - 1; - if (*j != 0x00) - continue; printf("0x%02x: ", i); j--; while (j > fw) { + if (!strncmp("SP3", (char*)j, 3)) { + unsigned char fname[5]; + + bzero(fname, sizeof(fname)); + memcpy(fname, j, 4); + printf("Firmware found: %s", fname); + extract_lz_file(fw + i, fname); + break; + } if (*j == 0x00) { - if ( *(j+1) != '/') { + if ((*(j+1) != '/')) { printf("ignoring...\n"); break; }