1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-22 08:08:10 +00:00

Merge pull request #3167 from matrix/env_info

Added folder_config info to --backend-info/-I output, changed --backend-info/-I option handling
This commit is contained in:
Jens Steube 2022-02-13 22:05:16 +01:00 committed by GitHub
commit fea59e3a3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 230 additions and 209 deletions

View File

@ -45,6 +45,7 @@
- Association Attack: Enable module specific pw_min and pw_max settings to avoid false positives in -a 9 attack-mode
- Autotune: Added error handling. By default skipping device on error, with --force using accel/loops/threads min values instead
- Backend Info: Added folder_config info to output
- Backend Info: Added generic system info to output (must be completed on Windows side)
- Backend Info: Added local memory size to output
- Backend: with kernel build options, switch from -I to -D INCLUDE_PATH, in order to support Apple Metal runtime
@ -71,6 +72,7 @@
- Unit tests: Updated test.sh to set default device-type to CPU with Apple Intel and added -f (--force) option
- Usage Screen: On windows console, wait for any keypress if usage_mini_print() is used
- User Options: Add new module function module_hash_decode_postprocess() to override hash specific configurations from command line
- User Options: Change --backend-info/-I option type, from bool to uint
* changes v6.2.4 -> v6.2.5

View File

@ -664,7 +664,7 @@ typedef enum user_options_defaults
BACKEND_IGNORE_METAL = false,
#endif
BACKEND_IGNORE_OPENCL = false,
BACKEND_INFO = false,
BACKEND_INFO = 0,
BACKEND_VECTOR_WIDTH = 0,
OPTIMIZED_KERNEL_ENABLE = false,
MULTIPLY_ACCEL_DISABLE = false,
@ -2310,7 +2310,7 @@ typedef struct user_options
bool backend_ignore_hip;
bool backend_ignore_metal;
bool backend_ignore_opencl;
bool backend_info;
uint backend_info;
bool optimized_kernel_enable;
bool multiply_accel_disable;
bool outfile_autohex;

View File

@ -5144,7 +5144,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
if (device_param->skipped == false)
{
if ((user_options->force == false) && (user_options->backend_info == false))
if ((user_options->force == false) && (user_options->backend_info == 0))
{
// CUDA does not support query nvidia driver version, therefore no driver checks here
// IF needed, could be retrieved using nvmlSystemGetDriverVersion()
@ -5535,7 +5535,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
if (device_param->skipped == false)
{
if ((user_options->force == false) && (user_options->backend_info == false))
if ((user_options->force == false) && (user_options->backend_info == 0))
{
// CUDA does not support query nvidia driver version, therefore no driver checks here
// IF needed, could be retrieved using nvmlSystemGetDriverVersion()
@ -5968,7 +5968,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
/*
if (device_param->skipped == false)
{
if ((user_options->force == false) && (user_options->backend_info == false))
if ((user_options->force == false) && (user_options->backend_info == 0))
{
}
@ -6963,7 +6963,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
if (device_param->skipped == false)
{
if ((user_options->force == false) && (user_options->backend_info == false))
if ((user_options->force == false) && (user_options->backend_info == 0))
{
if (opencl_device_type & CL_DEVICE_TYPE_CPU)
{
@ -7280,7 +7280,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
if (device_param->is_metal == false) continue;
if (user_options->backend_info == false)
if (user_options->backend_info == 0)
{
// do not ignore in case -I because user expects a value also for skipped devices
@ -7381,7 +7381,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
if (device_param->is_opencl == false) continue;
if (user_options->backend_info == false)
if (user_options->backend_info == 0)
{
// do not ignore in case -I because user expects a value also for skipped devices

View File

@ -72,21 +72,21 @@ static bool generate_bitmaps (const u32 digests_cnt, const u32 dgst_size, const
int bitmap_ctx_init (hashcat_ctx_t *hashcat_ctx)
{
hashes_t *hashes = hashcat_ctx->hashes;
bitmap_ctx_t *bitmap_ctx = hashcat_ctx->bitmap_ctx;
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
hashes_t *hashes = hashcat_ctx->hashes;
user_options_t *user_options = hashcat_ctx->user_options;
bitmap_ctx->enabled = false;
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->backend_info > 0) return 0;
bitmap_ctx->enabled = true;
@ -117,9 +117,7 @@ int bitmap_ctx_init (hashcat_ctx_t *hashcat_ctx)
for (bitmap_bits = bitmap_min; bitmap_bits < bitmap_max; bitmap_bits++)
{
bitmap_nums = 1U << bitmap_bits;
bitmap_mask = bitmap_nums - 1;
bitmap_size = bitmap_nums * sizeof (u32);
if ((hashes->digests_cnt & bitmap_mask) == hashes->digests_cnt) break;
@ -136,9 +134,7 @@ int bitmap_ctx_init (hashcat_ctx_t *hashcat_ctx)
}
bitmap_nums = 1U << bitmap_bits;
bitmap_mask = bitmap_nums - 1;
bitmap_size = bitmap_nums * sizeof (u32);
generate_bitmaps (hashes->digests_cnt, hashconfig->dgst_size, bitmap_shift1, (char *) hashes->digests_buf, hashconfig->dgst_pos0, hashconfig->dgst_pos1, hashconfig->dgst_pos2, hashconfig->dgst_pos3, bitmap_mask, bitmap_size, bitmap_s1_a, bitmap_s1_b, bitmap_s1_c, bitmap_s1_d, -1);

View File

@ -14,17 +14,17 @@ int combinator_ctx_init (hashcat_ctx_t *hashcat_ctx)
{
combinator_ctx_t *combinator_ctx = hashcat_ctx->combinator_ctx;
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
user_options_t *user_options = hashcat_ctx->user_options;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
combinator_ctx->enabled = false;
if (user_options->hash_info == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->left == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->backend_info > 0) return 0;
if ((user_options->attack_mode != ATTACK_MODE_COMBI)
&& (user_options->attack_mode != ATTACK_MODE_HYBRID1)

View File

@ -15,14 +15,14 @@ int cpt_ctx_init (hashcat_ctx_t *hashcat_ctx)
cpt_ctx->enabled = false;
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->backend_info > 0) return 0;
cpt_ctx->enabled = true;

View File

@ -97,7 +97,6 @@ int debugfile_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->stdout_flag == true) return 0;
if (user_options->speed_only == true) return 0;
@ -106,11 +105,11 @@ int debugfile_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->debug_mode == 0) return 0;
if (user_options->backend_info > 0) return 0;
debugfile_ctx->enabled = true;
debugfile_ctx->mode = user_options->debug_mode;
debugfile_ctx->mode = user_options->debug_mode;
debugfile_ctx->filename = user_options->debug_file;
if (debugfile_ctx->filename)

View File

@ -60,11 +60,11 @@ int dictstat_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->backend_info > 0) return 0;
if (user_options->attack_mode == ATTACK_MODE_BF) return 0;

View File

@ -22,7 +22,7 @@ static int get_exec_path (char *exec_path, const size_t exec_path_sz)
{
#if defined (__linux__) || defined (__CYGWIN__)
char *tmp;
char *tmp = NULL;
hc_asprintf (&tmp, "/proc/%d/exe", getpid ());
@ -147,7 +147,7 @@ static void get_session_dir (char *session_dir, const char *profile_dir)
{
snprintf (session_dir, HCBUFSIZ_TINY, "%s/%s", profile_dir, SESSIONS_FOLDER);
}
#endif
#endif // _POSIX
int count_dictionaries (char **dictionary_files)
{
@ -160,12 +160,12 @@ int count_dictionaries (char **dictionary_files)
cnt++;
}
return (cnt);
return cnt;
}
char *first_file_in_directory (const char *path)
{
DIR *d;
DIR *d = NULL;
if ((d = opendir (path)) != NULL)
{
@ -187,7 +187,7 @@ char *first_file_in_directory (const char *path)
#else
struct dirent *de;
struct dirent *de = NULL;
while ((de = readdir (d)) != NULL)
{
@ -246,7 +246,7 @@ char **scan_directory (const char *path)
#else
struct dirent *de;
struct dirent *de = NULL;
while ((de = readdir (d)) != NULL)
{
@ -255,11 +255,11 @@ char **scan_directory (const char *path)
if (de->d_name[0] == '.') continue;
char *path_file;
char *path_file = NULL;
hc_asprintf (&path_file, "%s/%s", tmp_path, de->d_name);
DIR *d_test;
DIR *d_test = NULL;
if ((d_test = opendir (path_file)) != NULL)
{
@ -294,7 +294,7 @@ char **scan_directory (const char *path)
hcfree (tmp_path);
return (files);
return files;
}
int folder_config_init (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const char *install_folder, MAYBE_UNUSED const char *shared_folder)
@ -393,10 +393,13 @@ int folder_config_init (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const char *ins
if (strcmp (install_dir, resolved_install_folder) == 0)
{
struct passwd pw;
struct passwd *pwp;
struct passwd *pwp = NULL;
char buf[HCBUFSIZ_TINY];
memset (buf, 0, sizeof (buf));
memset (&pw, 0, sizeof (pw));
getpwuid_r (getuid (), &pw, buf, HCBUFSIZ_TINY, &pwp);
const char *home_dir = pwp->pw_dir;
@ -448,13 +451,13 @@ int folder_config_init (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const char *ins
* The best workaround found so far is to modify the TMP variable (only inside hashcat process) before the runtime is loaded.
*/
char *cpath;
char *cpath = NULL;
#if defined (_WIN)
hc_asprintf (&cpath, "%s\\OpenCL\\", shared_dir);
char *cpath_real;
char *cpath_real = NULL;
hc_asprintf (&cpath_real, "%s\\OpenCL\\", shared_dir);
@ -481,7 +484,6 @@ int folder_config_init (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const char *ins
shared_dir = NULL;
hcfree (profile_dir);
if (session_dir == profile_dir) session_dir = NULL;
@ -489,7 +491,6 @@ int folder_config_init (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const char *ins
profile_dir = NULL;
hcfree (cache_dir);
if (session_dir == cache_dir) session_dir = NULL;
@ -536,7 +537,7 @@ int folder_config_init (hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const char *ins
* kernel cache, we need to make sure folder exist
*/
char *kernels_folder;
char *kernels_folder = NULL;
hc_asprintf (&kernels_folder, "%s/kernels", cache_dir);

View File

@ -1122,7 +1122,7 @@ int hashes_init_stage1 (hashcat_ctx_t *hashcat_ctx)
else if (user_options->stdout_flag == true)
{
}
else if (user_options->backend_info == true)
else if (user_options->backend_info > 0)
{
}
else

View File

@ -1204,13 +1204,13 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->stdout_flag == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->hwmon_disable == true) return 0;
if (user_options->backend_info > 0) return 0;
hwmon_ctx->hm_device = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));

View File

@ -43,7 +43,6 @@ int induct_ctx_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->stdout_flag == true) return 0;
if (user_options->speed_only == true) return 0;
@ -51,6 +50,7 @@ int induct_ctx_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->backend_info > 0) return 0;
if ((user_options->attack_mode != ATTACK_MODE_STRAIGHT)
&& (user_options->attack_mode != ATTACK_MODE_ASSOCIATION)) return 0;

View File

@ -64,7 +64,6 @@ int loopback_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->stdout_flag == true) return 0;
if (user_options->speed_only == true) return 0;
@ -72,6 +71,7 @@ int loopback_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->backend_info > 0) return 0;
loopback_ctx->enabled = true;
loopback_ctx->fp.pfp = NULL;

View File

@ -184,12 +184,12 @@ static void main_outerloop_starting (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MA
status_ctx->shutdown_outer = false;
if (user_options->hash_info == true) return;
if (user_options->keyspace == true) return;
if (user_options->stdout_flag == true) return;
if (user_options->backend_info == true) return;
if (user_options->speed_only == true) return;
if (user_options->identify == true) return;
if (user_options->hash_info == true) return;
if (user_options->keyspace == true) return;
if (user_options->stdout_flag == true) return;
if (user_options->speed_only == true) return;
if (user_options->identify == true) return;
if (user_options->backend_info > 0) return;
if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK))
{
@ -261,10 +261,10 @@ static void main_cracker_finished (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYB
const user_options_t *user_options = hashcat_ctx->user_options;
const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
if (user_options->hash_info == true) return;
if (user_options->keyspace == true) return;
if (user_options->backend_info == true) return;
if (user_options->stdout_flag == true) return;
if (user_options->hash_info == true) return;
if (user_options->keyspace == true) return;
if (user_options->stdout_flag == true) return;
if (user_options->backend_info > 0) return;
// if we had a prompt, clear it
@ -1265,7 +1265,7 @@ int main (int argc, char **argv)
rc_final = 0;
}
else if (user_options->backend_info == true)
else if (user_options->backend_info > 0)
{
// if this is just backend_info, no need to execute some real cracking session

View File

@ -1394,23 +1394,23 @@ int mask_ctx_update_loop (hashcat_ctx_t *hashcat_ctx)
int mask_ctx_init (hashcat_ctx_t *hashcat_ctx)
{
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
const user_options_t *user_options = hashcat_ctx->user_options;
mask_ctx_t *mask_ctx = hashcat_ctx->mask_ctx;
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
const user_options_t *user_options = hashcat_ctx->user_options;
mask_ctx_t *mask_ctx = hashcat_ctx->mask_ctx;
mask_ctx->enabled = false;
if (user_options->hash_info == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->left == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->backend_info > 0) return 0;
if (user_options->attack_mode == ATTACK_MODE_STRAIGHT) return 0;
if (user_options->attack_mode == ATTACK_MODE_COMBI) return 0;
if (user_options->attack_mode == ATTACK_MODE_ASSOCIATION) return 0;
if (user_options->attack_mode == ATTACK_MODE_ASSOCIATION) return 0;
if (user_options->attack_mode == ATTACK_MODE_STRAIGHT) return 0;
if (user_options->attack_mode == ATTACK_MODE_COMBI) return 0;
mask_ctx->enabled = true;

View File

@ -348,12 +348,11 @@ int outcheck_ctx_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->hash_info == true) return 0;
if (user_options->speed_only == true) return 0;
if (user_options->progress_only == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->backend_info > 0) return 0;
if (hashconfig->outfile_check_disable == true) return 0;
if (user_options->outfile_check_timer == 0) return 0;
if (user_options->outfile_check_timer == 0) return 0;
if (user_options->outfile_check_dir == NULL)
{
@ -385,8 +384,7 @@ void outcheck_ctx_destroy (hashcat_ctx_t *hashcat_ctx)
outcheck_ctx_t *outcheck_ctx = hashcat_ctx->outcheck_ctx;
user_options_t *user_options = hashcat_ctx->user_options;
if (outcheck_ctx->enabled == false) return;
if (outcheck_ctx->enabled == false) return;
if (hashconfig->outfile_check_disable == true) return;
if (rmdir (outcheck_ctx->root_directory) == -1)

View File

@ -104,16 +104,15 @@ void pot_tree_destroy (pot_tree_entry_t *tree)
int potfile_init (hashcat_ctx_t *hashcat_ctx)
{
const folder_config_t *folder_config = hashcat_ctx->folder_config;
const user_options_t *user_options = hashcat_ctx->user_options;
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
const user_options_t *user_options = hashcat_ctx->user_options;
potfile_ctx->enabled = false;
if (user_options->benchmark == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->stdout_flag == true) return 0;
if (user_options->speed_only == true) return 0;
if (user_options->progress_only == true) return 0;
@ -121,8 +120,9 @@ int potfile_init (hashcat_ctx_t *hashcat_ctx)
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->potfile_disable == true) return 0;
if (user_options->backend_info > 0) return 0;
if (hashconfig->potfile_disable == true) return 0;
if (hashconfig->potfile_disable == true) return 0;
potfile_ctx->enabled = true;
@ -186,7 +186,7 @@ void potfile_destroy (hashcat_ctx_t *hashcat_ctx)
int potfile_read_open (hashcat_ctx_t *hashcat_ctx)
{
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
if (potfile_ctx->enabled == false) return 0;
@ -205,7 +205,7 @@ int potfile_read_open (hashcat_ctx_t *hashcat_ctx)
void potfile_read_close (hashcat_ctx_t *hashcat_ctx)
{
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
if (potfile_ctx->enabled == false) return;
@ -217,7 +217,7 @@ void potfile_read_close (hashcat_ctx_t *hashcat_ctx)
int potfile_write_open (hashcat_ctx_t *hashcat_ctx)
{
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
if (potfile_ctx->enabled == false) return 0;
@ -236,7 +236,7 @@ int potfile_write_open (hashcat_ctx_t *hashcat_ctx)
void potfile_write_close (hashcat_ctx_t *hashcat_ctx)
{
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
if (potfile_ctx->enabled == false) return;
@ -249,7 +249,7 @@ void potfile_write_append (hashcat_ctx_t *hashcat_ctx, const char *out_buf, cons
{
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
const user_options_t *user_options = hashcat_ctx->user_options;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
if (potfile_ctx->enabled == false) return;
@ -378,10 +378,10 @@ void potfile_update_hashes (hashcat_ctx_t *hashcat_ctx, hash_t *hash_buf, char *
int potfile_remove_parse (hashcat_ctx_t *hashcat_ctx)
{
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
const hashes_t *hashes = hashcat_ctx->hashes;
const module_ctx_t *module_ctx = hashcat_ctx->module_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
const hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
const hashes_t *hashes = hashcat_ctx->hashes;
const module_ctx_t *module_ctx = hashcat_ctx->module_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
if (potfile_ctx->enabled == false) return 0;
@ -637,10 +637,10 @@ int potfile_handle_show (hashcat_ctx_t *hashcat_ctx)
hashes_t *hashes = hashcat_ctx->hashes;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
hash_t *hashes_buf = hashes->hashes_buf;
u32 salts_cnt = hashes->salts_cnt;
salt_t *salts_buf = hashes->salts_buf;
u32 salts_cnt = hashes->salts_cnt;
salt_t *salts_buf = hashes->salts_buf;
hash_t *hashes_buf = hashes->hashes_buf;
pot_orig_line_entry_t *final_buf = (pot_orig_line_entry_t *) hccalloc (hashes->hashes_cnt, sizeof (pot_orig_line_entry_t));
u32 final_cnt = 0;
@ -879,10 +879,10 @@ int potfile_handle_left (hashcat_ctx_t *hashcat_ctx)
module_ctx_t *module_ctx = hashcat_ctx->module_ctx;
potfile_ctx_t *potfile_ctx = hashcat_ctx->potfile_ctx;
hash_t *hashes_buf = hashes->hashes_buf;
u32 salts_cnt = hashes->salts_cnt;
salt_t *salts_buf = hashes->salts_buf;
u32 salts_cnt = hashes->salts_cnt;
salt_t *salts_buf = hashes->salts_buf;
hash_t *hashes_buf = hashes->hashes_buf;
pot_orig_line_entry_t *final_buf = (pot_orig_line_entry_t *) hccalloc (hashes->hashes_cnt, sizeof (pot_orig_line_entry_t));
u32 final_cnt = 0;

View File

@ -293,7 +293,6 @@ int restore_ctx_init (hashcat_ctx_t *hashcat_ctx, int argc, char **argv)
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->stdout_flag == true) return 0;
if (user_options->speed_only == true) return 0;
@ -302,6 +301,7 @@ int restore_ctx_init (hashcat_ctx_t *hashcat_ctx, int argc, char **argv)
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->restore_disable == true) return 0;
if (user_options->backend_info > 0) return 0;
if (argc == 0) return 0;
if (argv == NULL) return 0;

View File

@ -48,8 +48,8 @@ int straight_ctx_update_loop (hashcat_ctx_t *hashcat_ctx)
mask_ctx_t *mask_ctx = hashcat_ctx->mask_ctx;
status_ctx_t *status_ctx = hashcat_ctx->status_ctx;
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
user_options_t *user_options = hashcat_ctx->user_options;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
if (user_options->attack_mode == ATTACK_MODE_STRAIGHT)
{
@ -256,20 +256,20 @@ int straight_ctx_update_loop (hashcat_ctx_t *hashcat_ctx)
int straight_ctx_init (hashcat_ctx_t *hashcat_ctx)
{
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
user_options_t *user_options = hashcat_ctx->user_options;
straight_ctx_t *straight_ctx = hashcat_ctx->straight_ctx;
user_options_t *user_options = hashcat_ctx->user_options;
user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra;
straight_ctx->enabled = false;
if (user_options->hash_info == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->left == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->backend_info > 0) return 0;
if (user_options->attack_mode == ATTACK_MODE_BF) return 0;
if (user_options->attack_mode == ATTACK_MODE_BF) return 0;
straight_ctx->enabled = true;
@ -502,7 +502,6 @@ void straight_ctx_destroy (hashcat_ctx_t *hashcat_ctx)
}
hcfree (straight_ctx->dicts);
hcfree (straight_ctx->kernel_rules_buf);
memset (straight_ctx, 0, sizeof (straight_ctx_t));

View File

@ -75,7 +75,7 @@ void welcome_screen (hashcat_ctx_t *hashcat_ctx, const char *version_tag)
event_log_info (hashcat_ctx, "%s (%s) starting in progress-only mode", PROGNAME, version_tag);
event_log_info (hashcat_ctx, NULL);
}
else if (user_options->backend_info == true)
else if (user_options->backend_info > 0)
{
event_log_info (hashcat_ctx, "%s (%s) starting in backend information mode", PROGNAME, version_tag);
event_log_info (hashcat_ctx, NULL);
@ -799,66 +799,85 @@ void hash_info (hashcat_ctx_t *hashcat_ctx)
void backend_info (hashcat_ctx_t *hashcat_ctx)
{
const backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
const backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
const user_options_t *user_options = hashcat_ctx->user_options;
const folder_config_t *folder_config = hashcat_ctx->folder_config;
event_log_info (hashcat_ctx, "System Info:");
event_log_info (hashcat_ctx, "============");
event_log_info (hashcat_ctx, NULL);
#if defined (_WIN) || defined (__CYGWIN__) || defined (__MSYS__)
// TODO
event_log_info (hashcat_ctx, "OS.Name......: Windows");
event_log_info (hashcat_ctx, "OS.Release...: N/A");
event_log_info (hashcat_ctx, "HW.Platform..: N/A");
event_log_info (hashcat_ctx, "HW.Model.....: N/A");
#else
struct utsname utsbuf;
bool rc_uname = false;
bool rc_sysctl = false;
char *hw_model_buf = NULL;
#if !defined (__linux__)
size_t hw_model_len = 0;
if (sysctlbyname ("hw.model", NULL, &hw_model_len, NULL, 0) == 0 && hw_model_len > 0)
if (user_options->backend_info > 1)
{
hw_model_buf = (char *) hcmalloc (hw_model_len);
event_log_info (hashcat_ctx, "System Info:");
event_log_info (hashcat_ctx, "============");
event_log_info (hashcat_ctx, NULL);
if (sysctlbyname ("hw.model", hw_model_buf, &hw_model_len, NULL, 0) != 0)
#if defined (_WIN) || defined (__CYGWIN__) || defined (__MSYS__)
// TODO
event_log_info (hashcat_ctx, "OS.Name......: Windows");
event_log_info (hashcat_ctx, "OS.Release...: N/A");
event_log_info (hashcat_ctx, "HW.Platform..: N/A");
event_log_info (hashcat_ctx, "HW.Model.....: N/A");
#else
struct utsname utsbuf;
bool rc_uname = false;
bool rc_sysctl = false;
char *hw_model_buf = NULL;
#if !defined (__linux__)
size_t hw_model_len = 0;
if (sysctlbyname ("hw.model", NULL, &hw_model_len, NULL, 0) == 0 && hw_model_len > 0)
{
hw_model_buf = NULL;
hw_model_len = 0;
hw_model_buf = (char *) hcmalloc (hw_model_len);
if (sysctlbyname ("hw.model", hw_model_buf, &hw_model_len, NULL, 0) != 0)
{
hw_model_buf = NULL;
hw_model_len = 0;
hcfree (hw_model_buf);
}
else
{
rc_sysctl = true;
}
}
#endif // ! __linux__
if (uname (&utsbuf) == 0)
{
rc_uname = true;
}
event_log_info (hashcat_ctx, "OS.Name......: %s", (rc_uname == true) ? utsbuf.sysname : "N/A");
event_log_info (hashcat_ctx, "OS.Release...: %s", (rc_uname == true) ? utsbuf.release : "N/A");
event_log_info (hashcat_ctx, "HW.Model.....: %s", (rc_sysctl == true) ? hw_model_buf : "N/A");
event_log_info (hashcat_ctx, "HW.Platform..: %s", (rc_uname == true) ? utsbuf.machine : "N/A");
if (rc_sysctl == true)
{
hcfree (hw_model_buf);
}
else
{
rc_sysctl = true;
}
#endif // _WIN || __CYGWIN__ || __MSYS__
event_log_info (hashcat_ctx, NULL);
event_log_info (hashcat_ctx, "Environment Info:");
event_log_info (hashcat_ctx, "=================");
event_log_info (hashcat_ctx, NULL);
event_log_info (hashcat_ctx, "Cur.Work.Dir.: %s", folder_config->cwd);
event_log_info (hashcat_ctx, "Install.Dir..: %s", folder_config->install_dir);
event_log_info (hashcat_ctx, "Profile.Dir..: %s", folder_config->profile_dir);
event_log_info (hashcat_ctx, "Cache.Dir....: %s", folder_config->cache_dir);
event_log_info (hashcat_ctx, "Session.Dir..: %s", folder_config->session_dir);
event_log_info (hashcat_ctx, "Shared.Dir...: %s", folder_config->shared_dir);
event_log_info (hashcat_ctx, "CL.Inc.Path..: %s", folder_config->cpath_real);
event_log_info (hashcat_ctx, NULL);
}
#endif // ! __linux__
if (uname (&utsbuf) == 0)
{
rc_uname = true;
}
event_log_info (hashcat_ctx, "OS.Name......: %s", (rc_uname == true) ? utsbuf.sysname : "N/A");
event_log_info (hashcat_ctx, "OS.Release...: %s", (rc_uname == true) ? utsbuf.release : "N/A");
event_log_info (hashcat_ctx, "HW.Model.....: %s", (rc_sysctl == true) ? hw_model_buf : "N/A");
event_log_info (hashcat_ctx, "HW.Platform..: %s", (rc_uname == true) ? utsbuf.machine : "N/A");
if (rc_sysctl == true)
{
hcfree (hw_model_buf);
}
#endif // _WIN || __CYGWIN__ || __MSYS__
event_log_info (hashcat_ctx, NULL);
if (backend_ctx->cuda)
{

View File

@ -47,24 +47,24 @@ int sort_by_tuning_db_entry (const void *v1, const void *v2)
int tuning_db_init (hashcat_ctx_t *hashcat_ctx)
{
folder_config_t *folder_config = hashcat_ctx->folder_config;
tuning_db_t *tuning_db = hashcat_ctx->tuning_db;
user_options_t *user_options = hashcat_ctx->user_options;
folder_config_t *folder_config = hashcat_ctx->folder_config;
tuning_db->enabled = false;
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->keyspace == true) return 0;
if (user_options->left == true) return 0;
if (user_options->show == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->identify == true) return 0;
if (user_options->backend_info > 0) return 0;
tuning_db->enabled = true;
char *tuning_db_file;
char *tuning_db_file = NULL;
hc_asprintf (&tuning_db_file, "%s/%s", folder_config->shared_dir, TUNING_DB_FILE);
@ -225,11 +225,11 @@ bool tuning_db_process_line (hashcat_ctx_t *hashcat_ctx, const char *line_buf, c
char *device_name = token_ptr[0];
int attack_mode = -1;
int hash_mode = -1;
int vector_width = -1;
int kernel_accel = -1;
int kernel_loops = -1;
int hash_mode = -1;
int attack_mode = -1;
int vector_width = -1;
int kernel_accel = -1;
int kernel_loops = -1;
if (token_ptr[1][0] != '*') attack_mode = (int) strtol (token_ptr[1], NULL, 10);
if (token_ptr[2][0] != '*') hash_mode = (int) strtol (token_ptr[2], NULL, 10);
@ -460,7 +460,7 @@ tuning_db_entry_t *tuning_db_search_real (hashcat_ctx_t *hashcat_ctx, const char
tuning_db_entry_t *tuning_db_search (hashcat_ctx_t *hashcat_ctx, const char *device_name, const cl_device_type device_type, int attack_mode, const int hash_mode)
{
tuning_db_entry_t *entry;
tuning_db_entry_t *entry = NULL;
const char *NV_prefix = (const char *) "NVIDIA ";

View File

@ -97,7 +97,7 @@ static const char *const USAGE_BIG_PRE_HASHMODES[] =
" --backend-ignore-hip | | Do not try to open HIP interface on startup |",
" --backend-ignore-metal | | Do not try to open Metal interface on startup |",
" --backend-ignore-opencl | | Do not try to open OpenCL interface on startup |",
" -I, --backend-info | | Show info about detected backend API devices | -I",
" -I, --backend-info | | Show system/evironment/backend API info | -I or -II",
" -d, --backend-devices | Str | Backend devices to use, separated with commas | -d 1",
" -D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1",
" -O, --optimized-kernel-enable | | Enable optimized kernels (limits password length) |",

View File

@ -465,7 +465,7 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv)
case IDX_BACKEND_IGNORE_METAL: user_options->backend_ignore_metal = true; break;
#endif
case IDX_BACKEND_IGNORE_OPENCL: user_options->backend_ignore_opencl = true; break;
case IDX_BACKEND_INFO: user_options->backend_info = true; break;
case IDX_BACKEND_INFO: user_options->backend_info++; break;
case IDX_BACKEND_DEVICES: user_options->backend_devices = optarg; break;
case IDX_BACKEND_VECTOR_WIDTH: user_options->backend_vector_width = hc_strtoul (optarg, NULL, 10);
user_options->backend_vector_width_chgd = true; break;
@ -1380,6 +1380,13 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
}
}
if (user_options->backend_info > 2)
{
event_log_error (hashcat_ctx, "Invalid --backend-info/-I value, must have a value greater or equal to 0 and lower than 3.");
return -1;
}
#ifdef WITH_BRAIN
if ((user_options->brain_client == true) && (user_options->remove == true))
{
@ -1481,7 +1488,7 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
show_error = false;
}
}
else if (user_options->backend_info == true)
else if (user_options->backend_info > 0)
{
if (user_options->hc_argc == 0)
{
@ -1702,7 +1709,7 @@ void user_options_session_auto (hashcat_ctx_t *hashcat_ctx)
user_options->session = "stdout";
}
if (user_options->backend_info == true)
if (user_options->backend_info > 0)
{
user_options->session = "backend_info";
}
@ -1755,13 +1762,13 @@ void user_options_preprocess (hashcat_ctx_t *hashcat_ctx)
user_options->bitmap_max = 1;
}
if (user_options->hash_info == true
|| user_options->backend_info == true
|| user_options->keyspace == true
|| user_options->speed_only == true
|| user_options->progress_only == true
|| user_options->identify == true
|| user_options->usage == true)
if (user_options->hash_info == true
|| user_options->keyspace == true
|| user_options->speed_only == true
|| user_options->progress_only == true
|| user_options->identify == true
|| user_options->usage == true
|| user_options->backend_info > 0)
{
user_options->hwmon_disable = true;
user_options->left = false;
@ -1872,7 +1879,7 @@ void user_options_preprocess (hashcat_ctx_t *hashcat_ctx)
}
}
if (user_options->backend_info == true)
if (user_options->backend_info > 0)
{
user_options->backend_devices = NULL;
user_options->opencl_device_types = hcstrdup ("1,2,3");
@ -1930,7 +1937,7 @@ void user_options_preprocess (hashcat_ctx_t *hashcat_ctx)
{
}
else if (user_options->backend_info == true)
else if (user_options->backend_info > 0)
{
}
@ -2176,7 +2183,7 @@ void user_options_extra_init (hashcat_ctx_t *hashcat_ctx)
{
}
else if (user_options->backend_info == true)
else if (user_options->backend_info > 0)
{
}

View File

@ -665,18 +665,18 @@ int count_words (hashcat_ctx_t *hashcat_ctx, HCFILE *fp, const char *dictfile, u
int wl_data_init (hashcat_ctx_t *hashcat_ctx)
{
wl_data_t *wl_data = hashcat_ctx->wl_data;
hashconfig_t *hashconfig = hashcat_ctx->hashconfig;
user_options_t *user_options = hashcat_ctx->user_options;
wl_data_t *wl_data = hashcat_ctx->wl_data;
wl_data->enabled = false;
if (user_options->benchmark == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->left == true) return 0;
if (user_options->backend_info == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->benchmark == true) return 0;
if (user_options->hash_info == true) return 0;
if (user_options->left == true) return 0;
if (user_options->usage == true) return 0;
if (user_options->version == true) return 0;
if (user_options->backend_info > 0) return 0;
wl_data->enabled = true;