#!/usr/bin/perl

$output = $ARGV[0];
$print = $ARGV[1];
$directory = $ARGV[2];

 

if(!$output or !$print){
system("clear");
print("\nGeen goede optie meegegeven!");
print("\nLet er wel op dat de eerste 2 opties verplicht zijn.");
print("\nDe derde optie is niet verplicht, deze is standaard '/sbin'.");
print("\n\nUsage: ./MD5.pl (output file) (print/noprint) [directory]");
print("\nExample: ./MD5.pl /home/user/md5sbin.txt print /sbin ");
print("\nExample 1: ./MD5.pl /home/user/md5sbin.txt noprint /home/user");
print("\nExample 2: ./MD5.pl /home/user/md5sbin.txt print\n\n");
} else {
if ($print ne "noprint"){
system("clear");
}
if(!$directory){
$directory = "/sbin";
}

      opendir(SYSTEEMDIR, "$directory") ||
die("\nKan de systeemdirectory '$directory' niet openen!\n");

while($file1 = readdir(SYSTEEMDIR)){

use Digest::MD5;

my $file = shift || "$directory/$file1";
open(FILE, $file);
binmode(FILE);

    $md5 = Digest::MD5->new;
while (<FILE>) {
$md5->add($_);
}
close(FILE);

open(BESTAND, ">>$output") or die("Output bestand '$output' kan niet worden aangemaakt");

$md5code = $md5->b64digest;

if($print eq "print"){
print $md5code." $file\n";
}

print BESTAND $md5code." $file\n";

close(BESTAND);

}

print("\n\nMD5 Hashwaardes opgeslagen in het bestand: '$output'\n\n");
closedir(SYSTEEMDIR);
}