Skip to content

Commit 304a2cf

Browse files
committed
Add option --mask-internal-target=N
This overrides format's algorithm for selecting the target multiplier, or disables internal mask completely for N=0. Closes #4876
1 parent 15db048 commit 304a2cf

File tree

5 files changed

+33
-5
lines changed

5 files changed

+33
-5
lines changed

doc/NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ Major changes from 1.9.0-jumbo-1 (May 2019) in this bleeding-edge version:
234234
- Added apop2john.py: script to extract and format POP3 APOP challenge/responses
235235
[Mark Silinio; 2021]
236236

237+
- Added option --mask-internal-target=N for overriding format's idea of how
238+
large portion of a mask should be generated on device-side (or completely
239+
disabling internal mask). [magnum; 2021]
240+
237241

238242
Major changes from 1.8.0-jumbo-1 (December 2014) to 1.9.0-jumbo-1 (May 2019):
239243

src/bench.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#include "gpu_common.h"
5252
#include "opencl_common.h"
5353
#include "mask.h"
54+
#include "mask_ext.h"
5455
#include "aligned.h"
5556

5657
#ifndef BENCH_BUILD
@@ -833,6 +834,13 @@ int benchmark_all(void)
833834
if ((options.flags & FLG_LOOPTEST_CHK) && john_main_process)
834835
printf("#%u ", loop_total);
835836
#endif
837+
#if defined(HAVE_OPENCL) || defined(HAVE_ZTEX)
838+
int using_int_mask = (format->params.flags & FMT_MASK) && (options.flags & FLG_MASK_CHK) &&
839+
options.req_int_cand_target != 0 && mask_int_cand_target;
840+
#else
841+
int using_int_mask = 0;
842+
#endif
843+
836844
if (john_main_process)
837845
printf("%s: %s%s%s%s [%s%s%s%s]... ",
838846
benchmark_time ? "Benchmarking" : "Testing",
@@ -844,8 +852,7 @@ int benchmark_all(void)
844852
#ifndef BENCH_BUILD
845853
#define ENC_SET (!options.default_enc && options.target_enc != ENC_RAW && options.target_enc != ISO_8859_1)
846854

847-
(benchmark_time && format->params.flags & FMT_MASK &&
848-
(options.flags & FLG_MASK_CHK)) ? "/mask accel" : "",
855+
(benchmark_time && using_int_mask) ? "/mask accel" : "",
849856
ENC_SET ? ", " : "",
850857
ENC_SET ? cp_id2name(options.target_enc) : "");
851858
#else

src/mask.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2400,13 +2400,20 @@ static void finalize_mask(int len)
24002400
mask_add_len = len;
24012401
}
24022402

2403-
if (options.rule_stack && (mask_fmt->params.flags & FMT_MASK)) {
2403+
if ((mask_fmt->params.flags & FMT_MASK) && options.rule_stack) {
24042404
mask_int_cand_target = 0;
24052405
if (john_main_process) {
24062406
fprintf(stderr, "Note: Disabling internal mask due to stacked rules\n");
24072407
log_event("- Disabling internal mask due to stacked rules");
24082408
}
24092409
}
2410+
#if defined(HAVE_OPENCL) || defined(HAVE_ZTEX)
2411+
else if ((mask_fmt->params.flags & FMT_MASK) && options.req_int_cand_target >= 0) {
2412+
log_event("- Overriding format's target internal mask factor of %d with user requested %d",
2413+
mask_int_cand_target, options.req_int_cand_target);
2414+
mask_int_cand_target = options.req_int_cand_target;
2415+
}
2416+
#endif
24102417

24112418
#ifdef MASK_DEBUG
24122419
fprintf(stderr, "%s() qw %d minlen %d maxlen %d max_key_len %d mask_add_len %d mask len %d\n", __FUNCTION__, mask_num_qw, options.eff_minlength, max_keylen, len, mask_add_len, mask_len(mask));
@@ -2468,7 +2475,8 @@ static void finalize_mask(int len)
24682475
}
24692476
mask_tot_cand = cand * mask_int_cand.num_int_cand;
24702477

2471-
if ((john_main_process || !cfg_get_bool(SECTION_OPTIONS, SUBSECTION_MPI, "MPIAllGPUsSame", 0)) && mask_int_cand_target)
2478+
if ((john_main_process || !cfg_get_bool(SECTION_OPTIONS, SUBSECTION_MPI, "MPIAllGPUsSame", 0)) &&
2479+
mask_int_cand.num_int_cand > 1)
24722480
log_event("- Requested internal mask factor: %d, actual now %d",
24732481
mask_int_cand_target, mask_int_cand.num_int_cand);
24742482
}

src/options.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ static struct opt_entry opt_list[] = {
191191
{"gws", FLG_ONCE, 0, 0, USUAL_REQ_CLR | FLG_STDOUT | OPT_REQ_PARAM, Zu, &options.gws},
192192
#endif
193193
#if defined(HAVE_OPENCL) || defined(HAVE_ZTEX)
194+
{"mask-internal-target", FLG_ONCE, 0, 0, USUAL_REQ_CLR | FLG_STDOUT | OPT_REQ_PARAM, "%d", &options.req_int_cand_target},
194195
{"devices", FLG_ONCE, 0, 0, USUAL_REQ_CLR | FLG_STDOUT | OPT_REQ_PARAM, OPT_FMT_ADD_LIST_MULTI, &options.acc_devices},
195196
#endif
196197
{"skip-self-tests", FLG_NOTESTS, FLG_NOTESTS, 0, USUAL_REQ_CLR | FLG_STDOUT},
@@ -368,6 +369,7 @@ FUZZ_USAGE \
368369
#define JOHN_USAGE_GPU \
369370
"\nOpenCL options:\n" \
370371
"--devices=N[,..] Set OpenCL device(s) (see --list=opencl-devices)\n" \
372+
"--mask-internal-target=N Request a specific internal mask target\n" \
371373
"--force-scalar Force scalar mode\n" \
372374
"--force-vector-width=N Force vector width N\n" \
373375
"--lws=N Force local worksize N\n" \
@@ -376,7 +378,8 @@ FUZZ_USAGE \
376378
" or set ZTEX device(s) by its(their) serial number(s)\n"
377379
#elif defined(HAVE_ZTEX)
378380
#define JOHN_USAGE_ZTEX \
379-
"--devices=N[,..] Set ZTEX device(s) by its(their) serial number(s)\n"
381+
"--devices=N[,..] Set ZTEX device(s) by its(their) serial number(s)\n" \
382+
"--mask-internal-target=N Request a specific internal mask target\n"
380383
#endif
381384

382385
static void opt_banner(char *name)
@@ -440,6 +443,8 @@ void opt_init(char *name, int argc, char **argv)
440443
list_init(&options.loader.shells);
441444
#if defined(HAVE_OPENCL) || defined(HAVE_ZTEX)
442445
list_init(&options.acc_devices);
446+
447+
options.req_int_cand_target = -1;
443448
#endif
444449

445450
options.length = -1;

src/options.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,10 @@ struct options_main {
457457
int crack_status;
458458
/* --catch-up=oldsession */
459459
char *catchup;
460+
#if defined(HAVE_OPENCL) || defined(HAVE_ZTEX)
461+
/* --mask-internal-target=N */
462+
int req_int_cand_target;
463+
#endif
460464
};
461465

462466
extern struct options_main options;

0 commit comments

Comments
 (0)