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;
}