Advertisement
tkamiten

recover.c ver.2

Mar 19th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 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. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <stdint.h>
  12.  
  13. typedef uint8_t BYTE;
  14.  
  15. int main(void)
  16. {
  17. // open CF card
  18. FILE* inptr = fopen("card.raw", "r");
  19. if (inptr == NULL)
  20. {
  21. printf("Could not open \n");
  22. return 1;
  23. }
  24.  
  25.  
  26.  
  27. int j = 0; // counter for jpeg file
  28. char title[8]; // file name for jpeg file
  29. BYTE block[512]; // 512byte chunk of memory
  30. int f = 0; // state jpg not found
  31. FILE* outptr = NULL;
  32.  
  33. while(!feof(inptr))
  34. {
  35. fread(block, sizeof(block), 1, inptr); // read 512byte from cf card
  36.  
  37. if(block[0] == 0xff && block[1] == 0xd8 && block[2] == 0xff && (block[3] >= 0xe0 && block[3] <= 0xef))
  38. {
  39. if(outptr != NULL)
  40. fclose(outptr);
  41.  
  42. f = 1; // jpeg found
  43. sprintf(title, "%03d.jpg", j);
  44. j++;
  45.  
  46. outptr = fopen(title,"a");
  47. }
  48. if(f == 1)
  49. fwrite(block, sizeof(block), 1, outptr);
  50. }
  51. fclose(inptr);
  52. fclose(outptr);
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement