Files
scripts/rom_analyse/anal.pl
2025-06-03 23:03:08 +02:00

70 lines
1.7 KiB
Perl

#!/usr/bin/perl -w
use strict;
use warnings;
use File::Find qw(finddepth);
use File::Slurp;
use Data::Printer;
use Digest::MD5 qw(md5 md5_hex md5_base64);
#sudo mount -t cifs //gw004/Versaflow /media/versashare -o username=administrator,password=8-Tung,domain=mlands
my @f = read_file('missing_bios_report.txt');
my $md = {};
write_file('anal.txt');
write_file('doppel.txt');
my $bios = '';
for my $l ( @f ) {
$l = $l =~ s/\R//r ;
if ( $l =~ /Path\: (.*)/ ) {
$bios = $1;
} elsif ( $l =~ /^ (................................)/ ) {
$md->{$1} = $bios;
# append_file('anal.txt', "$1 - $bios\n")
}
}
my $ctx = Digest::MD5->new;
my $share = '/mnt/d/Konsolen/BIOS';
#my $share = '/media/versashare/versaflow1/Protocol/';
my $multimd5 = {};
my @analyse;
finddepth( sub {
return if($_ eq '.' || $_ eq '..'|| $_ eq '.keep' );
if ( -f $File::Find::name ) {
open(my $fh, '<', $File::Find::name) or die "cannot open file $File::Find::name";
$ctx->addfile($fh);
my $m = $ctx->hexdigest;
if ( $multimd5->{$m} ) {
my @temp = @{$multimd5->{$m}};
push @temp, $File::Find::name;
$multimd5->{$m} = \@temp;
} else {
my @temp = ( $File::Find::name );
$multimd5->{$m} = \@temp;
}
if ($md->{ uc $m }) {
push @analyse, "$md->{ uc $m } <- $File::Find::name";
}
close($fh);
}
}, $share);
for my $k ( sort @analyse ) {
append_file('anal.txt', "$k\n")
}
for my $k ( keys %{$multimd5} ) {
if ( scalar @{ $multimd5->{$k} } > 1 ) {
for my $i ( @{ $multimd5->{$k} } ) {
append_file('doppel.txt', "$k - $i\n")
}
}
}