Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main(int argc, char *argv[]) // forensic card file taken as argv[1]
- {
- if (argc != 2) // check for correct number of arguments
- {
- printf("Usage: file name"); // return usage error
- return 1; // end program, return fail
- }
- FILE *card; // forensic card file pointer
- card = fopen(argv[1], "r"); // open forensic card for reading
- if (!card)
- {
- fclose(card); // close invalid card file
- printf("ERROR: Could not open file");
- return 1; // end program, return fail
- }
- int fileCount = 0; // Counter for sequential file names
- char nextFile[8]; // Jpeg file name strings
- unsigned char buffer[512]; // read/write buffer
- FILE *newJpeg; // recovered jpeg file pointer
- char ch; // check for EOF
- while ((ch = fgetc(card)) != EOF) // For the full length of the forensic card file
- {
- fread(buffer, sizeof(unsigned char), 512, card); // read from card to buffer
- for (int i = 0; i <= 512; i++) // DEBUGGING
- printf("%d : %p : %c\n", i, &buffer[i], buffer[i]); // DEBUGGING
- // If first jpeg header is detected
- if (fileCount == 0 && buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
- {
- sprintf(nextFile, "img_%03d.jpg", fileCount); // set first file name
- newJpeg = fopen(nextFile, "w"); // open first jpeg file
- fileCount++; // increase file count for next file name
- fwrite(buffer, sizeof(unsigned char), 512, newJpeg); // write from buffer to jpeg file
- continue;
- }
- // If next jpeg header is detected
- if (buffer[0] == 0xff && buffer[1] == 0xd8 && buffer[2] == 0xff && (buffer[3] & 0xf0) == 0xe0)
- {
- fclose(newJpeg); // close last jpeg file
- sprintf(nextFile, "img_%03d.jpg", fileCount); // set current file name
- newJpeg = fopen(nextFile, "w"); // open current jpeg file
- fileCount++; // increase file count for next file name
- fwrite(buffer, sizeof(unsigned char), 512, newJpeg); // write from buffer to jpeg file
- continue;
- }
- fwrite(buffer, sizeof(unsigned char), 512, newJpeg); // write from buffer to jpeg file
- }
- fclose(newJpeg); // close final jpeg file
- fclose(card); // close forensic card file
- return 0; // end program, return success
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement