mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-24 17:08:17 +00:00
Added tunings/ folder in order to replace hashcat.hctune. Configuration files with *.hctune suffix are automatically load on startup
This commit is contained in:
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);
|
||||
|
11
src/Makefile
11
src/Makefile
@ -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);
|
||||
|
||||
const size_t dblen = strlen (tuning_db_file);
|
||||
|
||||
if (dblen < suflen) continue; // make sure to not do any out-of-boundary reads
|
||||
|
||||
if (memcmp (tuning_db_file + dblen - suflen, TUNING_DB_SUFFIX, suflen) != 0) continue;
|
||||
|
||||
HCFILE fp;
|
||||
|
||||
if (hc_fopen (&fp, tuning_db_file, "rb") == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "%s: %s", tuning_db_file, strerror (errno));
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
hcfree (tuning_db_file);
|
||||
|
||||
int line_num = 0;
|
||||
|
||||
char *buf = (char *) hcmalloc (HCBUFSIZ_LARGE);
|
||||
|
||||
while (!hc_feof (&fp))
|
||||
{
|
||||
char *line_buf = hc_fgets (buf, HCBUFSIZ_LARGE - 1, &fp);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
hcfree (tuning_db_file);
|
||||
|
||||
int line_num = 0;
|
||||
|
||||
char *buf = (char *) hcmalloc (HCBUFSIZ_LARGE);
|
||||
|
||||
while (!hc_feof (&fp))
|
||||
{
|
||||
char *line_buf = hc_fgets (buf, HCBUFSIZ_LARGE - 1, &fp);
|
||||
|
||||
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);
|
||||
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
|
22
tunings/Device_GeForce_GTX_TITAN.hctune
Normal file
22
tunings/Device_GeForce_GTX_TITAN.hctune
Normal file
@ -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
|
36
tunings/Module_08900.hctune
Normal file
36
tunings/Module_08900.hctune
Normal file
@ -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
|
34
tunings/Module_09300.hctune
Normal file
34
tunings/Module_09300.hctune
Normal file
@ -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
|
35
tunings/Module_15700.hctune
Normal file
35
tunings/Module_15700.hctune
Normal file
@ -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
|
36
tunings/Module_22700.hctune
Normal file
36
tunings/Module_22700.hctune
Normal file
@ -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
|
36
tunings/Module_27700.hctune
Normal file
36
tunings/Module_27700.hctune
Normal file
@ -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
|
36
tunings/Module_28200.hctune
Normal file
36
tunings/Module_28200.hctune
Normal file
@ -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
|
89
tunings/Modules_default.hctune
Normal file
89
tunings/Modules_default.hctune
Normal file
@ -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
|
48
tunings/README.md
Normal file
48
tunings/README.md
Normal file
@ -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…
Reference in New Issue
Block a user