Skip to content

Commit 4b0a926

Browse files
committed
Several formats: Colorize warnings and/or use _ONCE macros
1 parent 17a3e4f commit 4b0a926

17 files changed

+86
-144
lines changed

src/7z_common_plug.c

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,6 @@ struct fmt_tests sevenzip_tests[] = {
101101

102102
sevenzip_salt_t *sevenzip_salt;
103103

104-
#define YEL "\x1b[0;33m"
105-
#define NRM "\x1b[0m"
106-
107104
int sevenzip_trust_padding;
108105

109106
static char *comp_type[16] = { "stored", "LZMA1", "LZMA2", "PPMD", NULL, NULL, "BZIP2", "DEFLATE" };
@@ -140,23 +137,23 @@ int sevenzip_valid(char *ciphertext, struct fmt_main *self)
140137
&& type != 128) {
141138
if (john_main_process && !warned[type]) {
142139
warned[type] = 1;
143-
fprintf(stderr, YEL "Warning: Not loading files with unsupported compression type %s (0x%02x)\n" NRM,
140+
fprintf_color(color_warning, stderr, "Warning: Not loading files with unsupported compression type %s (0x%02x)\n",
144141
comp_type[c_type] ? comp_type[c_type] : "(unknown)", type);
145142
#if !HAVE_LIBBZ2
146143
if (type == 6)
147-
fprintf(stderr, YEL "Rebuild with libbz2 to get support for that type.\n" NRM);
144+
fprintf_color(color_warning, stderr, "Rebuild with libbz2 to get support for that type.\n");
148145
#endif
149146
#if !HAVE_LIBZ
150147
if (type == 7)
151-
fprintf(stderr, YEL "Rebuild with libz (zlib) to get support for that type.\n" NRM);
148+
fprintf_color(color_warning, stderr, "Rebuild with libz (zlib) to get support for that type.\n");
152149
#endif
153150
}
154151
goto err;
155152
}
156153
if (john_main_process && !ldr_in_pot && !self_test_running &&
157154
options.verbosity > VERB_DEFAULT && !warned[type]) {
158155
warned[type] = 1;
159-
fprintf(stderr, YEL "Saw file(s) with compression type %s%s%s (0x%02x)\n" NRM,
156+
fprintf_color(color_notice, stderr, "Saw file(s) with compression type %s%s%s (0x%02x)\n",
160157
precomp_type[p_type], p_type ? "+" : "", comp_type[c_type], type);
161158
}
162159
if ((p = strtokm(NULL, "$")) == NULL) /* NumCyclesPower */
@@ -174,11 +171,8 @@ int sevenzip_valid(char *ciphertext, struct fmt_main *self)
174171
goto err;
175172
len = atoi(p);
176173
if (len > 0 && strstr(self->params.label, "-opencl")) {
177-
static int warned;
178-
179-
if (!warned++)
180-
fprintf(stderr, YEL "%s: Warning: Not loading hashes with salt due to optimizations. Please report!\n" NRM,
181-
self->params.label);
174+
if (!ldr_in_pot && john_main_process)
175+
WARN_ONCE(color_warning, stderr, "%s: Warning: Not loading hashes with salt due to optimizations. Please report!\n", self->params.label);
182176
goto err;
183177
}
184178
if (len > 16)
@@ -355,7 +349,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
355349

356350
#if DEBUG
357351
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
358-
fprintf(stderr, "\nType %02x (%s%s%s) AES length %zu, packed len %zu, pad size %d, crc len %zu\n",
352+
fprintf_color(color_notice, stderr, "\nType %02x (%s%s%s) AES length %zu, packed len %zu, pad size %d, crc len %zu\n",
359353
sevenzip_salt->type, precomp_type[p_type] ? precomp_type[p_type] : "",
360354
p_type ? "+" : "",
361355
comp_type[c_type] ? comp_type[c_type] : "(unknown)",
@@ -379,12 +373,11 @@ int sevenzip_decrypt(unsigned char *derived_key)
379373
if (buf[i] != 0) {
380374
#if DEBUG
381375
if (!benchmark_running && options.verbosity >= VERB_DEBUG) {
382-
fprintf(stderr, YEL "Early padding check failed, ");
376+
fprintf_color(color_warning, stderr, "Early padding check failed, ");
383377
dump_stderr_msg("padding", buf + 16 - pad_size, pad_size);
384-
fprintf(stderr, NRM);
385378
}
386379
if (sevenzip_salt->type == 0x80)
387-
fprintf(stderr, YEL "We don't have data for complete decryption\n");
380+
WARN_ONCE(color_warning, stderr, "We don't have data for complete decryption\n");
388381
break;
389382
#else
390383
return 0;
@@ -395,13 +388,13 @@ int sevenzip_decrypt(unsigned char *derived_key)
395388
}
396389
#if DEBUG
397390
if (!nbytes && !benchmark_running && options.verbosity >= VERB_DEBUG)
398-
fprintf(stderr, "Early padding check passed\n");
391+
fprintf_color(color_notice, stderr, "Early padding check passed\n");
399392
else
400393
nbytes = 0;
401-
#else
394+
if (self_test_running)
395+
#endif
402396
if (sevenzip_salt->type == 0x80) /* We only have truncated data */
403397
return 1;
404-
#endif
405398
}
406399

407400
/* Complete decryption */
@@ -417,9 +410,8 @@ int sevenzip_decrypt(unsigned char *derived_key)
417410
if (out[i] != 0) {
418411
#if DEBUG
419412
if (!benchmark_running && options.verbosity >= VERB_DEBUG) {
420-
fprintf(stderr, YEL "Full data padding check failed, ");
413+
fprintf_color(color_warning, stderr, "Full data padding check failed, ");
421414
dump_stderr_msg("padding", out + sevenzip_salt->aes_length - pad_size, pad_size);
422-
fprintf(stderr, NRM);
423415
}
424416
break;
425417
#else
@@ -431,7 +423,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
431423
}
432424
#if DEBUG
433425
if (!nbytes && !benchmark_running && options.verbosity >= VERB_DEBUG)
434-
fprintf(stderr, "Padding check passed\n");
426+
fprintf_color(color_notice, stderr, "Padding check passed\n");
435427
#endif
436428
}
437429

@@ -456,7 +448,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
456448
out_size == crc_len) {
457449
#if DEBUG
458450
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
459-
fprintf(stderr, "LZMA decoding passed, %zu/%zu -> %zu/%zu, props %02x%02x%02x%02x\n",
451+
fprintf_color(color_notice, stderr, "LZMA decoding passed, %zu/%zu -> %zu/%zu, props %02x%02x%02x%02x\n",
460452
in_size, sevenzip_salt->packed_size, out_size, crc_len, sevenzip_salt->decoder_props[0],
461453
sevenzip_salt->decoder_props[1], sevenzip_salt->decoder_props[2], sevenzip_salt->decoder_props[3]);
462454
#endif
@@ -465,7 +457,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
465457
} else {
466458
#if DEBUG
467459
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
468-
fprintf(stderr, YEL "LZMA decoding failed, %zu/%zu -> %zu/%zu, props %02x%02x%02x%02x\n" NRM,
460+
fprintf_color(color_warning, stderr, "LZMA decoding failed, %zu/%zu -> %zu/%zu, props %02x%02x%02x%02x\n",
469461
in_size, sevenzip_salt->packed_size, out_size, crc_len, sevenzip_salt->decoder_props[0],
470462
sevenzip_salt->decoder_props[1], sevenzip_salt->decoder_props[2], sevenzip_salt->decoder_props[3]);
471463
#endif
@@ -488,15 +480,15 @@ int sevenzip_decrypt(unsigned char *derived_key)
488480
out_size == crc_len) {
489481
#if DEBUG
490482
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
491-
fprintf(stderr, "LZMA2 decoding passed, %zu/%zu -> %zu/%zu, props %02x\n",
483+
fprintf_color(color_notice, stderr, "LZMA2 decoding passed, %zu/%zu -> %zu/%zu, props %02x\n",
492484
in_size, sevenzip_salt->packed_size, out_size, crc_len, sevenzip_salt->decoder_props[0]);
493485
#endif
494486
MEM_FREE(out);
495487
out = new_out;
496488
} else {
497489
#if DEBUG
498490
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
499-
fprintf(stderr, YEL "LZMA2 decoding failed, %zu/%zu -> %zu/%zu, props %02x\n" NRM,
491+
fprintf_color(color_warning, stderr, "LZMA2 decoding failed, %zu/%zu -> %zu/%zu, props %02x\n",
500492
in_size, sevenzip_salt->packed_size, out_size, crc_len, sevenzip_salt->decoder_props[0]);
501493
#endif
502494
MEM_FREE(new_out);
@@ -526,7 +518,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
526518
if (ret == BZ_STREAM_END) {
527519
#if DEBUG
528520
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
529-
fprintf(stderr, "BZIP2 decoding passed, %zu/%zu -> %zu/%zu\n",
521+
fprintf_color(color_notice, stderr, "BZIP2 decoding passed, %zu/%zu -> %zu/%zu\n",
530522
sevenzip_salt->packed_size - inf_stream.avail_in, sevenzip_salt->packed_size,
531523
crc_len - inf_stream.avail_out, crc_len);
532524
#endif
@@ -535,7 +527,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
535527
} else {
536528
#if DEBUG
537529
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
538-
fprintf(stderr, YEL "BZIP2 decoding failed, %zu/%zu -> %zu/%zu\n" NRM,
530+
fprintf_color(color_warning, stderr, "BZIP2 decoding failed, %zu/%zu -> %zu/%zu\n",
539531
sevenzip_salt->packed_size - inf_stream.avail_in, sevenzip_salt->packed_size,
540532
crc_len - inf_stream.avail_out, crc_len);
541533
#endif
@@ -564,7 +556,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
564556
if (ret == Z_STREAM_END) {
565557
#if DEBUG
566558
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
567-
fprintf(stderr, "DEFLATE decoding passed, %zu/%zu -> %zu/%zu\n",
559+
fprintf_color(color_notice, stderr, "DEFLATE decoding passed, %zu/%zu -> %zu/%zu\n",
568560
sevenzip_salt->packed_size - inf_stream.avail_in, sevenzip_salt->packed_size,
569561
crc_len - inf_stream.avail_out, crc_len);
570562
#endif
@@ -573,7 +565,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
573565
} else {
574566
#if DEBUG
575567
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
576-
fprintf(stderr, YEL "DEFLATE decoding failed, %zu/%zu -> %zu/%zu\n" NRM,
568+
fprintf_color(color_warning, stderr, "DEFLATE decoding failed, %zu/%zu -> %zu/%zu\n",
577569
sevenzip_salt->packed_size - inf_stream.avail_in, sevenzip_salt->packed_size,
578570
crc_len - inf_stream.avail_out, crc_len);
579571
#endif
@@ -586,7 +578,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
586578
if (p_type) {
587579
#if DEBUG
588580
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
589-
fprintf(stderr, "Decoding %s, props %02x\n", precomp_type[p_type], sevenzip_salt->preproc_props);
581+
fprintf_color(color_notice, stderr, "Decoding %s, props %02x\n", precomp_type[p_type], sevenzip_salt->preproc_props);
590582
#endif
591583
if (p_type == 1) {
592584
uint32_t state;
@@ -595,12 +587,8 @@ int sevenzip_decrypt(unsigned char *derived_key)
595587
x86_Convert(out, crc_len, 0, &state, 0);
596588
}
597589
else if (p_type == 2) {
598-
if (!benchmark_running && options.verbosity >= VERB_DEFAULT) {
599-
static int warned;
600-
601-
if (!warned++)
602-
fprintf(stderr, YEL "Can't decode BCJ2, so skipping CRC check" NRM);
603-
}
590+
if (!benchmark_running && options.verbosity >= VERB_DEFAULT)
591+
WARN_ONCE(color_warning, stderr, "Can't decode BCJ2, so skipping CRC check");
604592
goto exit_good;
605593
}
606594
else if (p_type == 3)
@@ -620,7 +608,7 @@ int sevenzip_decrypt(unsigned char *derived_key)
620608
Delta_Decode(state, sevenzip_salt->preproc_props + 1, out, crc_len);
621609
#if DEBUG
622610
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
623-
fprintf(stderr, YEL "DELTA decoding can't fail so result unknown\n" NRM);
611+
fprintf_color(color_notice, stderr, "DELTA decoding can't fail so result unknown\n");
624612
#endif
625613
}
626614
}
@@ -636,13 +624,13 @@ int sevenzip_decrypt(unsigned char *derived_key)
636624
if (ccrc == sevenzip_salt->crc) {
637625
#if DEBUG
638626
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
639-
fprintf(stderr, "CRC check passed (%08x)\n", ccrc);
627+
fprintf_color(color_notice, stderr, "CRC check passed (%08x)\n", ccrc);
640628
#endif
641629
goto exit_good;
642630
}
643631
#if DEBUG
644632
if (!benchmark_running && options.verbosity >= VERB_DEBUG)
645-
fprintf(stderr, YEL "CRC failed, %08x vs %08x\n" NRM, ccrc, sevenzip_salt->crc);
633+
fprintf_color(color_warning, stderr, "CRC failed, %08x vs %08x\n", ccrc, sevenzip_salt->crc);
646634
#endif
647635

648636
exit_bad:

src/mscash_common_plug.c

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include "unicode.h"
2020
#include "johnswap.h"
2121
#include "mscash_common.h"
22-
22+
#include "john.h"
2323

2424
/**************************************
2525
* Common stuff for mscash(1) hashes
@@ -101,22 +101,17 @@ int mscash1_common_valid(char *ciphertext, struct fmt_main *self)
101101
// This is tricky: Max supported salt length is 19 characters of Unicode
102102
saltlen = enc_to_utf16(realsalt, MSCASH1_MAX_SALT_LENGTH+1, (UTF8*)strnzcpy(insalt, &ciphertext[FORMAT_TAG_LEN], l - FORMAT_TAG_LEN), l - 3);
103103
if (saltlen < 0) {
104-
static int error_shown = 0;
105104
#ifdef HAVE_FUZZ
106105
if (options.flags & (FLG_FUZZ_CHK | FLG_FUZZ_DUMP_CHK))
107106
return 0;
108107
#endif
109-
if (!error_shown)
110-
fprintf(stderr, "%s: Input file is not UTF-8. Please use --input-enc to specify a codepage.\n", self->params.label);
111-
error_shown = 1;
108+
if (!ldr_in_pot && john_main_process)
109+
WARN_ONCE(color_warning, stderr, "%s: Input file is not UTF-8. Please use --input-enc to specify a codepage.\n", self->params.label);
112110
return 0;
113111
}
114112
if (saltlen > MSCASH1_MAX_SALT_LENGTH) {
115-
static int warned = 0;
116-
117-
if (!ldr_in_pot)
118-
if (!warned++)
119-
fprintf(stderr, "%s: One or more hashes rejected due to salt length limitation\n", self->params.label);
113+
if (!ldr_in_pot && john_main_process)
114+
WARN_ONCE(color_warning, stderr, "%s: One or more hashes rejected due to salt length limitation\n", self->params.label);
120115
return 0;
121116
}
122117
return 1;
@@ -330,22 +325,17 @@ int mscash2_common_valid(char *ciphertext, int max_salt_length, struct fmt_main
330325
++i;
331326
saltlen = enc_to_utf16(realsalt, max_salt_length, (UTF8*)strnzcpy(insalt, &ciphertext[i], l-i), l-(i+1));
332327
if (saltlen < 0) {
333-
static int error_shown = 0;
334328
#ifdef HAVE_FUZZ
335329
if (options.flags & (FLG_FUZZ_CHK | FLG_FUZZ_DUMP_CHK))
336330
return 0;
337331
#endif
338-
if (!error_shown)
339-
fprintf(stderr, "%s: Input file is not UTF-8. Please use --input-enc to specify a codepage.\n", self->params.label);
340-
error_shown = 1;
332+
if (!ldr_in_pot && john_main_process)
333+
WARN_ONCE(color_warning, stderr, "%s: Input file is not UTF-8. Please use --input-enc to specify a codepage.\n", self->params.label);
341334
return 0;
342335
}
343336
if (saltlen > max_salt_length) {
344-
static int warned = 0;
345-
346-
if (!ldr_in_pot)
347-
if (!warned++)
348-
fprintf(stderr, "%s: One or more hashes rejected due to salt length limitation\n", self->params.label);
337+
if (!ldr_in_pot && john_main_process)
338+
WARN_ONCE(color_warning, stderr, "%s: One or more hashes rejected due to salt length limitation\n", self->params.label);
349339

350340
return 0;
351341
}

src/ntlmv1_mschapv2_fmt_plug.c

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1074,20 +1074,17 @@ static char *get_key(int index)
10741074
static void *get_binary(char *ciphertext)
10751075
{
10761076
static uchar *binary;
1077-
static int warned = 0, loaded = 0;
1077+
static int loaded = 0;
10781078
DES_cblock *challenge = my->methods.salt(ciphertext);
10791079
int i, j;
10801080

10811081
if (!binary) binary = mem_alloc_tiny(FULL_BINARY_SIZE, BINARY_ALIGN);
10821082

1083-
if (john_main_process)
1084-
if (!warned && !ldr_in_pot && !bench_or_test_running && ++loaded > 100) {
1085-
warned = 1;
1086-
fprintf(stderr, "%s: Note: slow loading. For short runs, try "
1087-
"--format=%s-naive\ninstead. That version loads "
1088-
"faster but runs slower.\n", my->params.label,
1089-
my->params.label);
1090-
}
1083+
if (john_main_process && !ldr_in_pot && !bench_or_test_running && ++loaded > 100)
1084+
WARN_ONCE(color_warning, stderr, "%s: Note: slow loading. For short runs, try "
1085+
"--format=%s-naive\ninstead. That version loads "
1086+
"faster but runs slower.\n", my->params.label,
1087+
my->params.label);
10911088

10921089
if (chap_valid_short(ciphertext))
10931090
ciphertext += FORMAT_TAG_LEN + CHAP_CHALLENGE_LENGTH / 4 + 1;

src/oldoffice_common_plug.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,13 +207,10 @@ void *oldoffice_get_salt(char *ciphertext)
207207
cs.salt[i] = atoi16[ARCH_INDEX(p[i * 2])] * 16
208208
+ atoi16[ARCH_INDEX(p[i * 2 + 1])];
209209

210-
if (cs.type == 5 && !ldr_in_pot) {
211-
static int warned;
212-
213-
if (john_main_process && !warned++) {
214-
fprintf(stderr, "Note: The support for OldOffice type 5 is experimental and may be incorrect.\n");
215-
fprintf(stderr, " For latest news see https://github.com/openwall/john/issues/4705\n");
216-
}
210+
if (cs.type == 5 && !ldr_in_pot && john_main_process) {
211+
WARN_ONCE(color_warning, stderr,
212+
"Note: The support for OldOffice type 5 is experimental and may be incorrect.\n"
213+
" For latest news see https://github.com/openwall/john/issues/4705\n");
217214
}
218215

219216
MEM_FREE(keeptr);

src/opencl_diskcryptor_aes_fmt_plug.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,11 @@ static void create_clobj(size_t kpc, struct fmt_main *self)
171171

172172
static void init(struct fmt_main *_self)
173173
{
174-
static int warned = 0;
175-
176174
self = _self;
177175
opencl_prepare_dev(gpu_id);
178176

179-
if (!warned++ && !(options.flags & FLG_TEST_CHK) && !options.listconf) {
180-
fprintf(stderr, "[ATTENTION] This format (%s) can only crack AES XTS DiskCryptor hashes.\n", FORMAT_LABEL);
181-
}
177+
if (!(options.flags & FLG_TEST_CHK) && !options.listconf)
178+
WARN_ONCE(color_warning, stderr, "Warning: %s can only crack AES XTS DiskCryptor hashes.\n", FORMAT_LABEL);
182179
}
183180

184181
static void reset(struct db_main *db)

src/opencl_diskcryptor_fmt_plug.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,16 +166,13 @@ static void create_clobj(size_t kpc, struct fmt_main *self)
166166

167167
static void init(struct fmt_main *_self)
168168
{
169-
static int warned = 0;
170-
171169
self = _self;
172170
opencl_prepare_dev(gpu_id);
173171

174172
Twofish_initialise();
175173

176-
if (!warned++ && !(options.flags & FLG_TEST_CHK) && !options.listconf) {
177-
fprintf(stderr, "[ATTENTION] This format (%s) does not support cascaded cipher modes yet.\n", FORMAT_LABEL);
178-
}
174+
if (!(options.flags & FLG_TEST_CHK) && !options.listconf)
175+
WARN_ONCE(color_warning, stderr, "Warning: %s does not support cascaded cipher modes yet.\n", FORMAT_LABEL);
179176
}
180177

181178
static void reset(struct db_main *db)

src/opencl_krb5pa-sha1_fmt_plug.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,11 +336,8 @@ static int valid(char *ciphertext, struct fmt_main *self)
336336
// We support a max. total salt length of 52.
337337
// We could opt to emit a warning if rejected here.
338338
if (saltlen > MAX_SALTLEN) {
339-
static int warned = 0;
340-
341-
if (!ldr_in_pot)
342-
if (!warned++)
343-
fprintf(stderr, "%s: One or more hashes rejected due to salt length limitation\n", FORMAT_LABEL);
339+
if (!ldr_in_pot && john_main_process)
340+
WARN_ONCE(color_warning, stderr, "%s: One or more hashes rejected due to salt length limitation\n", FORMAT_LABEL);
344341

345342
return 0;
346343
}

0 commit comments

Comments
 (0)