mirror of
https://github.com/hashcat/hashcat.git
synced 2025-07-01 12:22:37 +00:00
The Assimilation Bridge (Framework)
This commit is contained in:
parent
c607910f1c
commit
ceb5ff5641
6
.gitignore
vendored
6
.gitignore
vendored
@ -24,3 +24,9 @@ obj/*.o
|
||||
obj/*.a
|
||||
include/CL
|
||||
tools/luks_tests
|
||||
.vscode
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
@ -425,9 +425,9 @@ _hashcat ()
|
||||
local HIDDEN_FILES_AGGRESSIVE="${HIDDEN_FILES}|hcmask|hcchr"
|
||||
local BUILD_IN_CHARSETS='?l ?u ?d ?a ?b ?s ?h ?H'
|
||||
|
||||
local SHORT_OPTS="-m -a -V -h -b -t -T -o -p -c -d -D -w -n -u -j -k -r -g -1 -2 -3 -4 -i -I -s -l -O -S -z -M -Y"
|
||||
local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --benchmark-all --hex-salt --hex-wordlist --hex-charset --force --status --status-json --status-timer --stdin-timeout-abort --machine-readable --loopback --markov-hcstat2 --markov-disable --markov-inverse --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-json --outfile-check-timer --outfile-check-dir --wordlist-autohex-disable --separator --show --deprecated-check-disable --left --username --dynamic-x --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --example-hashes --hash-info --backend-ignore-cuda --backend-ignore-opencl --backend-ignore-hip --backend-ignore-metal --backend-info --backend-devices --backend-devices-virtual --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-disable --hwmon-temp-abort --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --multiply-accel-disable --self-test-disable --slow-candidates --brain-server --brain-server-timer --brain-client --brain-client-features --brain-host --brain-port --brain-session --brain-session-whitelist --brain-password --identify"
|
||||
local OPTIONS="-m -a -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -s -l --hash-type --attack-mode --status-timer --stdin-timeout-abort --markov-hcstat2 --markov-threshold --runtime --session --outfile --outfile-format --outfile-check-timer --outfile-check-dir --separator --remove-timer --potfile-path --restore-file-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --backend-devices --backend-devices-virtual --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-temp-abort --skip --limit --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment-min --increment-max --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --brain-server-timer --brain-client-features --brain-host --brain-password --brain-port --brain-session --brain-session-whitelist"
|
||||
local SHORT_OPTS="-m -a -V -h -b -t -T -o -p -c -d -D -w -n -u -j -k -r -g -1 -2 -3 -4 -i -I -s -l -O -S -z -M -Y -R"
|
||||
local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --benchmark-all --hex-salt --hex-wordlist --hex-charset --force --status --status-json --status-timer --stdin-timeout-abort --machine-readable --loopback --markov-hcstat2 --markov-disable --markov-inverse --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-json --outfile-check-timer --outfile-check-dir --wordlist-autohex-disable --separator --show --deprecated-check-disable --left --username --dynamic-x --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --example-hashes --hash-info --backend-ignore-cuda --backend-ignore-opencl --backend-ignore-hip --backend-ignore-metal --backend-info --backend-devices --backend-devices-virtmulti --backend-devices-virthost --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-disable --hwmon-temp-abort --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --multiply-accel-disable --self-test-disable --slow-candidates --brain-server --brain-server-timer --brain-client --brain-client-features --brain-host --brain-port --brain-session --brain-session-whitelist --brain-password --identify --bridge-parameter1 --bridge-parameter2 --bridge-parameter3 --bridge-parameter4"
|
||||
local OPTIONS="-m -a -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -s -l --hash-type --attack-mode --status-timer --stdin-timeout-abort --markov-hcstat2 --markov-threshold --runtime --session --outfile --outfile-format --outfile-check-timer --outfile-check-dir --separator --remove-timer --potfile-path --restore-file-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --backend-devices --backend-devices-virtmulti --backend-devices-virthost --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-temp-abort --skip --limit --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment-min --increment-max --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --brain-server-timer --brain-client-features --brain-host --brain-password --brain-port --brain-session --brain-session-whitelist --bridge-parameter1 --bridge-parameter2 --bridge-parameter3 --bridge-parameter4"
|
||||
|
||||
COMPREPLY=()
|
||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
|
@ -39,8 +39,6 @@ int backend_session_update_combinator (hashcat_ctx_t *hashcat_ctx);
|
||||
int backend_session_update_mp (hashcat_ctx_t *hashcat_ctx);
|
||||
int backend_session_update_mp_rl (hashcat_ctx_t *hashcat_ctx, const u32 css_cnt_l, const u32 css_cnt_r);
|
||||
|
||||
u32 backend_device_idx_real_from_virtual (const u32 device_idx, const u32 backend_devices_virtual);
|
||||
|
||||
void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file);
|
||||
void generate_cached_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *cache_dir, const char *device_name_chksum, char *cached_file, bool is_metal);
|
||||
void generate_source_kernel_shared_filename (char *shared_dir, char *source_file);
|
||||
|
30
include/bridges.h
Normal file
30
include/bridges.h
Normal file
@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Author......: See docs/credits.txt
|
||||
* License.....: MIT
|
||||
*/
|
||||
|
||||
#ifndef HC_BRIDGE_H
|
||||
#define HC_BRIDGE_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
static const int BRIDGE_INTERFACE_VERSION_MINIMUM = 700;
|
||||
|
||||
static const size_t BRIDGE_CONTEXT_SIZE_CURRENT = sizeof (bridge_ctx_t);
|
||||
|
||||
/**
|
||||
* output functions
|
||||
*/
|
||||
|
||||
bool bridges_init (hashcat_ctx_t *hashcat_ctx);
|
||||
void bridges_destroy (hashcat_ctx_t *hashcat_ctx);
|
||||
|
||||
bool bridges_salt_prepare (hashcat_ctx_t *hashcat_ctx);
|
||||
void bridges_salt_destroy (hashcat_ctx_t *hashcat_ctx);
|
||||
|
||||
#endif // HC_BRIDGE_H
|
109
include/types.h
109
include/types.h
@ -106,6 +106,10 @@ typedef enum event_identifier
|
||||
EVENT_BITMAP_INIT_POST = 0x00000010,
|
||||
EVENT_BITMAP_INIT_PRE = 0x00000011,
|
||||
EVENT_BITMAP_FINAL_OVERFLOW = 0x00000012,
|
||||
EVENT_BRIDGES_INIT_POST = 0x00000120,
|
||||
EVENT_BRIDGES_INIT_PRE = 0x00000121,
|
||||
EVENT_BRIDGES_SALT_POST = 0x00000122,
|
||||
EVENT_BRIDGES_SALT_PRE = 0x00000123,
|
||||
EVENT_CALCULATED_WORDS_BASE = 0x00000020,
|
||||
EVENT_CRACKER_FINISHED = 0x00000030,
|
||||
EVENT_CRACKER_HASH_CRACKED = 0x00000031,
|
||||
@ -470,9 +474,32 @@ typedef enum opts_type
|
||||
OPTS_TYPE_AUTODETECT_DISABLE
|
||||
= (1ULL << 56), // skip autodetect engine
|
||||
OPTS_TYPE_STOCK_MODULE = (1ULL << 57), // module included with hashcat default distribution
|
||||
OPTS_TYPE_MULTIHASH_DESPITE_ESALT
|
||||
= (1ULL << 58), // overrule multihash cracking check same salt but not same esalt
|
||||
|
||||
} opts_type_t;
|
||||
|
||||
typedef enum bridge_type
|
||||
{
|
||||
BRIDGE_TYPE_NONE = 0, // no bridge support
|
||||
BRIDGE_TYPE_MATCH_TUNINGS = (1ULL << 1), // Disables autotune and adjusts -n, -u and -T for the backend device according to match bridge dimensions
|
||||
BRIDGE_TYPE_UPDATE_SELFTEST = (1ULL << 2), // updates the selftest configured in the module. Can be useful for generic hash modes such as the python one
|
||||
|
||||
BRIDGE_TYPE_LAUNCH_LOOP = (1ULL << 11),
|
||||
BRIDGE_TYPE_LAUNCH_LOOP2 = (1ULL << 12),
|
||||
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_001 = (1ULL << 20), // This override the workitem counts reported from the bridge device
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_002 = (1ULL << 21), // Can be useful if this is not a physical hardware
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_004 = (1ULL << 22),
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_008 = (1ULL << 23),
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_016 = (1ULL << 24),
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_032 = (1ULL << 25),
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_064 = (1ULL << 26),
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_128 = (1ULL << 27),
|
||||
BRIDGE_TYPE_FORCE_WORKITEMS_256 = (1ULL << 26),
|
||||
|
||||
} bridge_type_t;
|
||||
|
||||
typedef enum dgst_size
|
||||
{
|
||||
DGST_SIZE_4_2 = (2 * sizeof (u32)), // 8
|
||||
@ -626,7 +653,8 @@ typedef enum user_options_defaults
|
||||
ADVICE = true,
|
||||
ATTACK_MODE = ATTACK_MODE_STRAIGHT,
|
||||
AUTODETECT = false,
|
||||
BACKEND_DEVICES_VIRTUAL = 1,
|
||||
BACKEND_DEVICES_VIRTMULTI = 1,
|
||||
BACKEND_DEVICES_VIRTHOST = 1,
|
||||
BENCHMARK_ALL = false,
|
||||
BENCHMARK_MAX = 99999,
|
||||
BENCHMARK_MIN = 0,
|
||||
@ -732,7 +760,8 @@ typedef enum user_options_map
|
||||
IDX_ADVICE_DISABLE = 0xff00,
|
||||
IDX_ATTACK_MODE = 'a',
|
||||
IDX_BACKEND_DEVICES = 'd',
|
||||
IDX_BACKEND_DEVICES_VIRTUAL = 'Y',
|
||||
IDX_BACKEND_DEVICES_VIRTMULTI = 'Y',
|
||||
IDX_BACKEND_DEVICES_VIRTHOST = 'R',
|
||||
IDX_BACKEND_IGNORE_CUDA = 0xff01,
|
||||
IDX_BACKEND_IGNORE_HIP = 0xff02,
|
||||
IDX_BACKEND_IGNORE_METAL = 0xff03,
|
||||
@ -756,6 +785,10 @@ typedef enum user_options_map
|
||||
IDX_BRAIN_SESSION = 0xff0f,
|
||||
IDX_BRAIN_SESSION_WHITELIST = 0xff10,
|
||||
#endif
|
||||
IDX_BRIDGE_PARAMETER1 = 0xff80,
|
||||
IDX_BRIDGE_PARAMETER2 = 0xff81,
|
||||
IDX_BRIDGE_PARAMETER3 = 0xff82,
|
||||
IDX_BRIDGE_PARAMETER4 = 0xff83,
|
||||
IDX_CPU_AFFINITY = 0xff11,
|
||||
IDX_CUSTOM_CHARSET_1 = '1',
|
||||
IDX_CUSTOM_CHARSET_2 = '2',
|
||||
@ -1092,6 +1125,11 @@ typedef struct hashconfig
|
||||
|
||||
u32 pwdump_column;
|
||||
|
||||
// bridge
|
||||
|
||||
u64 bridge_type;
|
||||
const char *bridge_name;
|
||||
|
||||
} hashconfig_t;
|
||||
|
||||
typedef struct pw_pre
|
||||
@ -1184,6 +1222,8 @@ typedef struct hc_device_param
|
||||
|
||||
u32 kernel_preferred_wgs_multiple;
|
||||
|
||||
int bridge_link_device;
|
||||
|
||||
st_status_t st_status; // selftest status
|
||||
|
||||
at_status_t at_status; // autotune status
|
||||
@ -1374,6 +1414,8 @@ typedef struct hc_device_param
|
||||
pw_pre_t *pws_base_buf; // for debug mode
|
||||
u64 pws_base_cnt;
|
||||
|
||||
void *h_tmps; // we need this only for bridges
|
||||
|
||||
u64 words_off;
|
||||
u64 words_done;
|
||||
|
||||
@ -1895,19 +1937,20 @@ typedef struct backend_ctx
|
||||
int backend_device_from_opencl_platform[CL_PLATFORMS_MAX][DEVICES_MAX]; // from opencl device index to backend device index (by platform)
|
||||
|
||||
int backend_devices_cnt;
|
||||
int backend_devices_virtual;
|
||||
int backend_devices_virtmulti;
|
||||
int backend_devices_virthost;
|
||||
int backend_devices_active;
|
||||
|
||||
int cuda_devices_cnt;
|
||||
int cuda_devices_active;
|
||||
int hip_devices_cnt;
|
||||
int hip_devices_active;
|
||||
int hip_devices_active;
|
||||
int metal_devices_cnt;
|
||||
int metal_devices_active;
|
||||
int opencl_devices_cnt;
|
||||
int opencl_devices_active;
|
||||
|
||||
bool backend_devices_filter[DEVICES_MAX + 1];
|
||||
int backend_devices_filter[DEVICES_MAX];
|
||||
|
||||
hc_device_param_t *devices_param;
|
||||
|
||||
@ -2396,6 +2439,10 @@ typedef struct user_options
|
||||
char *brain_password;
|
||||
char *brain_session_whitelist;
|
||||
#endif
|
||||
char *bridge_parameter1;
|
||||
char *bridge_parameter2;
|
||||
char *bridge_parameter3;
|
||||
char *bridge_parameter4;
|
||||
char *cpu_affinity;
|
||||
char *custom_charset_4;
|
||||
char *debug_file;
|
||||
@ -2422,7 +2469,8 @@ typedef struct user_options
|
||||
const char *rule_buf_r;
|
||||
const char *session;
|
||||
u32 attack_mode;
|
||||
u32 backend_devices_virtual;
|
||||
u32 backend_devices_virtmulti;
|
||||
u32 backend_devices_virthost;
|
||||
u32 backend_info;
|
||||
u32 benchmark_max;
|
||||
u32 benchmark_min;
|
||||
@ -2872,6 +2920,50 @@ typedef struct event_ctx
|
||||
|
||||
} event_ctx_t;
|
||||
|
||||
#define BRIDGE_DEFAULT (void *) -1
|
||||
|
||||
typedef void (*BRIDGE_INIT) (void *);
|
||||
|
||||
typedef struct bridge_ctx
|
||||
{
|
||||
// local variables
|
||||
|
||||
size_t bridge_context_size;
|
||||
int bridge_interface_version;
|
||||
|
||||
hc_dynlib_t bridge_handle;
|
||||
|
||||
BRIDGE_INIT bridge_init;
|
||||
|
||||
bool enabled;
|
||||
|
||||
void *platform_context;
|
||||
|
||||
void *pws_buf; // transfer buffer for tmps[]
|
||||
|
||||
// functions
|
||||
|
||||
void *(*platform_init) (user_options_t *);
|
||||
void (*platform_term) (void *);
|
||||
|
||||
int (*get_unit_count) (void *);
|
||||
char *(*get_unit_info) (void *, const int);
|
||||
int (*get_workitem_count) (void *, const int);
|
||||
|
||||
bool (*salt_prepare) (void *, hashconfig_t *, hashes_t *);
|
||||
void (*salt_destroy) (void *, hashconfig_t *, hashes_t *);
|
||||
|
||||
bool (*thread_init) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *);
|
||||
void (*thread_term) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *);
|
||||
|
||||
bool (*launch_loop) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *, const u32, const u64);
|
||||
bool (*launch_loop2) (void *, hc_device_param_t *, hashconfig_t *, hashes_t *, const u32, const u64);
|
||||
|
||||
const char *(*st_update_pass) (void *);
|
||||
const char *(*st_update_hash) (void *);
|
||||
|
||||
} bridge_ctx_t;
|
||||
|
||||
#define MODULE_DEFAULT (void *) -1
|
||||
|
||||
typedef void (*MODULE_INIT) (void *);
|
||||
@ -2969,12 +3061,16 @@ typedef struct module_ctx
|
||||
|
||||
bool (*module_potfile_custom_check) (const hashconfig_t *, const hash_t *, const hash_t *, const void *);
|
||||
|
||||
u64 (*module_bridge_type) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *);
|
||||
const char *(*module_bridge_name) (const hashconfig_t *, const user_options_t *, const user_options_extra_t *);
|
||||
|
||||
} module_ctx_t;
|
||||
|
||||
typedef struct hashcat_ctx
|
||||
{
|
||||
brain_ctx_t *brain_ctx;
|
||||
bitmap_ctx_t *bitmap_ctx;
|
||||
bridge_ctx_t *bridge_ctx;
|
||||
combinator_ctx_t *combinator_ctx;
|
||||
cpt_ctx_t *cpt_ctx;
|
||||
debugfile_ctx_t *debugfile_ctx;
|
||||
@ -3020,6 +3116,7 @@ typedef struct hook_thread_param
|
||||
int tid;
|
||||
int tsz;
|
||||
|
||||
bridge_ctx_t *bridge_ctx;
|
||||
module_ctx_t *module_ctx;
|
||||
status_ctx_t *status_ctx;
|
||||
|
||||
|
0
obj/contrib/minizip/.gitkeep
Normal file
0
obj/contrib/minizip/.gitkeep
Normal file
80
src/Makefile
80
src/Makefile
@ -54,6 +54,7 @@ endif
|
||||
##
|
||||
|
||||
MODULE_INTERFACE_VERSION := 700
|
||||
BRIDGE_INTERFACE_VERSION := 700
|
||||
|
||||
##
|
||||
## Native compiler paths
|
||||
@ -213,12 +214,11 @@ endif
|
||||
## because UNRAR
|
||||
ifeq ($(ENABLE_UNRAR),1)
|
||||
ifeq ($(USE_SYSTEM_UNRAR),0)
|
||||
CFLAGS_UNRAR += -std=c++14
|
||||
ifneq ($(CC),clang)
|
||||
CFLAGS_UNRAR += -Wno-class-memaccess
|
||||
CFLAGS_UNRAR += -Wno-misleading-indentation
|
||||
CFLAGS_UNRAR += -Wno-format-overflow
|
||||
else
|
||||
CFLAGS_UNRAR += -std=c++11
|
||||
endif
|
||||
CFLAGS_UNRAR += -Wno-missing-braces
|
||||
CFLAGS_UNRAR += -Wno-unused-variable
|
||||
@ -407,7 +407,7 @@ EMU_OBJS_ALL += emu_inc_hash_md4 emu_inc_hash_md5 emu_inc_hash_ripemd
|
||||
EMU_OBJS_ALL += emu_inc_cipher_aes emu_inc_cipher_camellia emu_inc_cipher_des emu_inc_cipher_kuznyechik emu_inc_cipher_serpent emu_inc_cipher_twofish
|
||||
EMU_OBJS_ALL += emu_inc_hash_base58
|
||||
|
||||
OBJS_ALL := affinity autotune backend benchmark bitmap bitops combinator common convert cpt cpu_crc32 debugfile dictstat dispatch dynloader event ext_ADL ext_cuda ext_hip ext_nvapi ext_nvml ext_nvrtc ext_hiprtc ext_OpenCL ext_sysfs_amdgpu ext_sysfs_cpu ext_iokit ext_lzma filehandling folder hashcat hashes hlfmt hwmon induct interface keyboard_layout locking logfile loopback memory monitor mpsp outfile_check outfile pidfile potfile restore rp rp_cpu selftest slow_candidates shared status stdout straight terminal thread timer tuningdb usage user_options wordlist $(EMU_OBJS_ALL)
|
||||
OBJS_ALL := affinity autotune backend benchmark bitmap bitops bridges combinator common convert cpt cpu_crc32 debugfile dictstat dispatch dynloader event ext_ADL ext_cuda ext_hip ext_nvapi ext_nvml ext_nvrtc ext_hiprtc ext_OpenCL ext_sysfs_amdgpu ext_sysfs_cpu ext_iokit ext_lzma filehandling folder hashcat hashes hlfmt hwmon induct interface keyboard_layout locking logfile loopback memory monitor mpsp outfile_check outfile pidfile potfile restore rp rp_cpu selftest slow_candidates shared status stdout straight terminal thread timer tuningdb usage user_options wordlist $(EMU_OBJS_ALL)
|
||||
|
||||
ifeq ($(ENABLE_BRAIN),1)
|
||||
OBJS_ALL += brain
|
||||
@ -464,15 +464,18 @@ endif
|
||||
##
|
||||
|
||||
.PHONY: default
|
||||
default: $(HASHCAT_FRONTEND) modules
|
||||
default: $(HASHCAT_FRONTEND) modules bridges
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
$(RM) -f $(HASHCAT_FRONTEND)
|
||||
$(RM) -f $(HASHCAT_LIBRARY)
|
||||
$(RM) -rf modules/*.dSYM
|
||||
$(RM) -rf bridges/*.dSYM
|
||||
$(RM) -f modules/*.dll
|
||||
$(RM) -f modules/*.so
|
||||
$(RM) -f bridges/*.dll
|
||||
$(RM) -f bridges/*.so
|
||||
$(RM) -f obj/*/*/*.o
|
||||
$(RM) -f obj/*/*.o
|
||||
$(RM) -f obj/*.o
|
||||
@ -516,9 +519,9 @@ endif
|
||||
|
||||
.PHONY: install
|
||||
ifeq ($(SHARED),1)
|
||||
install: install_docs install_shared install_library install_library_dev install_tunings install_kernels install_modules install_hashcat
|
||||
install: install_docs install_shared install_library install_library_dev install_tunings install_kernels install_modules install_bridges install_hashcat
|
||||
else
|
||||
install: install_docs install_shared install_tunings install_kernels install_modules install_hashcat
|
||||
install: install_docs install_shared install_tunings install_kernels install_modules install_bridges 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)
|
||||
@ -591,6 +594,12 @@ install_modules: install_shared modules
|
||||
$(FIND) modules/ -mindepth 1 -type d -execdir $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/modules/{} \;
|
||||
$(FIND) modules/ -mindepth 1 -type f -execdir $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/modules/{} \;
|
||||
|
||||
.PHONY: install_bridges
|
||||
install_bridges: install_shared bridges
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/bridges
|
||||
$(FIND) bridges/ -mindepth 1 -type d -execdir $(INSTALL) -m 755 -d $(DESTDIR)$(SHARED_FOLDER)/bridges/{} \;
|
||||
$(FIND) bridges/ -mindepth 1 -type f -execdir $(INSTALL) -m 644 {} $(DESTDIR)$(SHARED_FOLDER)/bridges/{} \;
|
||||
|
||||
.PHONY: install_library
|
||||
install_library: $(HASHCAT_LIBRARY)
|
||||
$(INSTALL) -m 755 -d $(DESTDIR)$(LIBRARY_FOLDER)
|
||||
@ -714,6 +723,40 @@ MODULES_LIB := $(patsubst src/modules/module_%.c, modules/module_%.$(MODULE_SU
|
||||
.PHONY: modules
|
||||
modules: $(MODULES_LIB)
|
||||
|
||||
##
|
||||
## native compiled bridges
|
||||
##
|
||||
|
||||
BRIDGE_SUFFIX := so
|
||||
|
||||
ifeq ($(UNAME),CYGWIN)
|
||||
BRIDGE_SUFFIX := dll
|
||||
endif
|
||||
|
||||
ifeq ($(UNAME),MSYS2)
|
||||
BRIDGE_SUFFIX := dll
|
||||
endif
|
||||
|
||||
BRIDGES_SRC := $(wildcard src/bridges/*.c)
|
||||
|
||||
## not used so far, see modules above
|
||||
BRIDGES_DISABLE ?=
|
||||
|
||||
$(BRIDGES_DISABLE): ;
|
||||
|
||||
ifeq ($(SHARED),1)
|
||||
bridges/bridge_%.$(BRIDGE_SUFFIX): src/bridges/bridge_%.c $(HASHCAT_LIBRARY)
|
||||
$(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) -march=native
|
||||
else
|
||||
bridges/bridge_%.$(BRIDGE_SUFFIX): src/bridges/bridge_%.c obj/combined.NATIVE.a
|
||||
$(CC) $(CCFLAGS) $(CFLAGS_NATIVE) $^ -o $@ $(LFLAGS_NATIVE) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) -march=native
|
||||
endif
|
||||
|
||||
BRIDGES_LIB := $(patsubst src/bridges/bridge_%.c, bridges/bridge_%.$(BRIDGE_SUFFIX), $(BRIDGES_SRC))
|
||||
|
||||
.PHONY: bridges
|
||||
bridges: $(BRIDGES_LIB)
|
||||
|
||||
##
|
||||
## Cross Compilation (binary release version)
|
||||
##
|
||||
@ -799,8 +842,8 @@ host_linux: hashcat.bin
|
||||
host_win: hashcat.exe
|
||||
|
||||
.PHONY: linux win
|
||||
linux: host_linux modules_linux
|
||||
win: host_win modules_win
|
||||
linux: host_linux modules_linux bridges_linux
|
||||
win: host_win modules_win bridges_win
|
||||
endif
|
||||
|
||||
##
|
||||
@ -820,6 +863,24 @@ modules/module_%.so: src/modules/module_%.c obj/combined.LINUX.a
|
||||
modules/module_%.dll: src/modules/module_%.c obj/combined.WIN.a
|
||||
$(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D MODULE_INTERFACE_VERSION_CURRENT=$(MODULE_INTERFACE_VERSION)
|
||||
|
||||
##
|
||||
## cross compiled bridges
|
||||
##
|
||||
|
||||
BRIDGES_LIB_LINUX := $(patsubst src/bridges/bridge_%.c, bridges/bridge_%.so, $(BRIDGES_SRC))
|
||||
BRIDGES_LIB_WIN := $(patsubst src/bridges/bridge_%.c, bridges/bridge_%.dll, $(BRIDGES_SRC))
|
||||
|
||||
.PHONY: bridges_linux bridges_win
|
||||
bridges_linux: $(BRIDGES_LIB_LINUX)
|
||||
bridges_win: $(BRIDGES_LIB_WIN)
|
||||
|
||||
bridges/bridge_%.so: src/bridges/bridge_%.c obj/combined.LINUX.a
|
||||
$(CC_LINUX) $(CCFLAGS) $(CFLAGS_CROSS_LINUX) $^ -o $@ $(LFLAGS_CROSS_LINUX) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) -march=native
|
||||
|
||||
bridges/bridge_%.dll: src/bridges/bridge_%.c obj/combined.WIN.a
|
||||
$(CC_WIN) $(CCFLAGS) $(CFLAGS_CROSS_WIN) $^ -o $@ $(LFLAGS_CROSS_WIN) -shared -fPIC -D BRIDGE_INTERFACE_VERSION_CURRENT=$(BRIDGE_INTERFACE_VERSION) -march=native
|
||||
|
||||
|
||||
##
|
||||
## cross compiled hashcat
|
||||
##
|
||||
@ -885,3 +946,6 @@ endif
|
||||
|
||||
# Give plugin developers a chance to add some 3rd party libraries
|
||||
include $(wildcard src/modules/module_*.mk)
|
||||
|
||||
# Give plugin developers a chance to add some 3rd party libraries
|
||||
include $(wildcard src/bridges/bridge_*.mk)
|
||||
|
452
src/backend.c
452
src/backend.c
@ -43,7 +43,7 @@ static const u32 bzeros[4] = { 0, 0, 0, 0 };
|
||||
|
||||
/* forward declarations */
|
||||
static void rebuild_pws_compressed_append (hc_device_param_t *device_param, const u64 pws_cnt, const u8 chr);
|
||||
|
||||
//
|
||||
static bool is_same_device (const hc_device_param_t *src, const hc_device_param_t *dst)
|
||||
{
|
||||
// First check by PCI address
|
||||
@ -157,7 +157,7 @@ static int backend_ctx_find_alias_devices (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
// show a warning for specifically listed devices if they are an alias
|
||||
|
||||
if (backend_ctx->backend_devices_filter[alias_device->device_id])
|
||||
if (backend_ctx->backend_devices_filter[alias_device->device_id] == 1)
|
||||
{
|
||||
event_log_warning (hashcat_ctx, "The device #%d specifically listed was skipped because it is an alias of device #%d", alias_device->device_id + 1, backend_device->device_id + 1);
|
||||
event_log_warning (hashcat_ctx, NULL);
|
||||
@ -270,51 +270,46 @@ static int ocl_check_dri (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool setup_backend_devices_filter (hashcat_ctx_t *hashcat_ctx, const char *backend_devices, bool *out)
|
||||
static bool setup_backend_devices_filter (hashcat_ctx_t *hashcat_ctx, const char *backend_devices, int *backend_devices_filter)
|
||||
{
|
||||
bool backend_devices_filter[DEVICES_MAX + 1] = {false};
|
||||
const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
|
||||
if (backend_devices)
|
||||
for (int i = 0; i < DEVICES_MAX; i++) backend_devices_filter[i] = 0;
|
||||
|
||||
if (bridge_ctx->enabled == true) return true;
|
||||
|
||||
if (backend_devices == NULL) return true;
|
||||
|
||||
// in this case opposite
|
||||
|
||||
for (int i = 0; i < DEVICES_MAX; i++) backend_devices_filter[i] = 1;
|
||||
|
||||
char *devices = hcstrdup (backend_devices);
|
||||
|
||||
if (devices == NULL) return false;
|
||||
|
||||
char *saveptr = NULL;
|
||||
|
||||
char *next = strtok_r (devices, ",", &saveptr);
|
||||
|
||||
do
|
||||
{
|
||||
char *devices = hcstrdup (backend_devices);
|
||||
const int backend_device_id = (const int) strtol (next, NULL, 10);
|
||||
|
||||
if (devices == NULL) return false;
|
||||
|
||||
char *saveptr = NULL;
|
||||
|
||||
char *next = strtok_r (devices, ",", &saveptr);
|
||||
|
||||
do
|
||||
if ((backend_device_id <= 0) || (backend_device_id >= DEVICES_MAX))
|
||||
{
|
||||
const int backend_device_id = (const int) strtol (next, NULL, 10);
|
||||
event_log_error (hashcat_ctx, "Invalid device_id %d specified.", backend_device_id);
|
||||
|
||||
if ((backend_device_id <= 0) || (backend_device_id >= DEVICES_MAX))
|
||||
{
|
||||
event_log_error (hashcat_ctx, "Invalid device_id %d specified.", backend_device_id);
|
||||
hcfree (devices);
|
||||
|
||||
hcfree (devices);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
backend_devices_filter[backend_device_id - 1] = true;
|
||||
|
||||
} while ((next = strtok_r ((char *) NULL, ",", &saveptr)) != NULL);
|
||||
|
||||
hcfree (devices);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i <= DEVICES_MAX; i++)
|
||||
{
|
||||
backend_devices_filter[i] = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i <= DEVICES_MAX; i++)
|
||||
{
|
||||
out[i] = backend_devices_filter[i];
|
||||
}
|
||||
backend_devices_filter[backend_device_id - 1] = 0;
|
||||
|
||||
} while ((next = strtok_r ((char *) NULL, ",", &saveptr)) != NULL);
|
||||
|
||||
hcfree (devices);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -620,11 +615,6 @@ static bool write_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_
|
||||
return true;
|
||||
}
|
||||
|
||||
u32 backend_device_idx_real_from_virtual (const u32 device_idx, const u32 backend_devices_virtual)
|
||||
{
|
||||
return device_idx / backend_devices_virtual;
|
||||
}
|
||||
|
||||
void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file)
|
||||
{
|
||||
if (opti_type & OPTI_TYPE_OPTIMIZED_KERNEL)
|
||||
@ -952,6 +942,7 @@ int copy_pws_comp (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
||||
|
||||
int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param, const u32 highest_pw_len, const u64 pws_pos, const u64 pws_cnt, const u32 fast_iteration, const u32 salt_pos)
|
||||
{
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
hashes_t *hashes = hashcat_ctx->hashes;
|
||||
module_ctx_t *module_ctx = hashcat_ctx->module_ctx;
|
||||
@ -1073,6 +1064,41 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
||||
// as soon as the first restore checkpoint is reached the prediction is accurate.
|
||||
// also the closer it gets to that point.
|
||||
|
||||
/* workflow overview:
|
||||
|
||||
ATTACK_EXEC_OUTSIDE_KERNEL:
|
||||
COPY_AMPLIFIER_MATERIAL
|
||||
RUN_AMPLIFIER
|
||||
RUN_UTF16_CONVERT
|
||||
RUN_INIT
|
||||
COPY_HOOK_DATA_TO_HOST
|
||||
CALL_HOOK12
|
||||
COPY_HOOK_DATA_TO_DEVICE
|
||||
SALT_REPEATS (default 1):
|
||||
RUN_PREPARE
|
||||
ITER_REPEATS:
|
||||
RUN_LOOP
|
||||
RUN_EXTENTED
|
||||
COPY_BRIDGE_MATERIAL_TO_HOST
|
||||
BRIDGE_LOOP
|
||||
COPY_BRIDGE_MATERIAL_TO_DEVICE
|
||||
COPY_HOOK_DATA_TO_HOST
|
||||
CALL_HOOK23
|
||||
COPY_HOOK_DATA_TO_DEVICE
|
||||
RUN_INIT2
|
||||
SALT_REPEATS (default 1):
|
||||
RUN_PREPARE2
|
||||
ITER2_REPEATS:
|
||||
RUN_LOOP2
|
||||
COPY_BRIDGE_MATERIAL_TO_HOST
|
||||
BRIDGE_LOOP2
|
||||
COPY_BRIDGE_MATERIAL_TO_DEVICE
|
||||
DEEP_COMP_KERNEL:
|
||||
RUN_AUX1/2/3/4
|
||||
RUN_COMP
|
||||
CLEAN_HOOK_DATA
|
||||
*/
|
||||
|
||||
if (true)
|
||||
{
|
||||
if (device_param->is_cuda == true)
|
||||
@ -1214,7 +1240,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
||||
|
||||
if (device_param->is_opencl == true)
|
||||
{
|
||||
if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_FALSE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1;
|
||||
if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_TRUE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1292,6 +1318,60 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
||||
}
|
||||
}
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP)
|
||||
{
|
||||
if (device_param->is_cuda == true)
|
||||
{
|
||||
if (hc_cuMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->cuda_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1;
|
||||
|
||||
if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
if (device_param->is_hip == true)
|
||||
{
|
||||
if (hc_hipMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->hip_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1;
|
||||
|
||||
if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
#if defined (__APPLE__)
|
||||
if (device_param->is_metal == true)
|
||||
{
|
||||
if (hc_mtlMemcpyDtoH (hashcat_ctx, device_param->metal_command_queue, device_param->h_tmps, device_param->metal_d_tmps, 0, pws_cnt * hashconfig->tmp_size) == -1) return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (device_param->is_opencl == true)
|
||||
{
|
||||
/* blocking */
|
||||
if (hc_clEnqueueReadBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1;
|
||||
}
|
||||
|
||||
if (bridge_ctx->launch_loop (bridge_ctx->platform_context, device_param, hashconfig, hashes, salt_pos, pws_cnt) == false) return -1;
|
||||
|
||||
if (device_param->is_cuda == true)
|
||||
{
|
||||
if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
if (device_param->is_hip == true)
|
||||
{
|
||||
if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
#if defined (__APPLE__)
|
||||
if (device_param->is_metal == true)
|
||||
{
|
||||
if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_tmps, 0, device_param->h_tmps, pws_cnt * hashconfig->tmp_size) == -1) return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (device_param->is_opencl == true)
|
||||
{
|
||||
if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (hashconfig->opts_type & OPTS_TYPE_HOOK23)
|
||||
{
|
||||
if (run_kernel (hashcat_ctx, device_param, KERN_RUN_23, pws_pos, pws_cnt, false, 0) == -1) return -1;
|
||||
@ -1374,7 +1454,7 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
||||
|
||||
if (device_param->is_opencl == true)
|
||||
{
|
||||
if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_FALSE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1;
|
||||
if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_hooks, CL_TRUE, 0, pws_cnt * hashconfig->hook_size, device_param->hooks_buf, 0, NULL, NULL) == -1) return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1442,6 +1522,60 @@ int choose_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_param,
|
||||
|
||||
device_param->speed_msec[speed_pos] = speed_msec;
|
||||
}
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP2)
|
||||
{
|
||||
if (device_param->is_cuda == true)
|
||||
{
|
||||
if (hc_cuMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->cuda_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1;
|
||||
|
||||
if (hc_cuStreamSynchronize (hashcat_ctx, device_param->cuda_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
if (device_param->is_hip == true)
|
||||
{
|
||||
if (hc_hipMemcpyDtoHAsync (hashcat_ctx, device_param->h_tmps, device_param->hip_d_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1;
|
||||
|
||||
if (hc_hipStreamSynchronize (hashcat_ctx, device_param->hip_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
#if defined (__APPLE__)
|
||||
if (device_param->is_metal == true)
|
||||
{
|
||||
if (hc_mtlMemcpyDtoH (hashcat_ctx, device_param->metal_command_queue, device_param->h_tmps, device_param->metal_d_tmps, 0, pws_cnt * hashconfig->tmp_size) == -1) return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (device_param->is_opencl == true)
|
||||
{
|
||||
/* blocking */
|
||||
if (hc_clEnqueueReadBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1;
|
||||
}
|
||||
|
||||
if (bridge_ctx->launch_loop2 (bridge_ctx->platform_context, device_param, hashconfig, hashes, salt_pos, pws_cnt) == false) return -1;
|
||||
|
||||
if (device_param->is_cuda == true)
|
||||
{
|
||||
if (hc_cuMemcpyHtoDAsync (hashcat_ctx, device_param->cuda_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->cuda_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
if (device_param->is_hip == true)
|
||||
{
|
||||
if (hc_hipMemcpyHtoDAsync (hashcat_ctx, device_param->hip_d_tmps, device_param->h_tmps, pws_cnt * hashconfig->tmp_size, device_param->hip_stream) == -1) return -1;
|
||||
}
|
||||
|
||||
#if defined (__APPLE__)
|
||||
if (device_param->is_metal == true)
|
||||
{
|
||||
if (hc_mtlMemcpyHtoD (hashcat_ctx, device_param->metal_command_queue, device_param->metal_d_tmps, 0, device_param->h_tmps, pws_cnt * hashconfig->tmp_size) == -1) return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (device_param->is_opencl == true)
|
||||
{
|
||||
if (hc_clEnqueueWriteBuffer (hashcat_ctx, device_param->opencl_command_queue, device_param->opencl_d_tmps, CL_TRUE, 0, pws_cnt * hashconfig->tmp_size, device_param->h_tmps, 0, NULL, NULL) == -1) return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4621,11 +4755,7 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
||||
* Backend device selection
|
||||
*/
|
||||
|
||||
bool backend_devices_filter[DEVICES_MAX + 1];
|
||||
|
||||
if (setup_backend_devices_filter (hashcat_ctx, user_options->backend_devices, backend_devices_filter) == false) return -1;
|
||||
|
||||
for (int i = 0; i <= DEVICES_MAX; i++) backend_ctx->backend_devices_filter[i] = backend_devices_filter[i];
|
||||
if (setup_backend_devices_filter (hashcat_ctx, user_options->backend_devices, backend_ctx->backend_devices_filter) == false) return -1;
|
||||
|
||||
/**
|
||||
* OpenCL device type selection
|
||||
@ -4844,12 +4974,14 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
||||
}
|
||||
}
|
||||
|
||||
/* no longer used
|
||||
opencl_platform_devices_cnt *= user_options->backend_devices_virtual;
|
||||
|
||||
for (int i = opencl_platform_devices_cnt - 1; i >= 0; i--)
|
||||
{
|
||||
opencl_platform_devices[i] = opencl_platform_devices[backend_device_idx_real_from_virtual (i, user_options->backend_devices_virtual)];
|
||||
}
|
||||
*/
|
||||
|
||||
opencl_platforms_devices[opencl_platforms_idx] = opencl_platform_devices;
|
||||
opencl_platforms_devices_cnt[opencl_platforms_idx] = opencl_platform_devices_cnt;
|
||||
@ -4904,6 +5036,11 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
||||
}
|
||||
}
|
||||
|
||||
// we don't want accelerators here
|
||||
// for this kind of devices, we use accelerator bridge plugin interface
|
||||
|
||||
opencl_device_types_filter &= ~CL_DEVICE_TYPE_ACCELERATOR;
|
||||
|
||||
backend_ctx->opencl_device_types_filter = opencl_device_types_filter;
|
||||
}
|
||||
}
|
||||
@ -4990,6 +5127,7 @@ void backend_ctx_destroy (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
{
|
||||
const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
const folder_config_t *folder_config = hashcat_ctx->folder_config;
|
||||
backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
||||
user_options_t *user_options = hashcat_ctx->user_options;
|
||||
@ -5005,7 +5143,16 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
bool need_sysfs_cpu = false;
|
||||
bool need_iokit = false;
|
||||
|
||||
int backend_devices_idx = 0;
|
||||
int bridge_link_device = 0; // this will only count active device
|
||||
|
||||
int backend_devices_idx = 0; // this will not only count active devices
|
||||
|
||||
bool is_virtualized = ((user_options->backend_devices_virtmulti > 1) || (bridge_ctx->enabled == true)) ? true : false;
|
||||
|
||||
int virtmulti = (bridge_ctx->enabled == true) ? bridge_ctx->get_unit_count (bridge_ctx->platform_context) : (int) user_options->backend_devices_virtmulti;
|
||||
|
||||
int virthost = -1;
|
||||
int virthost_finder = user_options->backend_devices_virthost;
|
||||
|
||||
// CUDA
|
||||
|
||||
@ -5021,7 +5168,21 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
cuda_close (hashcat_ctx);
|
||||
}
|
||||
|
||||
cuda_devices_cnt *= user_options->backend_devices_virtual;
|
||||
if (is_virtualized == true)
|
||||
{
|
||||
if ((virthost == -1) && (virthost_finder <= cuda_devices_cnt))
|
||||
{
|
||||
cuda_devices_cnt = virtmulti;
|
||||
|
||||
virthost = virthost_finder - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
virthost_finder -= cuda_devices_cnt;
|
||||
|
||||
cuda_devices_cnt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
backend_ctx->cuda_devices_cnt = cuda_devices_cnt;
|
||||
|
||||
@ -5031,7 +5192,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
{
|
||||
const u32 device_id = backend_devices_idx;
|
||||
|
||||
const u32 cuda_devices_idx_real = backend_device_idx_real_from_virtual (cuda_devices_idx, user_options->backend_devices_virtual);
|
||||
const u32 cuda_devices_idx_real = (is_virtualized == true) ? virthost : cuda_devices_idx;
|
||||
|
||||
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
||||
|
||||
@ -5284,7 +5445,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
// skipped
|
||||
|
||||
if (!backend_ctx->backend_devices_filter[device_id])
|
||||
if (backend_ctx->backend_devices_filter[device_id] == 1)
|
||||
{
|
||||
device_param->skipped = true;
|
||||
}
|
||||
@ -5411,7 +5572,12 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
* activate device
|
||||
*/
|
||||
|
||||
if (device_param->skipped == false) cuda_devices_active++;
|
||||
if (device_param->skipped == false)
|
||||
{
|
||||
device_param->bridge_link_device = bridge_link_device++;
|
||||
|
||||
cuda_devices_active++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5432,7 +5598,21 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
hip_close (hashcat_ctx);
|
||||
}
|
||||
|
||||
hip_devices_cnt *= user_options->backend_devices_virtual;
|
||||
if (is_virtualized == true)
|
||||
{
|
||||
if ((virthost == -1) && (virthost_finder <= hip_devices_cnt))
|
||||
{
|
||||
hip_devices_cnt = virtmulti;
|
||||
|
||||
virthost = virthost_finder - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
virthost_finder -= hip_devices_cnt;
|
||||
|
||||
hip_devices_cnt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
backend_ctx->hip_devices_cnt = hip_devices_cnt;
|
||||
|
||||
@ -5442,7 +5622,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
{
|
||||
const u32 device_id = backend_devices_idx;
|
||||
|
||||
const u32 hip_devices_idx_real = backend_device_idx_real_from_virtual (hip_devices_idx, user_options->backend_devices_virtual);
|
||||
const u32 hip_devices_idx_real = (is_virtualized == true) ? virthost : hip_devices_idx;
|
||||
|
||||
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
||||
|
||||
@ -5701,7 +5881,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
// skipped
|
||||
|
||||
if (!backend_ctx->backend_devices_filter[device_id])
|
||||
if (backend_ctx->backend_devices_filter[device_id] == 1)
|
||||
{
|
||||
device_param->skipped = true;
|
||||
}
|
||||
@ -5842,7 +6022,12 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
* activate device
|
||||
*/
|
||||
|
||||
if (device_param->skipped == false) hip_devices_active++;
|
||||
if (device_param->skipped == false)
|
||||
{
|
||||
device_param->bridge_link_device = bridge_link_device++;
|
||||
|
||||
hip_devices_active++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -5864,7 +6049,21 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
mtl_close (hashcat_ctx);
|
||||
}
|
||||
|
||||
metal_devices_cnt *= user_options->backend_devices_virtual;
|
||||
if (is_virtualized == true)
|
||||
{
|
||||
if ((virthost == -1) && (virthost_finder <= metal_devices_cnt))
|
||||
{
|
||||
metal_devices_cnt = virtmulti;
|
||||
|
||||
virthost = virthost_finder - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
virthost_finder -= metal_devices_cnt;
|
||||
|
||||
metal_devices_cnt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
backend_ctx->metal_devices_cnt = metal_devices_cnt;
|
||||
|
||||
@ -5874,7 +6073,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
{
|
||||
const u32 device_id = backend_devices_idx;
|
||||
|
||||
const u32 metal_devices_idx_real = backend_device_idx_real_from_virtual (metal_devices_idx, user_options->backend_devices_virtual);
|
||||
const u32 metal_devices_idx_real = (is_virtualized == true) ? virthost : metal_devices_idx;
|
||||
|
||||
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
||||
|
||||
@ -6198,7 +6397,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
// skipped
|
||||
|
||||
if (!backend_ctx->backend_devices_filter[device_id])
|
||||
if (backend_ctx->backend_devices_filter[device_id] == 1)
|
||||
{
|
||||
device_param->skipped = true;
|
||||
}
|
||||
@ -6250,7 +6449,12 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
* activate device
|
||||
*/
|
||||
|
||||
if (device_param->skipped == false) metal_devices_active++;
|
||||
if (device_param->skipped == false)
|
||||
{
|
||||
device_param->bridge_link_device = bridge_link_device++;
|
||||
|
||||
metal_devices_active++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // __APPLE__
|
||||
@ -6282,6 +6486,24 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
cl_uint opencl_platform_vendor_id = opencl_platforms_vendor_id[opencl_platforms_idx];
|
||||
char *opencl_platform_version = opencl_platforms_version[opencl_platforms_idx];
|
||||
|
||||
if (is_virtualized == true)
|
||||
{
|
||||
if ((virthost == -1) && (virthost_finder <= (int) opencl_platform_devices_cnt))
|
||||
{
|
||||
opencl_platform_devices_cnt = virtmulti;
|
||||
|
||||
virthost = virthost_finder - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
virthost_finder -= (int) opencl_platform_devices_cnt;
|
||||
|
||||
opencl_platform_devices_cnt = 0;
|
||||
}
|
||||
|
||||
opencl_platforms_devices_cnt[opencl_platforms_idx] = opencl_platform_devices_cnt;
|
||||
}
|
||||
|
||||
for (u32 opencl_platform_devices_idx = 0; opencl_platform_devices_idx < opencl_platform_devices_cnt; opencl_platform_devices_idx++, backend_devices_idx++, opencl_devices_cnt++)
|
||||
{
|
||||
const u32 device_id = backend_devices_idx;
|
||||
@ -6296,7 +6518,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
device_param->opencl_platform_vendor_id = opencl_platform_vendor_id;
|
||||
|
||||
device_param->opencl_device = opencl_platform_devices[opencl_platform_devices_idx];
|
||||
device_param->opencl_device = opencl_platform_devices[(is_virtualized == true) ? virthost : (int) opencl_platform_devices_idx];
|
||||
|
||||
//device_param->opencl_platform = opencl_platform;
|
||||
|
||||
@ -6997,7 +7219,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
// skipped
|
||||
|
||||
if (!backend_ctx->backend_devices_filter[device_id])
|
||||
if (backend_ctx->backend_devices_filter[device_id] == 1)
|
||||
{
|
||||
device_param->skipped = true;
|
||||
}
|
||||
@ -7602,6 +7824,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
* activate device
|
||||
*/
|
||||
|
||||
device_param->bridge_link_device = bridge_link_device++;
|
||||
|
||||
opencl_devices_active++;
|
||||
}
|
||||
}
|
||||
@ -7633,7 +7857,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
|
||||
if (device_param->skipped == false)
|
||||
{
|
||||
if (backend_ctx->backend_devices_filter[DEVICES_MAX])
|
||||
if (backend_ctx->backend_devices_filter[device_param->device_id] == 1)
|
||||
{
|
||||
if ((user_options->quiet == false) && (user_options->backend_info == 0))
|
||||
{
|
||||
@ -7710,23 +7934,6 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!backend_ctx->backend_devices_filter[DEVICES_MAX])
|
||||
{
|
||||
// maybe we will need this in the future
|
||||
//const u64 backend_devices_cnt_mask = ~(((u64) -1 >> backend_ctx->backend_devices_cnt) << backend_ctx->backend_devices_cnt);
|
||||
|
||||
for (int i = backend_ctx->backend_devices_cnt; i < DEVICES_MAX; i++)
|
||||
{
|
||||
if (backend_ctx->backend_devices_filter[i])
|
||||
{
|
||||
event_log_error (hashcat_ctx, "An invalid device was specified using the --backend-devices parameter.");
|
||||
event_log_error (hashcat_ctx, "The specified device was higher than the number of available devices (%u).", backend_ctx->backend_devices_cnt);
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// time or resource intensive operations which we do not run if the corresponding device was skipped by the user
|
||||
|
||||
if (backend_ctx->cuda)
|
||||
@ -8240,8 +8447,10 @@ void backend_ctx_devices_destroy (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
void backend_ctx_devices_sync_tuning (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
user_options_t *user_options = hashcat_ctx->user_options;
|
||||
|
||||
if (backend_ctx->enabled == false) return;
|
||||
|
||||
@ -8274,6 +8483,38 @@ void backend_ctx_devices_sync_tuning (hashcat_ctx_t *hashcat_ctx)
|
||||
device_param_dst->kernel_power = kernel_power;
|
||||
}
|
||||
}
|
||||
|
||||
// bridge overrides everything
|
||||
|
||||
if (hashconfig->bridge_type)
|
||||
{
|
||||
for (int backend_devices_cnt = 0; backend_devices_cnt < backend_ctx->backend_devices_cnt; backend_devices_cnt++)
|
||||
{
|
||||
hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_cnt];
|
||||
|
||||
if (device_param->skipped == true) continue;
|
||||
if (device_param->skipped_warning == true) continue;
|
||||
|
||||
int workitem_count = bridge_ctx->get_workitem_count (bridge_ctx->platform_context, device_param->bridge_link_device);
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_001) workitem_count = 1;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_002) workitem_count = 2;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_004) workitem_count = 4;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_008) workitem_count = 8;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_016) workitem_count = 16;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_032) workitem_count = 32;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_064) workitem_count = 64;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_128) workitem_count = 128;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_256) workitem_count = 256;
|
||||
|
||||
if ((int) device_param->kernel_power < workitem_count)
|
||||
{
|
||||
if (user_options->quiet == false) event_log_warning (hashcat_ctx, "* Device #%u/Bridge #%u: kernel_power:%" PRIu64 " < workitem_count:%d", device_param->device_id + 1, device_param->bridge_link_device + 1, device_param->kernel_power, workitem_count);
|
||||
}
|
||||
|
||||
device_param->kernel_power = workitem_count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void backend_ctx_devices_update_power (hashcat_ctx_t *hashcat_ctx)
|
||||
@ -9172,6 +9413,7 @@ static bool load_kernel (hashcat_ctx_t *hashcat_ctx, hc_device_param_t *device_p
|
||||
int backend_session_begin (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
const bitmap_ctx_t *bitmap_ctx = hashcat_ctx->bitmap_ctx;
|
||||
const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
const folder_config_t *folder_config = hashcat_ctx->folder_config;
|
||||
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
const hashes_t *hashes = hashcat_ctx->hashes;
|
||||
@ -9501,6 +9743,37 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_MATCH_TUNINGS)
|
||||
{
|
||||
u32 workitem_count = bridge_ctx->get_workitem_count (bridge_ctx->platform_context, device_param->bridge_link_device);
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_001) workitem_count = 1;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_002) workitem_count = 2;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_004) workitem_count = 4;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_008) workitem_count = 8;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_016) workitem_count = 16;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_032) workitem_count = 32;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_064) workitem_count = 64;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_128) workitem_count = 128;
|
||||
else if (hashconfig->bridge_type & BRIDGE_TYPE_FORCE_WORKITEMS_256) workitem_count = 256;
|
||||
|
||||
u32 native_threads = 0;
|
||||
|
||||
if (device_param->opencl_device_type & CL_DEVICE_TYPE_CPU)
|
||||
{
|
||||
native_threads = 1;
|
||||
}
|
||||
else if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)
|
||||
{
|
||||
native_threads = device_param->kernel_preferred_wgs_multiple;
|
||||
}
|
||||
|
||||
const u32 _kernel_accel = ((workitem_count + native_threads - 1) / native_threads) * native_threads;
|
||||
|
||||
device_param->kernel_accel_min = _kernel_accel;
|
||||
device_param->kernel_accel_max = _kernel_accel;
|
||||
}
|
||||
}
|
||||
|
||||
if (user_options->kernel_loops_chgd == true)
|
||||
@ -15408,6 +15681,13 @@ int backend_session_begin (hashcat_ctx_t *hashcat_ctx)
|
||||
* main host data
|
||||
*/
|
||||
|
||||
if (hashconfig->bridge_type)
|
||||
{
|
||||
void *h_tmps = hcmalloc_aligned (device_param->size_tmps, 64);
|
||||
|
||||
device_param->h_tmps = h_tmps;
|
||||
}
|
||||
|
||||
u32 *pws_comp = (u32 *) hcmalloc (size_pws_comp);
|
||||
|
||||
device_param->pws_comp = pws_comp;
|
||||
@ -15742,6 +16022,7 @@ void backend_session_destroy (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
if (device_param->skipped == true) continue;
|
||||
|
||||
hcfree_aligned (device_param->h_tmps);
|
||||
hcfree (device_param->pws_comp);
|
||||
hcfree (device_param->pws_idx);
|
||||
hcfree (device_param->pws_pre_buf);
|
||||
@ -16308,6 +16589,7 @@ void backend_session_destroy (hashcat_ctx_t *hashcat_ctx)
|
||||
device_param->opencl_context = NULL;
|
||||
}
|
||||
|
||||
device_param->h_tmps = NULL;
|
||||
device_param->pws_comp = NULL;
|
||||
device_param->pws_idx = NULL;
|
||||
device_param->pws_pre_buf = NULL;
|
||||
|
274
src/bridges.c
Normal file
274
src/bridges.c
Normal file
@ -0,0 +1,274 @@
|
||||
/**
|
||||
* Author......: See docs/credits.txt
|
||||
* License.....: MIT
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
#include "types.h"
|
||||
#include "memory.h"
|
||||
#include "event.h"
|
||||
#include "shared.h"
|
||||
#include "modules.h"
|
||||
#include "backend.h"
|
||||
#include "dynloader.h"
|
||||
#include "bridges.h"
|
||||
#include "interface.h"
|
||||
|
||||
/**
|
||||
* parsing
|
||||
*/
|
||||
|
||||
int bridge_filename (const folder_config_t *folder_config, const char *bridge_name, char *out_buf, const size_t out_size)
|
||||
{
|
||||
// native compiled
|
||||
#if defined (_WIN) || defined (__CYGWIN__)
|
||||
return snprintf (out_buf, out_size, "%s/bridges/bridge_%s.dll", folder_config->shared_dir, bridge_name);
|
||||
#else
|
||||
return snprintf (out_buf, out_size, "%s/bridges/bridge_%s.so", folder_config->shared_dir, bridge_name);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool bridge_load (hashcat_ctx_t *hashcat_ctx, bridge_ctx_t *bridge_ctx, const char *bridge_name)
|
||||
{
|
||||
const folder_config_t *folder_config = hashcat_ctx->folder_config;
|
||||
|
||||
char *bridge_file = (char *) hcmalloc (HCBUFSIZ_TINY);
|
||||
|
||||
bridge_filename (folder_config, bridge_name, bridge_file, HCBUFSIZ_TINY);
|
||||
|
||||
struct stat s;
|
||||
|
||||
memset (&s, 0, sizeof (struct stat));
|
||||
|
||||
if (stat (bridge_file, &s) == -1)
|
||||
{
|
||||
event_log_warning (hashcat_ctx, "The bridge plugin '%s' couldn't be found.", bridge_file);
|
||||
event_log_warning (hashcat_ctx, NULL);
|
||||
}
|
||||
|
||||
bridge_ctx->bridge_handle = hc_dlopen (bridge_file);
|
||||
|
||||
if (bridge_ctx->bridge_handle == NULL)
|
||||
{
|
||||
#if defined (_WIN)
|
||||
event_log_error (hashcat_ctx, "Cannot load bridge %s", bridge_file); // todo: maybe there's a dlerror () equivalent
|
||||
#else
|
||||
event_log_error (hashcat_ctx, "%s", dlerror ());
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bridge_ctx->bridge_init = (BRIDGE_INIT) hc_dlsym (bridge_ctx->bridge_handle, "bridge_init");
|
||||
|
||||
if (bridge_ctx->bridge_init == NULL)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "Cannot load symbol 'bridge_init' in bridge %s", bridge_file);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
hcfree (bridge_file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void bridge_unload (bridge_ctx_t *bridge_ctx)
|
||||
{
|
||||
if (bridge_ctx->bridge_handle)
|
||||
{
|
||||
hc_dlclose (bridge_ctx->bridge_handle);
|
||||
}
|
||||
}
|
||||
|
||||
bool bridges_init (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
user_options_t *user_options = hashcat_ctx->user_options;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
|
||||
if (user_options->hash_info == true) return true;
|
||||
if (user_options->left == true) return true;
|
||||
if (user_options->show == true) return true;
|
||||
if (user_options->usage > 0) return true;
|
||||
if (user_options->version == true) return true;
|
||||
if (user_options->backend_info > 0) return true;
|
||||
|
||||
// There is a problem here. At this point, hashconfig is not yet initialized.
|
||||
// This is because initializing hashconfig requires the module to be loaded,
|
||||
// but in order to load the module, we need to know the backend devices.
|
||||
// However, the backend devices are also not yet initialized, because
|
||||
// they require the virtualization count, which we only determine here.
|
||||
// To break this chicken-and-egg problem, we cheat by quick-loading the module
|
||||
// and unloading it afterwards, so it can be properly initialized later.
|
||||
|
||||
const int hashconfig_init_rc = hashconfig_init (hashcat_ctx);
|
||||
|
||||
if (hashconfig_init_rc == -1) return false;
|
||||
|
||||
// ok, we can start
|
||||
|
||||
if (hashconfig->bridge_type == BRIDGE_TYPE_NONE)
|
||||
{
|
||||
hashconfig_destroy (hashcat_ctx);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bridge_ctx->enabled = true;
|
||||
|
||||
// finally, the real stuff
|
||||
|
||||
const bool rc_load = bridge_load (hashcat_ctx, bridge_ctx, hashconfig->bridge_name);
|
||||
|
||||
if (rc_load == false) return false;
|
||||
|
||||
bridge_ctx->bridge_init (bridge_ctx);
|
||||
|
||||
if (bridge_ctx->bridge_context_size != BRIDGE_CONTEXT_SIZE_CURRENT)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "bridge context size is invalid. Old template?");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (bridge_ctx->bridge_interface_version < BRIDGE_INTERFACE_VERSION_MINIMUM)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "bridge interface version is outdated, please compile");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// check for missing pointer assignements
|
||||
|
||||
#define CHECK_DEFINED(func) \
|
||||
if ((func) == NULL) \
|
||||
{ \
|
||||
event_log_error (hashcat_ctx, "Missing symbol definitions in bridge '%s'. Old template?", hashconfig->bridge_name); \
|
||||
\
|
||||
return false; \
|
||||
}
|
||||
|
||||
CHECK_DEFINED (bridge_ctx->platform_init);
|
||||
CHECK_DEFINED (bridge_ctx->platform_term);
|
||||
CHECK_DEFINED (bridge_ctx->get_unit_count);
|
||||
CHECK_DEFINED (bridge_ctx->get_unit_info);
|
||||
CHECK_DEFINED (bridge_ctx->get_workitem_count);
|
||||
CHECK_DEFINED (bridge_ctx->thread_init);
|
||||
CHECK_DEFINED (bridge_ctx->thread_term);
|
||||
CHECK_DEFINED (bridge_ctx->salt_prepare);
|
||||
CHECK_DEFINED (bridge_ctx->salt_destroy);
|
||||
CHECK_DEFINED (bridge_ctx->launch_loop);
|
||||
CHECK_DEFINED (bridge_ctx->launch_loop2);
|
||||
CHECK_DEFINED (bridge_ctx->st_update_hash);
|
||||
CHECK_DEFINED (bridge_ctx->st_update_pass);
|
||||
|
||||
#undef CHECK_DEFINED
|
||||
|
||||
// mandatory functions check
|
||||
|
||||
#define CHECK_MANDATORY(func) \
|
||||
if ((func) == MODULE_DEFAULT) \
|
||||
{ \
|
||||
event_log_error (hashcat_ctx, "Missing mandatory symbol definitions"); \
|
||||
\
|
||||
return false; \
|
||||
}
|
||||
|
||||
CHECK_MANDATORY (bridge_ctx->platform_init);
|
||||
CHECK_MANDATORY (bridge_ctx->platform_term);
|
||||
CHECK_MANDATORY (bridge_ctx->get_unit_count);
|
||||
CHECK_MANDATORY (bridge_ctx->get_unit_info);
|
||||
CHECK_MANDATORY (bridge_ctx->get_workitem_count);
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP) CHECK_MANDATORY (bridge_ctx->launch_loop);
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_LAUNCH_LOOP2) CHECK_MANDATORY (bridge_ctx->launch_loop2);
|
||||
|
||||
#undef CHECK_MANDATORY
|
||||
|
||||
bridge_ctx->platform_context = bridge_ctx->platform_init (user_options);
|
||||
|
||||
if (bridge_ctx->platform_context == NULL)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "Platform initialization failed");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// auto adjust workitem counts
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_MATCH_TUNINGS)
|
||||
{
|
||||
if ((hashconfig->opts_type & OPTS_TYPE_NATIVE_THREADS) == 0)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "BRIDGE_TYPE_MATCH_TUNINGS requires OPTS_TYPE_NATIVE_THREADS");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((hashconfig->opts_type & OPTS_TYPE_MP_MULTI_DISABLE) == 0)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "BRIDGE_TYPE_MATCH_TUNINGS requires OPTS_TYPE_MP_MULTI_DISABLE");
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// clean up
|
||||
|
||||
hashconfig_destroy (hashcat_ctx);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void bridges_destroy (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
|
||||
if (bridge_ctx->enabled == false) return;
|
||||
|
||||
bridge_ctx->platform_term (bridge_ctx->platform_context);
|
||||
|
||||
bridge_unload (bridge_ctx);
|
||||
}
|
||||
|
||||
bool bridges_salt_prepare (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
hashes_t *hashes = hashcat_ctx->hashes;
|
||||
user_options_t *user_options = hashcat_ctx->user_options;
|
||||
|
||||
if (user_options->hash_info == true) return true;
|
||||
if (user_options->left == true) return true;
|
||||
if (user_options->show == true) return true;
|
||||
if (user_options->usage > 0) return true;
|
||||
if (user_options->version == true) return true;
|
||||
if (user_options->backend_info > 0) return true;
|
||||
|
||||
if (bridge_ctx->enabled == false) return true;
|
||||
|
||||
if (bridge_ctx->salt_prepare == MODULE_DEFAULT) return true;
|
||||
|
||||
if (bridge_ctx->salt_prepare (bridge_ctx->platform_context, hashconfig, hashes) == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "Couldn't prepare salt specific data in bridge");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void bridges_salt_destroy (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
hashes_t *hashes = hashcat_ctx->hashes;
|
||||
|
||||
if (bridge_ctx->enabled == false) return;
|
||||
|
||||
if (bridge_ctx->salt_destroy == MODULE_DEFAULT) return;
|
||||
|
||||
bridge_ctx->salt_destroy (bridge_ctx->platform_context, hashconfig, hashes);
|
||||
}
|
0
src/bridges/.gitkeep
Normal file
0
src/bridges/.gitkeep
Normal file
@ -355,6 +355,9 @@ HC_API_CALL void *thread_calc_stdin (void *p)
|
||||
|
||||
hashcat_ctx_t *hashcat_ctx = thread_param->hashcat_ctx;
|
||||
backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
hashes_t *hashes = hashcat_ctx->hashes;
|
||||
|
||||
if (backend_ctx->enabled == false) return NULL;
|
||||
|
||||
@ -363,6 +366,14 @@ HC_API_CALL void *thread_calc_stdin (void *p)
|
||||
if (device_param->skipped) return NULL;
|
||||
if (device_param->skipped_warning == true) return NULL;
|
||||
|
||||
if (bridge_ctx->enabled == true)
|
||||
{
|
||||
if (bridge_ctx->thread_init != BRIDGE_DEFAULT)
|
||||
{
|
||||
if (bridge_ctx->thread_init (bridge_ctx->platform_context, device_param, hashconfig, hashes) == false) return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (device_param->is_cuda == true)
|
||||
{
|
||||
if (hc_cuCtxPushCurrent (hashcat_ctx, device_param->cuda_context) == -1) return NULL;
|
||||
@ -390,6 +401,14 @@ HC_API_CALL void *thread_calc_stdin (void *p)
|
||||
if (hc_hipCtxPopCurrent (hashcat_ctx, &device_param->hip_context) == -1) return NULL;
|
||||
}
|
||||
|
||||
if (bridge_ctx->enabled == true)
|
||||
{
|
||||
if (bridge_ctx->thread_term != BRIDGE_DEFAULT)
|
||||
{
|
||||
bridge_ctx->thread_term (bridge_ctx->platform_context, device_param, hashconfig, hashes);
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -1640,6 +1659,9 @@ HC_API_CALL void *thread_calc (void *p)
|
||||
|
||||
hashcat_ctx_t *hashcat_ctx = thread_param->hashcat_ctx;
|
||||
backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
||||
bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
hashes_t *hashes = hashcat_ctx->hashes;
|
||||
|
||||
if (backend_ctx->enabled == false) return NULL;
|
||||
|
||||
@ -1648,6 +1670,14 @@ HC_API_CALL void *thread_calc (void *p)
|
||||
if (device_param->skipped) return NULL;
|
||||
if (device_param->skipped_warning == true) return NULL;
|
||||
|
||||
if (bridge_ctx->enabled == true)
|
||||
{
|
||||
if (bridge_ctx->thread_init != BRIDGE_DEFAULT)
|
||||
{
|
||||
if (bridge_ctx->thread_init (bridge_ctx->platform_context, device_param, hashconfig, hashes) == false) return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (device_param->is_cuda == true)
|
||||
{
|
||||
if (hc_cuCtxPushCurrent (hashcat_ctx, device_param->cuda_context) == -1) return NULL;
|
||||
@ -1675,5 +1705,13 @@ HC_API_CALL void *thread_calc (void *p)
|
||||
if (hc_hipCtxPopCurrent (hashcat_ctx, &device_param->hip_context) == -1) return NULL;
|
||||
}
|
||||
|
||||
if (bridge_ctx->enabled == true)
|
||||
{
|
||||
if (bridge_ctx->thread_term != BRIDGE_DEFAULT)
|
||||
{
|
||||
bridge_ctx->thread_term (bridge_ctx->platform_context, device_param, hashconfig, hashes);
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "autotune.h"
|
||||
#include "benchmark.h"
|
||||
#include "bitmap.h"
|
||||
#include "bridges.h"
|
||||
#include "combinator.h"
|
||||
#include "cpt.h"
|
||||
#include "debugfile.h"
|
||||
@ -836,6 +837,21 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
EVENT (EVENT_POTFILE_NUM_CRACKED);
|
||||
|
||||
/**
|
||||
* setup salts for bridges, needs to be after bridge init, but before session start
|
||||
*/
|
||||
|
||||
EVENT (EVENT_BRIDGES_SALT_PRE);
|
||||
|
||||
if (bridges_salt_prepare (hashcat_ctx) == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "Bridge salt preparation for hash-mode '%u' failed.", user_options->hash_mode);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
EVENT (EVENT_BRIDGES_SALT_POST);
|
||||
|
||||
/**
|
||||
* inform the user
|
||||
*/
|
||||
@ -858,6 +874,8 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
|
||||
brain_ctx_destroy (hashcat_ctx);
|
||||
#endif
|
||||
|
||||
bridges_salt_destroy (hashcat_ctx);
|
||||
bridges_destroy (hashcat_ctx);
|
||||
bitmap_ctx_destroy (hashcat_ctx);
|
||||
combinator_ctx_destroy (hashcat_ctx);
|
||||
cpt_ctx_destroy (hashcat_ctx);
|
||||
@ -1034,6 +1052,8 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
|
||||
brain_ctx_destroy (hashcat_ctx);
|
||||
#endif
|
||||
|
||||
bridges_salt_destroy (hashcat_ctx);
|
||||
bridges_destroy (hashcat_ctx);
|
||||
bitmap_ctx_destroy (hashcat_ctx);
|
||||
combinator_ctx_destroy (hashcat_ctx);
|
||||
cpt_ctx_destroy (hashcat_ctx);
|
||||
@ -1065,6 +1085,7 @@ int hashcat_init (hashcat_ctx_t *hashcat_ctx, void (*event) (const u32, struct h
|
||||
|
||||
hashcat_ctx->bitmap_ctx = (bitmap_ctx_t *) hcmalloc (sizeof (bitmap_ctx_t));
|
||||
hashcat_ctx->brain_ctx = (brain_ctx_t *) hcmalloc (sizeof (brain_ctx_t));
|
||||
hashcat_ctx->bridge_ctx = (bridge_ctx_t *) hcmalloc (sizeof (bridge_ctx_t));
|
||||
hashcat_ctx->combinator_ctx = (combinator_ctx_t *) hcmalloc (sizeof (combinator_ctx_t));
|
||||
hashcat_ctx->cpt_ctx = (cpt_ctx_t *) hcmalloc (sizeof (cpt_ctx_t));
|
||||
hashcat_ctx->debugfile_ctx = (debugfile_ctx_t *) hcmalloc (sizeof (debugfile_ctx_t));
|
||||
@ -1100,6 +1121,7 @@ void hashcat_destroy (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
hcfree (hashcat_ctx->bitmap_ctx);
|
||||
hcfree (hashcat_ctx->brain_ctx);
|
||||
hcfree (hashcat_ctx->bridge_ctx);
|
||||
hcfree (hashcat_ctx->combinator_ctx);
|
||||
hcfree (hashcat_ctx->cpt_ctx);
|
||||
hcfree (hashcat_ctx->debugfile_ctx);
|
||||
@ -1291,6 +1313,21 @@ int hashcat_session_init (hashcat_ctx_t *hashcat_ctx, const char *install_folder
|
||||
|
||||
if (user_options_check_files (hashcat_ctx) == -1) return -1;
|
||||
|
||||
/**
|
||||
* Load bridge a bit too early actually, but we need to know the unit count so we can automatically configure virtualization for the user
|
||||
*/
|
||||
|
||||
EVENT (EVENT_BRIDGES_INIT_PRE);
|
||||
|
||||
if (bridges_init (hashcat_ctx) == false)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "Bridge initialization for hash-mode '%u' failed.", user_options->hash_mode);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
EVENT (EVENT_BRIDGES_INIT_POST);
|
||||
|
||||
/**
|
||||
* Init backend library loader
|
||||
*/
|
||||
|
14
src/hashes.c
14
src/hashes.c
@ -2283,13 +2283,19 @@ int hashes_init_stage4 (hashcat_ctx_t *hashcat_ctx)
|
||||
|
||||
if ((hashconfig->opts_type & OPTS_TYPE_DEEP_COMP_KERNEL) == 0)
|
||||
{
|
||||
if (hashconfig->attack_exec == ATTACK_EXEC_OUTSIDE_KERNEL)
|
||||
if ((hashconfig->opts_type & OPTS_TYPE_MULTIHASH_DESPITE_ESALT) == 0)
|
||||
{
|
||||
if (hashes->digests_cnt != hashes->salts_cnt)
|
||||
if (hashconfig->attack_exec == ATTACK_EXEC_OUTSIDE_KERNEL)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "This hash-mode plugin cannot crack multiple hashes with the same salt, please select one of the hashes.");
|
||||
if (hashconfig->esalt_size > 0)
|
||||
{
|
||||
if (hashes->digests_cnt != hashes->salts_cnt)
|
||||
{
|
||||
event_log_error (hashcat_ctx, "This hash-mode plugin cannot crack multiple hashes with the same salt, please select one of the hashes.");
|
||||
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -87,6 +87,7 @@ void module_unload (module_ctx_t *module_ctx)
|
||||
int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
|
||||
{
|
||||
const backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
|
||||
const bridge_ctx_t *bridge_ctx = hashcat_ctx->bridge_ctx;
|
||||
const folder_config_t *folder_config = hashcat_ctx->folder_config;
|
||||
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
|
||||
module_ctx_t *module_ctx = hashcat_ctx->module_ctx;
|
||||
@ -153,6 +154,8 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
|
||||
CHECK_DEFINED (module_ctx->module_benchmark_mask);
|
||||
CHECK_DEFINED (module_ctx->module_benchmark_charset);
|
||||
CHECK_DEFINED (module_ctx->module_benchmark_salt);
|
||||
CHECK_DEFINED (module_ctx->module_bridge_name);
|
||||
CHECK_DEFINED (module_ctx->module_bridge_type);
|
||||
CHECK_DEFINED (module_ctx->module_build_plain_postprocess);
|
||||
CHECK_DEFINED (module_ctx->module_deep_comp_kernel);
|
||||
CHECK_DEFINED (module_ctx->module_deprecated_notice);
|
||||
@ -464,6 +467,8 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
|
||||
if (module_ctx->module_kernel_loops_max != MODULE_DEFAULT) hashconfig->kernel_loops_max = module_ctx->module_kernel_loops_max (hashconfig, user_options, user_options_extra);
|
||||
if (module_ctx->module_kernel_threads_min != MODULE_DEFAULT) hashconfig->kernel_threads_min = module_ctx->module_kernel_threads_min (hashconfig, user_options, user_options_extra);
|
||||
if (module_ctx->module_kernel_threads_max != MODULE_DEFAULT) hashconfig->kernel_threads_max = module_ctx->module_kernel_threads_max (hashconfig, user_options, user_options_extra);
|
||||
if (module_ctx->module_bridge_name != MODULE_DEFAULT) hashconfig->bridge_name = module_ctx->module_bridge_name (hashconfig, user_options, user_options_extra);
|
||||
if (module_ctx->module_bridge_type != MODULE_DEFAULT) hashconfig->bridge_type = module_ctx->module_bridge_type (hashconfig, user_options, user_options_extra);
|
||||
|
||||
if (hashconfig->hook_extra_param_size)
|
||||
{
|
||||
@ -495,6 +500,14 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
|
||||
}
|
||||
}
|
||||
|
||||
// selftest bridge update
|
||||
|
||||
if (hashconfig->bridge_type & BRIDGE_TYPE_UPDATE_SELFTEST)
|
||||
{
|
||||
if (bridge_ctx->st_update_hash) hashconfig->st_hash = bridge_ctx->st_update_hash (bridge_ctx->platform_context);
|
||||
if (bridge_ctx->st_update_pass) hashconfig->st_pass = bridge_ctx->st_update_pass (bridge_ctx->platform_context);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
40
src/main.c
40
src/main.c
@ -1157,6 +1157,42 @@ static void main_autotune_finished (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAY
|
||||
event_log_info_nn (hashcat_ctx, "Finished autotune");
|
||||
}
|
||||
|
||||
static void main_bridges_init_pre (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len)
|
||||
{
|
||||
const user_options_t *user_options = hashcat_ctx->user_options;
|
||||
|
||||
if (user_options->quiet == true) return;
|
||||
|
||||
event_log_info_nn (hashcat_ctx, "Initializing bridges. Please be patient...");
|
||||
}
|
||||
|
||||
static void main_bridges_init_post (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len)
|
||||
{
|
||||
const user_options_t *user_options = hashcat_ctx->user_options;
|
||||
|
||||
if (user_options->quiet == true) return;
|
||||
|
||||
event_log_info_nn (hashcat_ctx, "Initialized bridges");
|
||||
}
|
||||
|
||||
static void main_bridges_salt_pre (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len)
|
||||
{
|
||||
const user_options_t *user_options = hashcat_ctx->user_options;
|
||||
|
||||
if (user_options->quiet == true) return;
|
||||
|
||||
event_log_info_nn (hashcat_ctx, "Initializing bridge salts. Please be patient...");
|
||||
}
|
||||
|
||||
static void main_bridges_salt_post (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len)
|
||||
{
|
||||
const user_options_t *user_options = hashcat_ctx->user_options;
|
||||
|
||||
if (user_options->quiet == true) return;
|
||||
|
||||
event_log_info_nn (hashcat_ctx, "Initialized bridge salts");
|
||||
}
|
||||
|
||||
static void event (const u32 id, hashcat_ctx_t *hashcat_ctx, const void *buf, const size_t len)
|
||||
{
|
||||
switch (id)
|
||||
@ -1170,6 +1206,10 @@ static void event (const u32 id, hashcat_ctx_t *hashcat_ctx, const void *buf, co
|
||||
case EVENT_BITMAP_INIT_POST: main_bitmap_init_post (hashcat_ctx, buf, len); break;
|
||||
case EVENT_BITMAP_INIT_PRE: main_bitmap_init_pre (hashcat_ctx, buf, len); break;
|
||||
case EVENT_BITMAP_FINAL_OVERFLOW: main_bitmap_final_overflow (hashcat_ctx, buf, len); break;
|
||||
case EVENT_BRIDGES_INIT_POST: main_bridges_init_post (hashcat_ctx, buf, len); break;
|
||||
case EVENT_BRIDGES_INIT_PRE: main_bridges_init_pre (hashcat_ctx, buf, len); break;
|
||||
case EVENT_BRIDGES_SALT_POST: main_bridges_salt_post (hashcat_ctx, buf, len); break;
|
||||
case EVENT_BRIDGES_SALT_PRE: main_bridges_salt_pre (hashcat_ctx, buf, len); break;
|
||||
case EVENT_CALCULATED_WORDS_BASE: main_calculated_words_base (hashcat_ctx, buf, len); break;
|
||||
case EVENT_CRACKER_FINISHED: main_cracker_finished (hashcat_ctx, buf, len); break;
|
||||
case EVENT_CRACKER_HASH_CRACKED: main_cracker_hash_cracked (hashcat_ctx, buf, len); break;
|
||||
|
@ -130,6 +130,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -155,6 +155,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -148,6 +148,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -152,6 +152,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -147,6 +147,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -260,6 +260,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -162,6 +162,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -146,6 +146,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -154,6 +154,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -132,6 +132,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -132,6 +132,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -128,6 +128,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -146,6 +146,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -177,6 +177,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -173,6 +173,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -172,6 +172,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -155,6 +155,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -173,6 +173,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -169,6 +169,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -163,6 +163,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -145,6 +145,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -173,6 +173,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -179,6 +179,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -150,6 +150,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -147,6 +147,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -114,6 +114,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -145,6 +145,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -242,6 +242,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -261,6 +261,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = module_deep_comp_kernel;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -335,6 +335,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -120,6 +120,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -154,6 +154,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -154,6 +154,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -130,6 +130,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -133,6 +133,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -157,6 +157,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -160,6 +160,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -193,6 +193,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -190,6 +190,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -193,6 +193,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -169,6 +169,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -194,6 +194,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -194,6 +194,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -194,6 +194,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -164,6 +164,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -196,6 +196,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -168,6 +168,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -250,6 +250,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = module_build_plain_postprocess;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -255,6 +255,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -200,6 +200,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -225,6 +225,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -222,6 +222,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -225,6 +225,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -203,6 +203,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -226,6 +226,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -213,6 +213,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -226,6 +226,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -165,6 +165,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -166,6 +166,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -183,6 +183,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -456,12 +456,6 @@ char *module_jit_build_options (MAYBE_UNUSED const hashconfig_t *hashconfig, MAY
|
||||
return jit_build_options;
|
||||
}
|
||||
|
||||
// HIP
|
||||
if (device_param->opencl_device_vendor_id == VENDOR_ID_AMD_USE_HIP)
|
||||
{
|
||||
hc_asprintf (&jit_build_options, "-fno-unroll-loops");
|
||||
}
|
||||
|
||||
// ROCM
|
||||
if ((device_param->opencl_device_vendor_id == VENDOR_ID_AMD) && (device_param->has_vperm == true))
|
||||
{
|
||||
@ -576,6 +570,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -70,6 +70,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -184,6 +184,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -175,6 +175,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -212,6 +212,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -912,6 +912,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = module_benchmark_mask;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = module_deep_comp_kernel;
|
||||
module_ctx->module_deprecated_notice = module_deprecated_notice;
|
||||
|
@ -910,6 +910,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = module_benchmark_mask;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = module_deep_comp_kernel;
|
||||
module_ctx->module_deprecated_notice = module_deprecated_notice;
|
||||
|
@ -139,6 +139,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -153,6 +153,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -155,6 +155,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -156,6 +156,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -137,6 +137,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
@ -167,6 +167,8 @@ void module_init (module_ctx_t *module_ctx)
|
||||
module_ctx->module_benchmark_mask = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_charset = MODULE_DEFAULT;
|
||||
module_ctx->module_benchmark_salt = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_name = MODULE_DEFAULT;
|
||||
module_ctx->module_bridge_type = MODULE_DEFAULT;
|
||||
module_ctx->module_build_plain_postprocess = MODULE_DEFAULT;
|
||||
module_ctx->module_deep_comp_kernel = MODULE_DEFAULT;
|
||||
module_ctx->module_deprecated_notice = MODULE_DEFAULT;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user