Guest User

Untitled

a guest
Jun 20th, 2017
26
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdint.h>
  3.  
  4. typedef uint8_t BYTE;
  5.  
  6. typedef struct
  7. {
  8.     BYTE a;
  9.     BYTE b;
  10.     BYTE c;
  11.     BYTE d;
  12. }JBLK;
  13.  
  14. int main(int argc, char* argv[])
  15. {
  16.     if(argc!=2)
  17.     {
  18.         fprintf(stderr, "Usage: ./recover image\n");
  19.         return 1;
  20.     }
  21.     FILE* src=fopen(argv[1],"r");
  22.     if(src==NULL)
  23.     {
  24.         fprintf(stderr, "File cannot be opened\n");
  25.         return 2;
  26.     }
  27.     int c=0;
  28.     fpos_t pos;
  29.     while(fgetc(src)!=EOF)
  30.     {
  31.         JBLK tmp;
  32.         fread(&tmp,sizeof(JBLK),1,src);
  33.         if(tmp.a==255&&tmp.b==216&&tmp.c==255&&(tmp.d>=224&&tmp.d<=239))
  34.         {
  35.             char tg[50];
  36.             sprintf(tg,"00%i.jpg",c);
  37.             FILE* tgt=fopen(tg,"w");
  38.             fwrite(&tmp,sizeof(JBLK),1,tgt);
  39.             fread(&tmp,sizeof(JBLK),1,src);
  40.             while(!(tmp.a==255&&tmp.b==216&&tmp.c==255&&(tmp.d>=224&&tmp.d<=239)))
  41.             {
  42.                 fwrite(&tmp,sizeof(JBLK),1,tgt);
  43.                 fgetpos(src,&pos);
  44.                 fread(&tmp,sizeof(JBLK),1,src);
  45.             }
  46.             fclose(tgt);
  47.             c++;
  48.             fsetpos(src,&pos);
  49.         }
  50.         else continue;
  51.     }
  52.     fclose(src);
  53.     return 0;
  54. }
RAW Paste Data