I'm having a lot of trouble with recover. I have written some code, just to get the basic structure. I was trying to iterate over the raw file until the end, printing when stumbled upon a jpeg. Anyway, when I run my code. It stops after 4 blocks of 512B, having encountered 1 jpeg. How do I make my code run over the whole raw file?. Here's my code: //typedef uint8_t BYTE; int main(int argc, char* argv[]) { //open card image FILE* file = fopen("card.raw", "r"); //initialize counters int counter = 0; int iterations = 0; //open buffer BYTE buffer[512]; do { //store 512B in buffer fread(&buffer, sizeof(BYTE), 512, file); //check for start of jpeg if(buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && buffer[3] == 0xe0) { printf("JPEG found\n"); counter++; } else if(buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && buffer[3] == 0xe1) { printf("JPEG found\n"); counter++; } iterations++; } while(buffer[0] != 0x00 && buffer[1] != 0x00 && buffer[2] != 0x00 && buffer[3] != 0x00); printf("Counter is %d\n", counter); printf("Iterations is %d\n", iterations); fclose(file); return 0; }