void extract_files(unsigned char *fw, int len)
{
unsigned char *pos;
- unsigned int type, length;
+ unsigned int length;
+ unsigned char unknown[5];
char *name;
pos = fw + 0x28;
pos = fw + *((unsigned int*)pos);
while (pos < (fw + len)) {
- type = *((unsigned int*)pos);
- pos += 4;
- /* ??? */
- pos++;
+ unknown[0] = *pos; pos++;
+ unknown[1] = *pos; pos++;
+ unknown[2] = *pos; pos++;
+ unknown[3] = *pos; pos++;
+ unknown[4] = *pos; pos++;
length = *((unsigned int*)pos);
pos += 4;
name = (char*)pos;
printf("EOF reached\n");
break;
}
- printf("%s: type: 0x%x, length: %d", name, type, length);
+ printf("%s: unknown: %02x %02x %02x %02x %02x, length: %d",
+ name, unknown[0], unknown[1], unknown[2], unknown[3],
+ unknown[4], length);
if (length > 0) {
write_file(name, pos, length);