1
0
mirror of https://github.com/hashcat/hashcat.git synced 2025-08-05 05:15:20 +00:00

Merge pull request #4362 from matrix/update_benchmark_deep

Updated benchmark_deep.pl
This commit is contained in:
hashcat-bot 2025-07-27 23:19:25 +02:00 committed by GitHub
commit 5308e5fc92
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 67 additions and 22 deletions

View File

@ -185,6 +185,7 @@
- Backend: Splitting backend_ctx_devices_init into smaller runtime-specific functions - Backend: Splitting backend_ctx_devices_init into smaller runtime-specific functions
- Backend: Updated OpenCL/CUDA/HIP/Metal API's - Backend: Updated OpenCL/CUDA/HIP/Metal API's
- Backend: Updated filename chksum format to prevent invalid cache on Apple Silicon when switching arch - Backend: Updated filename chksum format to prevent invalid cache on Apple Silicon when switching arch
- Benchmark: Updated benchmark_deep.pl with OS detection, Apple cache cleaning way and other minor changes
- Brain: Added sanity check and corresponding error message for invalid --brain-port values - Brain: Added sanity check and corresponding error message for invalid --brain-port values
- Building: Support building windows binaries on macOS using MinGW - Building: Support building windows binaries on macOS using MinGW
- Debug: Added -g to build_options if DEBUG >= 1 (only with HIP and OpenCL) - Debug: Added -g to build_options if DEBUG >= 1 (only with HIP and OpenCL)

View File

@ -8,6 +8,11 @@
use strict; use strict;
use warnings; use warnings;
use File::Path qw(make_path);
my $startTime = time();
my $workdir = "test_benchmarkDeep_$startTime";
my $nvidia_cache = "~/.nv"; my $nvidia_cache = "~/.nv";
my $amd_cache = "~/.AMD"; my $amd_cache = "~/.AMD";
my $hashcat_path = "."; my $hashcat_path = ".";
@ -18,13 +23,20 @@ my $workload_profile = 3;
my $runtime = 11; my $runtime = 11;
my $sleep_sec = 13; my $sleep_sec = 13;
my $default_mask = "?a?a?a?a?a?a?a"; my $default_mask = "?a?a?a?a?a?a?a";
my $result = "result.txt"; my $result = "$workdir/result.txt";
my $old_hashcat = 0; # requires to have ran with new hashcat before to create the hashfiles my $old_hashcat = 0; # requires to have ran with new hashcat before to create the hashfiles
my $repeats = 0; my $repeats = 0;
my $cpu_benchmark = 0; my $cpu_benchmark = 0;
print "\nHardware preparations... You may need to adjust some settings and probably can ignore some of the error\n\n"; unless (-d $workdir)
{
make_path($workdir) or die "Unable to create '$workdir': $!";
}
print "\n[$workdir] > Hardware preparations... You may need to adjust some settings and probably can ignore some of the error\n\n";
if ($^O eq 'linux')
{
system ("echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor"); system ("echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor");
if ($cpu_benchmark == 1) if ($cpu_benchmark == 1)
@ -40,12 +52,32 @@ else
system ("nvidia-settings -a GPUPowerMizerMode=1 -a GPUFanControlState=1 -a GPUTargetFanSpeed=100"); system ("nvidia-settings -a GPUPowerMizerMode=1 -a GPUFanControlState=1 -a GPUTargetFanSpeed=100");
} }
print "\n\nStarting...\n\n";
system ("rm -rf $nvidia_cache"); system ("rm -rf $nvidia_cache");
system ("rm -rf $amd_cache"); system ("rm -rf $amd_cache");
}
elsif ($^O eq 'darwin')
{
open(my $stderr_orig, '>&', STDERR) or die "Can't dup STDERR: $!";
open(STDERR, '>', '/dev/null') or die "Can't redirect STDERR: $!";
chomp(my $temp_dir = `getconf DARWIN_USER_TEMP_DIR`);
chomp(my $cache_dir = `getconf DARWIN_USER_CACHE_DIR`);
# cleanup OpenCL cache
system("find \"$temp_dir\" -mindepth 1 -exec rm -rf {} +");
# cleanup OpenCL/Metal cache
system("rm -rf \"$cache_dir/com.apple.metalfe/*\"");
# cleanup Metal cache
system("rm -rf \"$cache_dir/com.apple.metal/*\"");
open(STDERR, '>&', $stderr_orig) or die "Can't restore STDERR: $!";
}
system ("rm -rf $kernels_cache"); system ("rm -rf $kernels_cache");
print "\n\n[$workdir] > Starting...\n\n";
my @hash_types_selection = my @hash_types_selection =
( (
0, 0,
@ -379,6 +411,8 @@ for my $hash_type (@hash_types)
my $mask = $default_mask; my $mask = $default_mask;
my $filepath = "$workdir/tmp.hash.$hash_type";
if ($old_hashcat == 0) if ($old_hashcat == 0)
{ {
my $module = get_module ($hash_type); my $module = get_module ($hash_type);
@ -386,7 +420,7 @@ for my $hash_type (@hash_types)
my $st_hash = $module->{"st_hash"}; my $st_hash = $module->{"st_hash"};
my $is_binary = $module->{"is_binary"}; my $is_binary = $module->{"is_binary"};
open (OUT, ">", "tmp.hash.$hash_type") or die; open (OUT, ">", $filepath) or die;
if ($is_binary) if ($is_binary)
{ {
@ -406,7 +440,7 @@ for my $hash_type (@hash_types)
( (
$hashcat_bin, "-D2", $hashcat_bin, "-D2",
"--quiet", "--quiet",
"tmp.hash.$hash_type", $filepath,
"--keep-guessing", "--keep-guessing",
"--self-test-disable", "--self-test-disable",
"--markov-disable", "--markov-disable",
@ -435,13 +469,13 @@ for my $hash_type (@hash_types)
push (@command, "--backend-devices", $device); push (@command, "--backend-devices", $device);
} }
print "Executing command: ", join (" ", @command), "\n"; print "[$workdir] > Executing command: ", join (" ", @command), "\n";
my $final_speed = 0; my $final_speed = 0;
for (my $i = 0; $i <= $repeats; $i++) for (my $i = 0; $i <= $repeats; $i++)
{ {
printf ("Run #%d\n", $i); printf ("[$workdir] > Run #%d\n", $i);
open (IN, "-|", @command, "--runtime", 1); open (IN, "-|", @command, "--runtime", 1);
close (IN); close (IN);
@ -493,6 +527,16 @@ for my $hash_type (@hash_types)
open (OUT, ">>", $result) or die; open (OUT, ">>", $result) or die;
print OUT $final_speed, "\n"; print OUT $final_speed, "\n";
close (OUT); close (OUT);
my $endTime = time();
my $elapsed = $endTime - $startTime;
my $days = int($elapsed / 86400);
my $hours = int(($elapsed % 86400) / 3600);
my $minutes = int(($elapsed % 3600) / 60);
my $seconds = $elapsed % 60;
printf("\n\n[$workdir] > All tests done in: %d days, %02d hours, %02d minutes, %02d seconds\n", $days, $hours, $minutes, $seconds);
} }
sub get_module sub get_module