Advertisement
Guest User

recovery.c

a guest
Feb 9th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. /**
  2.  * recover.c
  3.  *
  4.  * Computer Science 50
  5.  * Problem Set 4
  6.  *
  7.  * Recovers JPEGs from a forensic image.
  8.  */
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12.  
  13. int main(void)
  14. {
  15.  
  16.     // open input file
  17.     FILE* inptr = fopen("card.raw", "r");
  18.     if (inptr == NULL)
  19.     {
  20.         printf("Could not open %s.\n", "card.raw");
  21.         return 2;
  22.     }
  23.    
  24.     unsigned char buffer[512];
  25.     int num = 0;
  26.     char name[10];
  27.    
  28.     // read from file 512 bites each time until EOF
  29.     while (!feof(inptr))
  30.     {
  31.         fread(&buffer, 512, 1, inptr);
  32.        
  33.         sprintf(name, "%i.jpg", num);
  34.         FILE* outptr = fopen(name, "a");
  35.    
  36.         // if found start of JPEG
  37.         if(buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff &&
  38.         (buffer[3] == 0xe0 || buffer[3] == 0xe1 || buffer[3] == 0xe2 || buffer[3] == 0xe3 ||
  39.         buffer[3] == 0xe4 || buffer[3] == 0xe5 || buffer[3] == 0xe6 || buffer[3] == 0xe7 ||
  40.         buffer[3] == 0xe8 || buffer[3] == 0xe9 || buffer[3] == 0xea || buffer[3] == 0xeb ||
  41.         buffer[3] == 0xec || buffer[3] == 0xed || buffer[3] == 0xee || buffer[3] == 0xef ))
  42.         {
  43.             printf("%i ", num++;);
  44.            
  45.             // increase number for naming of file
  46.             num++;
  47.        
  48.         }
  49.        
  50.         fwrite(&buffer, 512, 1, outptr);
  51.  
  52.        
  53.         // fclose(outptr);
  54.     }
  55.    
  56.     fclose(inptr);
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement