Guest User

Untitled

a guest
Jun 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #!/web/usr/perl/bin/perl
  2.  
  3. use Getopt::Long;
  4.  
  5. GetOptions("i|image=s" => \$image, "q|quiet" => \$quiet);
  6. if(!$image) {
  7. print STDERR "Usage: $0 -i /path/to/image.jpg";
  8. exit 2;
  9. }
  10.  
  11. open(JPEG, "$image") or die "Unable to open $image: $!\n";
  12. binmode(JPEG);
  13. read(JPEG, $s, 2);
  14. if($s eq "\xFF\xD8") {
  15. while(1) {
  16. my($ff, $mark) = unpack("CC", jpeg_groper(2));
  17. last if($ff != 0xFF);
  18. next if(($mark == 0xDA) || ($mark == 0xD9));
  19. my $len = unpack("n", jpeg_groper(2));
  20. last if($len < 0);
  21. $len -= 2;
  22. if($len < 0) {
  23. qprint("CORRUPT JPEG: Bad Field Length");
  24. exit 1;
  25. }
  26. jpeg_groper($len) if($len);
  27. }
  28. } else {
  29. qprint("CORRUPT JPEG: Invalid Magic Number");
  30. exit 1;
  31. }
  32. close(JPEG);
  33. qprint("JPEG OK");
  34. exit 0;
  35.  
  36. sub jpeg_groper {
  37. my $b;
  38. my $n = read(JPEG, $b, @_[0]);
  39. if(!defined $n) {
  40. qprint("CORRUPT JPEG: Read Failed");
  41. return -1;
  42. } elsif ($n != @_[0]) {
  43. qprint("CORRUPT JPEG: Short Read (@_[0] of $n)");
  44. return -1;
  45. }
  46. return $b;
  47. }
  48.  
  49. sub qprint {
  50. print @_[0] . "\n" if(!$quiet);
  51. }
Add Comment
Please, Sign In to add comment