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>
- int main(void)
- {
- // open input file
- FILE* inptr = fopen("card.raw", "r");
- if (inptr == NULL)
- {
- printf("Could not open %s.\n", "card.raw");
- return 2;
- }
- unsigned char buffer[512];
- int num = 0;
- char name[10];
- // read from file 512 bites each time until EOF
- while (!feof(inptr))
- {
- fread(&buffer, 512, 1, inptr);
- sprintf(name, "%i.jpg", num);
- FILE* outptr = fopen(name, "a");
- // if found start of JPEG
- if(buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff &&
- (buffer[3] == 0xe0 || buffer[3] == 0xe1 || buffer[3] == 0xe2 || buffer[3] == 0xe3 ||
- buffer[3] == 0xe4 || buffer[3] == 0xe5 || buffer[3] == 0xe6 || buffer[3] == 0xe7 ||
- buffer[3] == 0xe8 || buffer[3] == 0xe9 || buffer[3] == 0xea || buffer[3] == 0xeb ||
- buffer[3] == 0xec || buffer[3] == 0xed || buffer[3] == 0xee || buffer[3] == 0xef ))
- {
- printf("%i ", num++;);
- // increase number for naming of file
- num++;
- }
- fwrite(&buffer, 512, 1, outptr);
- // fclose(outptr);
- }
- fclose(inptr);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement