Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/web/usr/perl/bin/perl
- use Getopt::Long;
- GetOptions("i|image=s" => \$image, "q|quiet" => \$quiet);
- if(!$image) {
- print STDERR "Usage: $0 -i /path/to/image.jpg";
- exit 2;
- }
- open(JPEG, "$image") or die "Unable to open $image: $!\n";
- binmode(JPEG);
- read(JPEG, $s, 2);
- if($s eq "\xFF\xD8") {
- while(1) {
- my($ff, $mark) = unpack("CC", jpeg_groper(2));
- last if($ff != 0xFF);
- next if(($mark == 0xDA) || ($mark == 0xD9));
- my $len = unpack("n", jpeg_groper(2));
- last if($len < 0);
- $len -= 2;
- if($len < 0) {
- qprint("CORRUPT JPEG: Bad Field Length");
- exit 1;
- }
- jpeg_groper($len) if($len);
- }
- } else {
- qprint("CORRUPT JPEG: Invalid Magic Number");
- exit 1;
- }
- close(JPEG);
- qprint("JPEG OK");
- exit 0;
- sub jpeg_groper {
- my $b;
- my $n = read(JPEG, $b, @_[0]);
- if(!defined $n) {
- qprint("CORRUPT JPEG: Read Failed");
- return -1;
- } elsif ($n != @_[0]) {
- qprint("CORRUPT JPEG: Short Read (@_[0] of $n)");
- return -1;
- }
- return $b;
- }
- sub qprint {
- print @_[0] . "\n" if(!$quiet);
- }
Add Comment
Please, Sign In to add comment