Advertisement
tfattah

Recover Final 2 Copy Final!!!.exe

Sep 19th, 2018
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. // recovers missing JPEG memory card data
  2.  
  3. #include <stdio.h>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.     // ensure proper usage
  8.     if (argc != 2)
  9.     {
  10.         fprintf(stderr, "Usage: 1 command line argument (filename)!\n");
  11.         return 1;
  12.     }
  13.  
  14.     // open command line file
  15.     FILE *infile = fopen(argv[1], "r");
  16.     if (argv[1] == NULL) // ensures file exists - fopen returns null if this step is not performed
  17.     {
  18.         fprintf(stderr, "Could not open %s.\n", argv[1]);
  19.         return 2;
  20.     }
  21.  
  22.     // declare variables
  23.     unsigned char buffer[512]; // for checking first 4 bytes
  24.     int file_counter = 0; // counts number of files for sprintf
  25.     char filename[8]; // array for sprintf
  26.     FILE *newfile; // where jpegs will live
  27.  
  28.     // read 512 bytes
  29.     while(fread(&buffer, 1, 512, infile) == 512) // want to read one block 512 times. fread returns number of blocks successfully
  30.     //read, so we want to be able to parse less than 512 for EOF
  31.     {
  32.         // bitwise & operator for checking first 4 bytes of JPEG
  33.         if (buffer[0] == 0xff &&
  34.             buffer[1] == 0xd8 &&
  35.             buffer[2] == 0xff &&
  36.             (buffer[3] & 0xf0) == 0xe0)
  37.         {
  38.             if (file_counter > 0) // to close previous file after first run of loop
  39.             {
  40.                 fclose(newfile); // close previous file before opening new one
  41.             }
  42.  
  43.             sprintf(filename, "%03i.jpg", file_counter);
  44.             file_counter++;
  45.             newfile = fopen(filename, "w");
  46.             if (newfile == NULL) // ensures file exists - fopen returns null if this step is not performed
  47.             {
  48.                 fprintf(stderr, "Could not open %s.\n", filename);
  49.                 return 2;
  50.             }
  51.             fwrite(&buffer, 1, 512, newfile);
  52.  
  53.         }
  54.         // jpeg larger than 1 block
  55.         if (file_counter > 0)
  56.         {
  57.             fwrite(&buffer, 1, 512, newfile);
  58.         }
  59.     }
  60.  
  61.     fclose(infile);
  62.     fclose(newfile);
  63.  
  64.     // success
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement