Added tunings/ folder in order to replace hashcat.hctune. Configuration files with *.hctune suffix are automatically load on startup

pull/3421/head
jsteube 2 years ago
parent 7668ec5865
commit c8350eb555

@ -39,6 +39,7 @@
- Added support to use 'John the Ripper' hash format with hash-type 18200
- Added the hash extraction scripts from the tools folder also to beta/release versions
- Added user advice if a hash throws 'token length exception'
- Added tunings/ folder in order to replace hashcat.hctune. Configuration files with *.hctune suffix are automatically load on startup
##
## Bugs

@ -9,7 +9,7 @@
#include <stdio.h>
#include <errno.h>
#define TUNING_DB_FILE "hashcat.hctune"
#define TUNING_DB_SUFFIX "hctune"
int sort_by_tuning_db_alias (const void *v1, const void *v2);
int sort_by_tuning_db_entry (const void *v1, const void *v2);

@ -505,9 +505,9 @@ endif
.PHONY: install
ifeq ($(SHARED),1)
install: install_docs install_shared install_library install_library_dev install_kernels install_modules install_hashcat
install: install_docs install_shared install_library install_library_dev install_tunings install_kernels install_modules install_hashcat
else
install: install_docs install_shared install_kernels install_modules install_hashcat
install: install_docs install_shared install_tunings install_kernels install_modules install_hashcat
endif
# we need this extra target to make sure that for parallel builds (i.e. 2+ Makefile targets could possible run at the same time)
@ -560,9 +560,14 @@ install_docs: install_make_shared_root
.PHONY: install_shared
install_shared: install_make_shared_root
$(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)
$(INSTALL) -m 644 hashcat.hctune $(DESTDIR)$(SHARED_FOLDER)/
$(INSTALL) -m 644 hashcat.hcstat2 $(DESTDIR)$(SHARED_FOLDER)/
.PHONY: install_tunings
install_tunings: install_shared
$(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/tunings
$(FIND) tunings/ -mindepth 1 -type d -execdir $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/tunings/{} \;
$(FIND) tunings/ -mindepth 1 -type f -execdir $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/tunings/{} \;
.PHONY: install_kernels
install_kernels: install_shared
$(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/OpenCL

@ -391,49 +391,6 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
return line_len;
}
/*
Find the right -n value for your GPU:
=====================================
1. For example, to find the value for 8900, first create a valid hash for 8900 as follows:
$ ./hashcat --example-hashes -m 8900 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.8900
2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
$ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.8900 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 8900 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
$ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
*/
const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra)
{
const char *extra_tuningdb_block =
"DEVICE_TYPE_CPU * 8900 1 N A\n"
"DEVICE_TYPE_GPU * 8900 1 N A\n"
"GeForce_GTX_980 * 8900 1 29 A\n"
"GeForce_GTX_1080 * 8900 1 15 A\n"
"GeForce_RTX_2080_Ti * 8900 1 68 A\n"
"GeForce_RTX_3060_Ti * 8900 1 51 A\n"
"GeForce_RTX_3070 * 8900 1 46 A\n"
"GeForce_RTX_3090 * 8900 1 82 A\n"
"GeForce_RTX_3090_Ti * 8900 1 84 A\n"
"NVS_510 * 8900 1 12 A\n"
"ALIAS_AMD_RX480 * 8900 1 15 A\n"
"ALIAS_AMD_Vega64 * 8900 1 30 A\n"
"ALIAS_AMD_MI100 * 8900 1 79 A\n"
"ALIAS_AMD_RX6900XT * 8900 1 123 A\n"
;
return extra_tuningdb_block;
}
void module_init (module_ctx_t *module_ctx)
{
module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT;
@ -457,7 +414,7 @@ void module_init (module_ctx_t *module_ctx)
module_ctx->module_esalt_size = MODULE_DEFAULT;
module_ctx->module_extra_buffer_size = module_extra_buffer_size;
module_ctx->module_extra_tmp_size = module_extra_tmp_size;
module_ctx->module_extra_tuningdb_block = module_extra_tuningdb_block;
module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT;
module_ctx->module_forced_outfile_format = MODULE_DEFAULT;
module_ctx->module_hash_binary_count = MODULE_DEFAULT;
module_ctx->module_hash_binary_parse = MODULE_DEFAULT;

@ -348,47 +348,6 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
return line_len;
}
/*
Find the right -n value for your GPU:
=====================================
1. For example, to find the value for 9300, first create a valid hash for 9300 as follows:
$ ./hashcat --example-hashes -m 9300 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.9300
2. Now let it iterate through all -n values to a certain point. In this case, I'm using 1032, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
$ export i=8; while [ $i -ne 1032 ]; do echo $i; ./hashcat --quiet tmp.hash.9300 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 9300 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+8)); done | tee x
3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
$ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
*/
const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra)
{
const char *extra_tuningdb_block =
"DEVICE_TYPE_CPU * 9300 1 N A\n"
"DEVICE_TYPE_GPU * 9300 1 N A\n"
"GeForce_GTX_980 * 9300 1 128 A\n"
"GeForce_GTX_1080 * 9300 1 256 A\n"
"GeForce_RTX_2080_Ti * 9300 1 528 A\n"
"GeForce_RTX_3060_Ti * 9300 1 256 A\n"
"GeForce_RTX_3070 * 9300 1 368 A\n"
"GeForce_RTX_3090 * 9300 1 984 A\n"
"ALIAS_AMD_RX480 * 9300 1 232 A\n"
"ALIAS_AMD_Vega64 * 9300 1 440 A\n"
"ALIAS_AMD_MI100 * 9300 1 1000 A\n"
"ALIAS_AMD_RX6900XT * 9300 1 720 A\n"
;
return extra_tuningdb_block;
}
void module_init (module_ctx_t *module_ctx)
{
module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT;
@ -412,7 +371,7 @@ void module_init (module_ctx_t *module_ctx)
module_ctx->module_esalt_size = MODULE_DEFAULT;
module_ctx->module_extra_buffer_size = module_extra_buffer_size;
module_ctx->module_extra_tmp_size = module_extra_tmp_size;
module_ctx->module_extra_tuningdb_block = module_extra_tuningdb_block;
module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT;
module_ctx->module_forced_outfile_format = MODULE_DEFAULT;
module_ctx->module_hash_binary_count = MODULE_DEFAULT;
module_ctx->module_hash_binary_parse = MODULE_DEFAULT;

@ -454,48 +454,6 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
return line_len;
}
/*
Find the right -n value for your GPU:
=====================================
1. For example, to find the value for 15700, first create a valid hash for 15700 as follows:
$ ./hashcat --example-hashes -m 15700 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.15700
2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
$ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.15700 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 15700 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
$ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
*/
const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra)
{
const char *extra_tuningdb_block =
"DEVICE_TYPE_CPU * 15700 1 N A\n"
"DEVICE_TYPE_GPU * 15700 1 1 A\n"
"GeForce_GTX_980 * 15700 1 24 A\n"
"GeForce_GTX_1080 * 15700 1 28 A\n"
"GeForce_RTX_2080_Ti * 15700 1 68 A\n"
"GeForce_RTX_3060_Ti * 15700 1 11 A\n"
"GeForce_RTX_3070 * 15700 1 22 A\n"
"GeForce_RTX_3090 * 15700 1 82 A\n"
"GeForce_RTX_3090_Ti * 22700 1 84 A\n"
"ALIAS_AMD_RX480 * 15700 1 58 A\n"
"ALIAS_AMD_Vega64 * 15700 1 53 A\n"
"ALIAS_AMD_MI100 * 15700 1 120 A\n"
"ALIAS_AMD_RX6900XT * 15700 1 56 A\n"
;
return extra_tuningdb_block;
}
void module_init (module_ctx_t *module_ctx)
{
module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT;
@ -519,7 +477,7 @@ void module_init (module_ctx_t *module_ctx)
module_ctx->module_esalt_size = module_esalt_size;
module_ctx->module_extra_buffer_size = module_extra_buffer_size;
module_ctx->module_extra_tmp_size = module_extra_tmp_size;
module_ctx->module_extra_tuningdb_block = module_extra_tuningdb_block;
module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT;
module_ctx->module_forced_outfile_format = MODULE_DEFAULT;
module_ctx->module_hash_binary_count = MODULE_DEFAULT;
module_ctx->module_hash_binary_parse = MODULE_DEFAULT;

@ -393,49 +393,6 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
return line_len;
}
/*
Find the right -n value for your GPU:
=====================================
1. For example, to find the value for 22700, first create a valid hash for 22700 as follows:
$ ./hashcat --example-hashes -m 22700 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.22700
2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
$ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.22700 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 22700 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
$ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
*/
const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra)
{
const char *extra_tuningdb_block =
"DEVICE_TYPE_CPU * 22700 1 N A\n"
"DEVICE_TYPE_GPU * 22700 1 N A\n"
"GeForce_GTX_980 * 22700 1 29 A\n"
"GeForce_GTX_1080 * 22700 1 15 A\n"
"GeForce_RTX_2080_Ti * 22700 1 68 A\n"
"GeForce_RTX_3060_Ti * 22700 1 51 A\n"
"GeForce_RTX_3070 * 22700 1 46 A\n"
"GeForce_RTX_3090 * 22700 1 82 A\n"
"GeForce_RTX_3090_Ti * 22700 1 84 A\n"
"NVS_510 * 22700 1 12 A\n"
"ALIAS_AMD_RX480 * 22700 1 15 A\n"
"ALIAS_AMD_Vega64 * 22700 1 30 A\n"
"ALIAS_AMD_MI100 * 22700 1 79 A\n"
"ALIAS_AMD_RX6900XT * 22700 1 123 A\n"
;
return extra_tuningdb_block;
}
void module_init (module_ctx_t *module_ctx)
{
module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT;
@ -459,7 +416,7 @@ void module_init (module_ctx_t *module_ctx)
module_ctx->module_esalt_size = MODULE_DEFAULT;
module_ctx->module_extra_buffer_size = module_extra_buffer_size;
module_ctx->module_extra_tmp_size = module_extra_tmp_size;
module_ctx->module_extra_tuningdb_block = module_extra_tuningdb_block;
module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT;
module_ctx->module_forced_outfile_format = MODULE_DEFAULT;
module_ctx->module_hash_binary_count = MODULE_DEFAULT;
module_ctx->module_hash_binary_parse = MODULE_DEFAULT;

@ -415,49 +415,6 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
return line_len;
}
/*
Find the right -n value for your GPU:
=====================================
1. For example, to find the value for 27700, first create a valid hash for 27700 as follows:
$ ./hashcat --example-hashes -m 27700 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.27700
2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
$ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.27700 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 27700 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
$ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
*/
const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra)
{
const char *extra_tuningdb_block =
"DEVICE_TYPE_CPU * 27700 1 N A\n"
"DEVICE_TYPE_GPU * 27700 1 N A\n"
"GeForce_GTX_980 * 27700 1 29 A\n"
"GeForce_GTX_1080 * 27700 1 15 A\n"
"GeForce_RTX_2080_Ti * 27700 1 68 A\n"
"GeForce_RTX_3060_Ti * 27700 1 51 A\n"
"GeForce_RTX_3070 * 27700 1 46 A\n"
"GeForce_RTX_3090 * 27700 1 82 A\n"
"GeForce_RTX_3090_Ti * 27700 1 84 A\n"
"NVS_510 * 27700 1 12 A\n"
"ALIAS_AMD_RX480 * 27700 1 15 A\n"
"ALIAS_AMD_Vega64 * 27700 1 30 A\n"
"ALIAS_AMD_MI100 * 27700 1 79 A\n"
"ALIAS_AMD_RX6900XT * 27700 1 123 A\n"
;
return extra_tuningdb_block;
}
void module_init (module_ctx_t *module_ctx)
{
module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT;
@ -481,7 +438,7 @@ void module_init (module_ctx_t *module_ctx)
module_ctx->module_esalt_size = MODULE_DEFAULT;
module_ctx->module_extra_buffer_size = module_extra_buffer_size;
module_ctx->module_extra_tmp_size = module_extra_tmp_size;
module_ctx->module_extra_tuningdb_block = module_extra_tuningdb_block;
module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT;
module_ctx->module_forced_outfile_format = MODULE_DEFAULT;
module_ctx->module_hash_binary_count = MODULE_DEFAULT;
module_ctx->module_hash_binary_parse = MODULE_DEFAULT;

@ -478,49 +478,6 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
return line_len;
}
/*
Find the right -n value for your GPU:
=====================================
1. For example, to find the value for 28200, first create a valid hash for 28200 as follows:
$ ./hashcat --example-hashes -m 28200 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.28200
2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
$ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.28200 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 28200 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
$ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
*/
const char *module_extra_tuningdb_block (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra)
{
const char *extra_tuningdb_block =
"DEVICE_TYPE_CPU * 28200 1 N A\n"
"DEVICE_TYPE_GPU * 28200 1 N A\n"
"GeForce_GTX_980 * 28200 1 29 A\n"
"GeForce_GTX_1080 * 28200 1 15 A\n"
"GeForce_RTX_2080_Ti * 28200 1 68 A\n"
"GeForce_RTX_3060_Ti * 28200 1 51 A\n"
"GeForce_RTX_3070 * 28200 1 46 A\n"
"GeForce_RTX_3090 * 28200 1 82 A\n"
"GeForce_RTX_3090_Ti * 28200 1 84 A\n"
"NVS_510 * 28200 1 12 A\n"
"ALIAS_AMD_RX480 * 28200 1 15 A\n"
"ALIAS_AMD_Vega64 * 28200 1 30 A\n"
"ALIAS_AMD_MI100 * 28200 1 79 A\n"
"ALIAS_AMD_RX6900XT * 28200 1 123 A\n"
;
return extra_tuningdb_block;
}
void module_init (module_ctx_t *module_ctx)
{
module_ctx->module_context_size = MODULE_CONTEXT_SIZE_CURRENT;
@ -544,7 +501,7 @@ void module_init (module_ctx_t *module_ctx)
module_ctx->module_esalt_size = module_esalt_size;
module_ctx->module_extra_buffer_size = module_extra_buffer_size;
module_ctx->module_extra_tmp_size = module_extra_tmp_size;
module_ctx->module_extra_tuningdb_block = module_extra_tuningdb_block;
module_ctx->module_extra_tuningdb_block = MODULE_DEFAULT;
module_ctx->module_forced_outfile_format = MODULE_DEFAULT;
module_ctx->module_hash_binary_count = MODULE_DEFAULT;
module_ctx->module_hash_binary_parse = MODULE_DEFAULT;

@ -8,6 +8,7 @@
#include "event.h"
#include "memory.h"
#include "filehandling.h"
#include "folder.h"
#include "shared.h"
#include "tuningdb.h"
@ -64,45 +65,62 @@ int tuning_db_init (hashcat_ctx_t *hashcat_ctx)
tuning_db->enabled = true;
char *tuning_db_file = NULL;
char *tuning_db_folder = NULL;
hc_asprintf (&tuning_db_file, "%s/%s", folder_config->shared_dir, TUNING_DB_FILE);
hc_asprintf (&tuning_db_folder, "%s/tunings", folder_config->shared_dir);
HCFILE fp;
char **tuning_db_files = scan_directory (tuning_db_folder);
if (hc_fopen (&fp, tuning_db_file, "rb") == false)
for (int i = 0; tuning_db_files[i] != NULL; i++)
{
event_log_error (hashcat_ctx, "%s: %s", tuning_db_file, strerror (errno));
char *tuning_db_file = tuning_db_files[i];
return -1;
}
const size_t suflen = strlen (TUNING_DB_SUFFIX);
hcfree (tuning_db_file);
const size_t dblen = strlen (tuning_db_file);
int line_num = 0;
if (dblen < suflen) continue; // make sure to not do any out-of-boundary reads
char *buf = (char *) hcmalloc (HCBUFSIZ_LARGE);
if (memcmp (tuning_db_file + dblen - suflen, TUNING_DB_SUFFIX, suflen) != 0) continue;
while (!hc_feof (&fp))
{
char *line_buf = hc_fgets (buf, HCBUFSIZ_LARGE - 1, &fp);
HCFILE fp;
if (line_buf == NULL) break;
if (hc_fopen (&fp, tuning_db_file, "rb") == false)
{
event_log_error (hashcat_ctx, "%s: %s", tuning_db_file, strerror (errno));
line_num++;
return -1;
}
const size_t line_len = in_superchop (line_buf);
hcfree (tuning_db_file);
if (line_len == 0) continue;
int line_num = 0;
if (line_buf[0] == '#') continue;
char *buf = (char *) hcmalloc (HCBUFSIZ_LARGE);
tuning_db_process_line (hashcat_ctx, line_buf, line_num);
}
while (!hc_feof (&fp))
{
char *line_buf = hc_fgets (buf, HCBUFSIZ_LARGE - 1, &fp);
hcfree (buf);
if (line_buf == NULL) break;
line_num++;
const size_t line_len = in_superchop (line_buf);
if (line_len == 0) continue;
if (line_buf[0] == '#') continue;
tuning_db_process_line (hashcat_ctx, line_buf, line_num);
}
hcfree (buf);
hc_fclose (&fp);
}
hc_fclose (&fp);
hcfree (tuning_db_files);
// todo: print loaded 'cnt' message

@ -17,7 +17,6 @@ mkdir -p $OUT/tools
cp $IN/hashcat.exe $OUT/
cp $IN/hashcat.bin $OUT/
cp $IN/hashcat.hctune $OUT/
cp $IN/hashcat.hcstat2 $OUT/
cp -r $IN/docs $OUT/
@ -27,11 +26,13 @@ cp -r $IN/masks $OUT/
cp -r $IN/modules $OUT/
cp -r $IN/rules $OUT/
cp -r $IN/extra $OUT/
cp -r $IN/tunings $OUT/
cp $IN/example.dict $OUT/
cp $IN/example[0123456789]*.hash $OUT/
cp $IN/example[0123456789]*.cmd $OUT/
cp -r $IN/OpenCL $OUT/
cp $IN/tools/*hashcat.p[ly] $OUT/tools/
cp $IN/tools/*hashcat.pl $OUT/tools/
cp $IN/tools/*hashcat.py $OUT/tools/
# since for the binary distribution we still use .bin, we need to rewrite the commands
# within the example*.sh files
@ -50,6 +51,7 @@ dos2unix $OUT/docs/*
dos2unix $OUT/docs/license_libs/*
dos2unix $OUT/example*
dos2unix $OUT/tools/*
dos2unix $OUT/tunings/*
unix2dos $OUT/layouts/*.hckmap
unix2dos $OUT/masks/*.hcmask
@ -59,8 +61,8 @@ unix2dos $OUT/docs/*
unix2dos $OUT/docs/license_libs/*
unix2dos $OUT/example*.cmd
unix2dos $OUT/OpenCL/*
unix2dos $OUT/hashcat.hctune
unix2dos $OUT/tools/*
unix2dos $OUT/tunings/*
chmod 755 $OUT
chmod 755 $OUT/rules
@ -83,10 +85,12 @@ chmod 755 $OUT/extra/tab_completion/*.sh
chmod 755 $OUT/extra/tab_completion/install
chmod 755 $OUT/OpenCL
chmod 644 $OUT/OpenCL/*
chmod 755 $OUT/tunings
chmod 644 $OUT/tunings/*
chmod 644 $OUT/*.exe
chmod 755 $OUT/*.bin
chmod 644 $OUT/hashcat.hctune
chmod 644 $OUT/hashcat.hcstat2
chmod 755 $OUT/tools/*hashcat.p[ly]
chmod 755 $OUT/tools/*hashcat.pl
chmod 755 $OUT/tools/*hashcat.py
time 7z a -t7z -m0=lzma2:d31 -mx=9 -mmt=8 -ms=on $OUT.7z $OUT

@ -1,53 +1,4 @@
# This file is used to override autotune settings
# This file is used to preset the Vector-Width, the Kernel-Accept and the Kernel-Loops Value per Device, Attack-Mode and Hash-Type
#
# - A valid line consists of the following fields (in that order):
# - Device-Name
# - Attack-Mode
# - Hash-Type
# - Vector-Width
# - Kernel-Accel
# - Kernel-Loops
# - The first three columns define the filter, the other three is what is assigned when that filter matches
# - If no filter matches, autotune is used
# - Columns are separated with one or many spaces or tabs
# - A line can not start with a space or a tab
# - Comment lines are allowed, use a # as first character
# - Invalid lines are ignored
# - The Device-Name is the OpenCL Device-Name. It's shown on hashcat startup.
# - If the device contains spaces, replace all spaces with _ character.
# - The Device-Name can be assigned an alias. This is useful if many devices share the same chip
# - If you assign an alias, make sure to not use the devices name directly
# - There's also a hard-wired Device-Name which matches all device types called:
# - DEVICE_TYPE_CPU
# - DEVICE_TYPE_GPU
# - DEVICE_TYPE_ACCELERATOR
# - The use of wildcards is allowed, some rules:
# - Wildcards can only replace an entire Device-Name, not parts just of it. eg: not Geforce_*
# - The policy is local > global, means the closer you configure something, the more likely it is selected
# - The policy testing order is from left to right
# - Attack modes can be:
# - 0 = Dictionary-Attack
# - 1 = Combinator-Attack, will also be used for attack-mode 6 and 7 since they share the same kernel
# - 3 = Mask-Attack
# - The Kernel-Accel is a multiplier to OpenCL's concept of a workitem, not the workitem count
# - The Kernel-Loops has a functionality depending on the hash-type:
# - Slow Hash: Number of iterations calculated per workitem
# - Fast Hash: Number of mutations calculated per workitem
# - None of both should be confused with the OpenCL concept of a "thread", this one is maintained automatically
# - The Vector-Width can have only the values 1, 2, 4, 8 or 'N', where 'N' stands for native, which is an OpenCl-queried data value
# - The Kernel-Accel is limited to 1024
# - The Kernel-Loops is limited to 1024
# - The Kernel-Accel can have 'A', where 'A' stands for autotune
# - The Kernel-Accel can have 'M', where 'M' stands for maximum possible
# - The Kernel-Loops can have 'A', where 'A' stands for autotune
# - The Kernel-Loops can have 'M', where 'M' stands for maximum possible
#############
## ALIASES ##
#############
#Device Alias
#Name Name
@ -305,114 +256,3 @@ gfx908:sramecc+:xnack- ALIAS_AMD_MI100
Device_73bf ALIAS_AMD_RX6900XT
gfx1030 ALIAS_AMD_RX6900XT
Radeon_RX_6900_XT ALIAS_AMD_RX6900XT
#############
## ENTRIES ##
#############
DEVICE_TYPE_CPU * 6100 1 A A
DEVICE_TYPE_CPU * 6231 1 A A
DEVICE_TYPE_CPU * 6232 1 A A
DEVICE_TYPE_CPU * 6233 1 A A
DEVICE_TYPE_CPU * 13731 1 A A
DEVICE_TYPE_CPU * 13732 1 A A
DEVICE_TYPE_CPU * 13733 1 A A
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
ALIAS_nv_real_simd 3 0 2 A A
ALIAS_nv_real_simd 3 10 2 A A
ALIAS_nv_real_simd 3 11 2 A A
ALIAS_nv_real_simd 3 12 2 A A
ALIAS_nv_real_simd 3 20 2 A A
ALIAS_nv_real_simd 3 21 2 A A
ALIAS_nv_real_simd 3 22 2 A A
ALIAS_nv_real_simd 3 23 2 A A
ALIAS_nv_real_simd 3 200 2 A A
ALIAS_nv_real_simd 3 400 2 A A
ALIAS_nv_real_simd 3 900 4 A A
ALIAS_nv_real_simd 3 1000 4 A A
ALIAS_nv_real_simd 3 1100 4 A A
ALIAS_nv_real_simd 3 2400 2 A A
ALIAS_nv_real_simd 3 2410 2 A A
ALIAS_nv_real_simd 3 2600 4 A A
ALIAS_nv_real_simd 3 2611 4 A A
ALIAS_nv_real_simd 3 2612 4 A A
ALIAS_nv_real_simd 3 2711 4 A A
ALIAS_nv_real_simd 3 2811 4 A A
ALIAS_nv_real_simd 3 3711 2 A A
ALIAS_nv_real_simd 3 5100 2 A A
ALIAS_nv_real_simd 3 5300 2 A A
ALIAS_nv_real_simd 3 5500 4 A A
ALIAS_nv_real_simd 3 5600 2 A A
ALIAS_nv_real_simd 3 8700 4 A A
ALIAS_nv_real_simd 3 9900 2 A A
ALIAS_nv_real_simd 3 11000 4 A A
ALIAS_nv_real_simd 3 11100 2 A A
ALIAS_nv_real_simd 3 11900 2 A A
ALIAS_nv_real_simd 3 13300 4 A A
ALIAS_nv_real_simd 3 18700 8 A A
ALIAS_nv_sm50_or_higher 3 0 8 A A
ALIAS_nv_sm50_or_higher 3 10 8 A A
ALIAS_nv_sm50_or_higher 3 11 8 A A
ALIAS_nv_sm50_or_higher 3 12 8 A A
ALIAS_nv_sm50_or_higher 3 20 4 A A
ALIAS_nv_sm50_or_higher 3 21 4 A A
ALIAS_nv_sm50_or_higher 3 22 4 A A
ALIAS_nv_sm50_or_higher 3 23 4 A A
ALIAS_nv_sm50_or_higher 3 30 4 A A
ALIAS_nv_sm50_or_higher 3 40 4 A A
ALIAS_nv_sm50_or_higher 3 200 8 A A
ALIAS_nv_sm50_or_higher 3 900 8 A A
ALIAS_nv_sm50_or_higher 3 1000 8 A A
ALIAS_nv_sm50_or_higher 3 1100 4 A A
ALIAS_nv_sm50_or_higher 3 2400 8 A A
ALIAS_nv_sm50_or_higher 3 2410 4 A A
ALIAS_nv_sm50_or_higher 3 3800 4 A A
ALIAS_nv_sm50_or_higher 3 4800 8 A A
ALIAS_nv_sm50_or_higher 3 5500 2 A A
ALIAS_nv_sm50_or_higher 3 9900 4 A A
ALIAS_nv_sm50_or_higher 3 16400 8 A A
ALIAS_nv_sm50_or_higher 3 18700 8 A A
##
## The following cards were manually tuned, as example
##
GeForce_GTX_TITAN 3 0 4 A A
GeForce_GTX_TITAN 3 11 4 A A
GeForce_GTX_TITAN 3 12 4 A A
GeForce_GTX_TITAN 3 21 1 A A
GeForce_GTX_TITAN 3 22 1 A A
GeForce_GTX_TITAN 3 23 1 A A
GeForce_GTX_TITAN 3 30 4 A A
GeForce_GTX_TITAN 3 200 2 A A
GeForce_GTX_TITAN 3 900 4 A A
GeForce_GTX_TITAN 3 1000 4 A A
GeForce_GTX_TITAN 3 1100 4 A A
GeForce_GTX_TITAN 3 2400 4 A A
GeForce_GTX_TITAN 3 2410 2 A A
GeForce_GTX_TITAN 3 5500 1 A A
GeForce_GTX_TITAN 3 9900 2 A A
##
## BCRYPT
##
DEVICE_TYPE_CPU * 3200 1 N A
DEVICE_TYPE_CPU * 25600 1 N A
DEVICE_TYPE_CPU * 25800 1 N A
##
## SCRYPT: Tunings for SCRYPT based hash-modes can be found inside the plugin source
## See function module_extra_tuningdb_block()
##
##
## CryptoAPI
##
DEVICE_TYPE_CPU * 14500 1 A A
DEVICE_TYPE_GPU * 14500 1 A A

@ -0,0 +1,22 @@
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
##
## The following cards were manually tuned, as example
##
GeForce_GTX_TITAN 3 0 4 A A
GeForce_GTX_TITAN 3 11 4 A A
GeForce_GTX_TITAN 3 12 4 A A
GeForce_GTX_TITAN 3 21 1 A A
GeForce_GTX_TITAN 3 22 1 A A
GeForce_GTX_TITAN 3 23 1 A A
GeForce_GTX_TITAN 3 30 4 A A
GeForce_GTX_TITAN 3 200 2 A A
GeForce_GTX_TITAN 3 900 4 A A
GeForce_GTX_TITAN 3 1000 4 A A
GeForce_GTX_TITAN 3 1100 4 A A
GeForce_GTX_TITAN 3 2400 4 A A
GeForce_GTX_TITAN 3 2410 2 A A
GeForce_GTX_TITAN 3 5500 1 A A
GeForce_GTX_TITAN 3 9900 2 A A

@ -0,0 +1,36 @@
#
# Find the right -n value for your GPU:
# =====================================
#
# 1. For example, to find the value for 8900, first create a valid hash for 8900 as follows:
#
# $ ./hashcat --example-hashes -m 8900 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.8900
#
# 2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
#
# $ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.8900 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 8900 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
#
# 3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
#
# $ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
#
# 4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
DEVICE_TYPE_CPU * 8900 1 N A
DEVICE_TYPE_GPU * 8900 1 N A
GeForce_GTX_980 * 8900 1 29 A
GeForce_GTX_1080 * 8900 1 15 A
GeForce_RTX_2080_Ti * 8900 1 68 A
GeForce_RTX_3060_Ti * 8900 1 51 A
GeForce_RTX_3070 * 8900 1 46 A
GeForce_RTX_3090 * 8900 1 82 A
GeForce_RTX_3090_Ti * 8900 1 84 A
NVS_510 * 8900 1 12 A
ALIAS_AMD_RX480 * 8900 1 15 A
ALIAS_AMD_Vega64 * 8900 1 30 A
ALIAS_AMD_MI100 * 8900 1 79 A
ALIAS_AMD_RX6900XT * 8900 1 123 A

@ -0,0 +1,34 @@
#
# Find the right -n value for your GPU:
# =====================================
#
# 1. For example, to find the value for 9300, first create a valid hash for 9300 as follows:
#
# $ ./hashcat --example-hashes -m 9300 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.9300
#
# 2. Now let it iterate through all -n values to a certain point. In this case, I'm using 1032, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
#
# $ export i=8; while [ $i -ne 1032 ]; do echo $i; ./hashcat --quiet tmp.hash.9300 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 9300 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+8)); done | tee x
#
# 3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
#
# $ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
#
# 4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
DEVICE_TYPE_CPU * 9300 1 N A
DEVICE_TYPE_GPU * 9300 1 N A
GeForce_GTX_980 * 9300 1 128 A
GeForce_GTX_1080 * 9300 1 256 A
GeForce_RTX_2080_Ti * 9300 1 528 A
GeForce_RTX_3060_Ti * 9300 1 256 A
GeForce_RTX_3070 * 9300 1 368 A
GeForce_RTX_3090 * 9300 1 984 A
ALIAS_AMD_RX480 * 9300 1 232 A
ALIAS_AMD_Vega64 * 9300 1 440 A
ALIAS_AMD_MI100 * 9300 1 1000 A
ALIAS_AMD_RX6900XT * 9300 1 720 A

@ -0,0 +1,35 @@
#
# Find the right -n value for your GPU:
# =====================================
#
# 1. For example, to find the value for 15700, first create a valid hash for 15700 as follows:
#
# $ ./hashcat --example-hashes -m 15700 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.15700
#
# 2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
#
# $ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.15700 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 15700 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
#
# 3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
#
# $ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
#
# 4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
DEVICE_TYPE_CPU * 15700 1 N A
DEVICE_TYPE_GPU * 15700 1 1 A
GeForce_GTX_980 * 15700 1 24 A
GeForce_GTX_1080 * 15700 1 28 A
GeForce_RTX_2080_Ti * 15700 1 68 A
GeForce_RTX_3060_Ti * 15700 1 11 A
GeForce_RTX_3070 * 15700 1 22 A
GeForce_RTX_3090 * 15700 1 82 A
GeForce_RTX_3090_Ti * 15700 1 84 A
ALIAS_AMD_RX480 * 15700 1 58 A
ALIAS_AMD_Vega64 * 15700 1 53 A
ALIAS_AMD_MI100 * 15700 1 120 A
ALIAS_AMD_RX6900XT * 15700 1 56 A

@ -0,0 +1,36 @@
#
# Find the right -n value for your GPU:
# =====================================
#
# 1. For example, to find the value for 22700, first create a valid hash for 22700 as follows:
#
# $ ./hashcat --example-hashes -m 22700 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.22700
#
# 2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
#
# $ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.22700 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 22700 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
#
# 3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
#
# $ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
#
# 4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
DEVICE_TYPE_CPU * 22700 1 N A
DEVICE_TYPE_GPU * 22700 1 N A
GeForce_GTX_980 * 22700 1 29 A
GeForce_GTX_1080 * 22700 1 15 A
GeForce_RTX_2080_Ti * 22700 1 68 A
GeForce_RTX_3060_Ti * 22700 1 51 A
GeForce_RTX_3070 * 22700 1 46 A
GeForce_RTX_3090 * 22700 1 82 A
GeForce_RTX_3090_Ti * 22700 1 84 A
NVS_510 * 22700 1 12 A
ALIAS_AMD_RX480 * 22700 1 15 A
ALIAS_AMD_Vega64 * 22700 1 30 A
ALIAS_AMD_MI100 * 22700 1 79 A
ALIAS_AMD_RX6900XT * 22700 1 123 A

@ -0,0 +1,36 @@
#
# Find the right -n value for your GPU:
# =====================================
#
# 1. For example, to find the value for 27700, first create a valid hash for 27700 as follows:
#
# $ ./hashcat --example-hashes -m 27700 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.27700
#
# 2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
#
# $ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.27700 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 27700 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
#
# 3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
#
# $ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
#
# 4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
DEVICE_TYPE_CPU * 27700 1 N A
DEVICE_TYPE_GPU * 27700 1 N A
GeForce_GTX_980 * 27700 1 29 A
GeForce_GTX_1080 * 27700 1 15 A
GeForce_RTX_2080_Ti * 27700 1 68 A
GeForce_RTX_3060_Ti * 27700 1 51 A
GeForce_RTX_3070 * 27700 1 46 A
GeForce_RTX_3090 * 27700 1 82 A
GeForce_RTX_3090_Ti * 27700 1 84 A
NVS_510 * 27700 1 12 A
ALIAS_AMD_RX480 * 27700 1 15 A
ALIAS_AMD_Vega64 * 27700 1 30 A
ALIAS_AMD_MI100 * 27700 1 79 A
ALIAS_AMD_RX6900XT * 27700 1 123 A

@ -0,0 +1,36 @@
#
# Find the right -n value for your GPU:
# =====================================
#
# 1. For example, to find the value for 28200, first create a valid hash for 28200 as follows:
#
# $ ./hashcat --example-hashes -m 28200 | grep Example.Hash | grep -v Format | cut -b 25- > tmp.hash.28200
#
# 2. Now let it iterate through all -n values to a certain point. In this case, I'm using 200, but in general it's a value that is at least twice that of the multiprocessor. If you don't mind you can just leave it as it is, it just runs a little longer.
#
# $ export i=1; while [ $i -ne 201 ]; do echo $i; ./hashcat --quiet tmp.hash.28200 --keep-guessing --self-test-disable --markov-disable --restore-disable --outfile-autohex-disable --wordlist-autohex-disable --potfile-disable --logfile-disable --hwmon-disable --status --status-timer 1 --runtime 28 --machine-readable --optimized-kernel-enable --workload-profile 3 --hash-type 28200 --attack-mode 3 ?b?b?b?b?b?b?b --backend-devices 1 --force -n $i; i=$(($i+1)); done | tee x
#
# 3. Determine the highest measured H/s speed. But don't just use the highest value. Instead, use the number that seems most stable, usually at the beginning.
#
# $ grep "$(printf 'STATUS\t3')" x | cut -f4 -d$'\t' | sort -n | tail
#
# 4. To match the speed you have chosen to the correct value in the 'x' file, simply search for it in it. Then go up a little on the block where you found him. The value -n is the single value that begins before the block start. If you have multiple blocks at the same speed, choose the lowest value for -n
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
DEVICE_TYPE_CPU * 28200 1 N A
DEVICE_TYPE_GPU * 28200 1 N A
GeForce_GTX_980 * 28200 1 29 A
GeForce_GTX_1080 * 28200 1 15 A
GeForce_RTX_2080_Ti * 28200 1 68 A
GeForce_RTX_3060_Ti * 28200 1 51 A
GeForce_RTX_3070 * 28200 1 46 A
GeForce_RTX_3090 * 28200 1 82 A
GeForce_RTX_3090_Ti * 28200 1 84 A
NVS_510 * 28200 1 12 A
ALIAS_AMD_RX480 * 28200 1 15 A
ALIAS_AMD_Vega64 * 28200 1 30 A
ALIAS_AMD_MI100 * 28200 1 79 A
ALIAS_AMD_RX6900XT * 28200 1 123 A

@ -0,0 +1,89 @@
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
DEVICE_TYPE_CPU * 6100 1 A A
DEVICE_TYPE_CPU * 6231 1 A A
DEVICE_TYPE_CPU * 6232 1 A A
DEVICE_TYPE_CPU * 6233 1 A A
DEVICE_TYPE_CPU * 13731 1 A A
DEVICE_TYPE_CPU * 13732 1 A A
DEVICE_TYPE_CPU * 13733 1 A A
#Device Attack Hash Vector Kernel Kernel
#Name Mode Type Width Accel Loops
ALIAS_nv_real_simd 3 0 2 A A
ALIAS_nv_real_simd 3 10 2 A A
ALIAS_nv_real_simd 3 11 2 A A
ALIAS_nv_real_simd 3 12 2 A A
ALIAS_nv_real_simd 3 20 2 A A
ALIAS_nv_real_simd 3 21 2 A A
ALIAS_nv_real_simd 3 22 2 A A
ALIAS_nv_real_simd 3 23 2 A A
ALIAS_nv_real_simd 3 200 2 A A
ALIAS_nv_real_simd 3 400 2 A A
ALIAS_nv_real_simd 3 900 4 A A
ALIAS_nv_real_simd 3 1000 4 A A
ALIAS_nv_real_simd 3 1100 4 A A
ALIAS_nv_real_simd 3 2400 2 A A
ALIAS_nv_real_simd 3 2410 2 A A
ALIAS_nv_real_simd 3 2600 4 A A
ALIAS_nv_real_simd 3 2611 4 A A
ALIAS_nv_real_simd 3 2612 4 A A
ALIAS_nv_real_simd 3 2711 4 A A
ALIAS_nv_real_simd 3 2811 4 A A
ALIAS_nv_real_simd 3 3711 2 A A
ALIAS_nv_real_simd 3 5100 2 A A
ALIAS_nv_real_simd 3 5300 2 A A
ALIAS_nv_real_simd 3 5500 4 A A
ALIAS_nv_real_simd 3 5600 2 A A
ALIAS_nv_real_simd 3 8700 4 A A
ALIAS_nv_real_simd 3 9900 2 A A
ALIAS_nv_real_simd 3 11000 4 A A
ALIAS_nv_real_simd 3 11100 2 A A
ALIAS_nv_real_simd 3 11900 2 A A
ALIAS_nv_real_simd 3 13300 4 A A
ALIAS_nv_real_simd 3 18700 8 A A
ALIAS_nv_sm50_or_higher 3 0 8 A A
ALIAS_nv_sm50_or_higher 3 10 8 A A
ALIAS_nv_sm50_or_higher 3 11 8 A A
ALIAS_nv_sm50_or_higher 3 12 8 A A
ALIAS_nv_sm50_or_higher 3 20 4 A A
ALIAS_nv_sm50_or_higher 3 21 4 A A
ALIAS_nv_sm50_or_higher 3 22 4 A A
ALIAS_nv_sm50_or_higher 3 23 4 A A
ALIAS_nv_sm50_or_higher 3 30 4 A A
ALIAS_nv_sm50_or_higher 3 40 4 A A
ALIAS_nv_sm50_or_higher 3 200 8 A A
ALIAS_nv_sm50_or_higher 3 900 8 A A
ALIAS_nv_sm50_or_higher 3 1000 8 A A
ALIAS_nv_sm50_or_higher 3 1100 4 A A
ALIAS_nv_sm50_or_higher 3 2400 8 A A
ALIAS_nv_sm50_or_higher 3 2410 4 A A
ALIAS_nv_sm50_or_higher 3 3800 4 A A
ALIAS_nv_sm50_or_higher 3 4800 8 A A
ALIAS_nv_sm50_or_higher 3 5500 2 A A
ALIAS_nv_sm50_or_higher 3 9900 4 A A
ALIAS_nv_sm50_or_higher 3 16400 8 A A
ALIAS_nv_sm50_or_higher 3 18700 8 A A
##
## BCRYPT
##
DEVICE_TYPE_CPU * 3200 1 N A
DEVICE_TYPE_CPU * 25600 1 N A
DEVICE_TYPE_CPU * 25800 1 N A
##
## SCRYPT: Tunings for SCRYPT based hash-modes can be found in separate files in the tunings/ folder
##
##
## CryptoAPI
##
DEVICE_TYPE_CPU * 14500 1 A A
DEVICE_TYPE_GPU * 14500 1 A A

@ -0,0 +1,48 @@
The files in this folder are used to override autotune settings
You can override configuration settings for Vector-Width, Kernel-Accel and/or Kernel-Loops values
You can filter by Device-Name, Device-Name alias, Attack-Mode and/or Hash-Type
Each file in this folder with the filename suffix .hctune will be automatically loaded by hashcat on startup with random order
- A valid line consists of the following fields (in that order):
- Device-Name
- Attack-Mode
- Hash-Type
- Vector-Width
- Kernel-Accel
- Kernel-Loops
- The first three columns define the filter, the other three is what is assigned when that filter matches
- If no filter matches, autotune is used
- Columns are separated with one or many spaces or tabs
- A line can not start with a space or a tab
- Comment lines are allowed, use a # as first character
- Invalid lines are ignored
- The Device-Name is the OpenCL Device-Name. It's shown on hashcat startup.
- If the device contains spaces, replace all spaces with _ character.
- The Device-Name can be assigned an alias. This is useful if many devices share the same chip
- If you assign an alias, make sure to not use the devices name directly
- There's also a hard-wired Device-Name which matches all device types called:
- DEVICE_TYPE_CPU
- DEVICE_TYPE_GPU
- DEVICE_TYPE_ACCELERATOR
- The use of wildcards is allowed, some rules:
- Wildcards can only replace an entire Device-Name, not parts just of it. eg: not Geforce_*
- The policy is local > global, means the closer you configure something, the more likely it is selected
- The policy testing order is from left to right
- Attack modes can be:
- 0 = Dictionary-Attack
- 1 = Combinator-Attack, will also be used for attack-mode 6 and 7 since they share the same kernel
- 3 = Mask-Attack
- The Kernel-Accel is a multiplier to OpenCL's concept of a workitem, not the workitem count
- The Kernel-Loops has a functionality depending on the hash-type:
- Slow Hash: Number of iterations calculated per workitem
- Fast Hash: Number of mutations calculated per workitem
- None of both should be confused with the OpenCL concept of a "thread", this one is maintained automatically
- The Vector-Width can have only the values 1, 2, 4, 8 or 'N', where 'N' stands for native, which is an OpenCl-queried data value
- The Kernel-Accel is limited to 1024
- The Kernel-Loops is limited to 1024
- The Kernel-Accel can have 'A', where 'A' stands for autotune
- The Kernel-Accel can have 'M', where 'M' stands for maximum possible
- The Kernel-Loops can have 'A', where 'A' stands for autotune
- The Kernel-Loops can have 'M', where 'M' stands for maximum possible
Loading…
Cancel
Save