Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * recover.c
- *
- * Computer Science 50
- * Problem Set 4
- *
- * Recovers JPEGs from a forensic image.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- typedef uint8_t BYTE;
- int main(void)
- {
- // open CF card
- FILE* inptr = fopen("card.raw", "r");
- if (inptr == NULL)
- {
- printf("Could not open \n");
- return 1;
- }
- int j = 0; // counter for jpeg file
- char title[8]; // file name for jpeg file
- BYTE block[512]; // 512byte chunk of memory
- while(!feof(inptr))
- {
- fread(block, sizeof(block), 1, inptr);
- if(block[0] == 0xff && block[1] == 0xd8 && block[2] == 0xff && (block[3] >= 0xe0 && block[3] <= 0xef))
- {
- sprintf(title, "%03d.jpg", j);
- j++;
- FILE* outptr = fopen(title,"a");
- do
- {
- fwrite(block, sizeof(block), 1, outptr);
- fread(block, sizeof(block), 1, inptr);
- } while(block[0] != 0xff || block[1] != 0xd8 || block[2] != 0xff || (block[3] < 0xe0 || block[3] > 0xef));
- fclose(outptr);
- }
- }
- fclose(inptr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement