Skip to content

Commit 6c6ec3c

Browse files
committed
Logging tweaks
Add some function-like macros for log/warn/both WARN_AND_LOG() is like fprintf_color() then log_event(), with same message. WARN_ONCE() is like fprintf_color() but only once per session. LOG_ONCE() is like log_event() but only once per session. WARN_AND_LOG_ONCE() does both, with same message. Also add error color to error(), pexit() and similar stuff in misc.c
1 parent a0938a2 commit 6c6ec3c

29 files changed

+203
-193
lines changed

run/john.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ TerminalReset = ^[0m
113113
# which define red for errors, green for notices and yellow for warnings).
114114
# Note that you don't strictly need to use ANSI sequences - other things are
115115
# fine too.
116-
# Set this to N or comment it out to disable all color stuff.
116+
# Set this to N to disable all color stuff.
117117
UseColors = Y
118118
ColorError = ^[0;31m
119119
ColorNotice = ^[0;32m

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/bestcrypt_ve_fmt_plug.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ john_register_one(&fmt_bestcrypt_ve);
3131
#endif
3232

3333
#include "arch.h"
34+
#include "john.h"
3435
#include "misc.h"
3536
#include "common.h"
3637
#include "formats.h"
@@ -229,7 +230,8 @@ static int valid(char *ciphertext, struct fmt_main *self)
229230
if (atoi(p) != 8 && atoi(p) != 9 && atoi(p) != 10 && atoi(p) != 11 && atoi(p) != 15)
230231
goto err;
231232
if (atoi(p) == 11) {
232-
fprintf(stderr, "Warning: " FORMAT_LABEL ": RC6 encryption not supported yet!\n");
233+
if (john_main_process && !ldr_in_pot)
234+
fprintf_color(color_warning, stderr, "Warning: " FORMAT_LABEL ": RC6 encryption not supported yet!\n");
233235
goto err;
234236
}
235237
if ((p = strtokm(NULL, "$")) == NULL) // salt

src/bitshares_fmt_plug.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,8 +300,9 @@ static int crypt_all(int *pcount, struct db_salt *salt)
300300
any_cracked |= 1;
301301

302302
if (memcmp(km, out_full, 4) != 0) {
303-
fprintf(stderr, "Warning: " FORMAT_LABEL ": Good padding, but bad checksum"
304-
" (corrupted data or false positive?) - will keep guessing\n");
303+
fprintf_color(color_warning, stderr,
304+
"Warning: " FORMAT_LABEL ": Good padding, but bad checksum"
305+
" (corrupted data or false positive?) - will keep guessing\n");
305306
fmt_bitshares.params.flags |= FMT_NOT_EXACT;
306307
}
307308
}

src/c3_fmt.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -371,11 +371,12 @@ static int valid(char *ciphertext, struct fmt_main *self)
371371

372372
if (id != 10 && !ldr_in_pot)
373373
if (john_main_process)
374-
fprintf(stderr, "Warning: "
375-
"hash encoding string length %d, type id %c%c\n"
376-
"appears to be unsupported on this system; "
377-
"will not load such hashes.\n",
378-
length, id > 0x20 ? '$' : '#', id > 0x20 ? id : '0' + id);
374+
fprintf_color(color_warning, stderr,
375+
"Warning: "
376+
"hash encoding string length %d, type id %c%c\n"
377+
"appears to be unsupported on this system; "
378+
"will not load such hashes.\n",
379+
length, id > 0x20 ? '$' : '#', id > 0x20 ? id : '0' + id);
379380

380381
if (!sup_length[length])
381382
sup_length[length] = -1;

src/color.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "config.h"
1010
#include "options.h"
1111

12+
const char* const color_none = "";
1213
char *color_error, *color_notice, *color_warning, *color_end;
1314

1415
/*
@@ -34,11 +35,11 @@ char *parse_esc(const char *string)
3435

3536
void color_init()
3637
{
37-
if (cfg_get_bool(SECTION_OPTIONS, NULL, "UseColors", 0)) {
38+
if (cfg_get_bool(SECTION_OPTIONS, NULL, "UseColors", 1)) {
3839
color_error = parse_esc(cfg_get_param(SECTION_OPTIONS, NULL, "ColorError"));
3940
color_notice = parse_esc(cfg_get_param(SECTION_OPTIONS, NULL, "ColorNotice"));
4041
color_warning = parse_esc(cfg_get_param(SECTION_OPTIONS, NULL, "ColorWarning"));
4142
color_end = parse_esc(cfg_get_param(SECTION_OPTIONS, NULL, "ColorEnd"));
4243
} else
43-
color_error = color_notice = color_warning = color_end = "";
44+
color_error = color_notice = color_warning = color_end = (char*)color_none;
4445
}

src/color.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,8 @@
88
#ifndef _JOHN_COLOR_H
99
#define _JOHN_COLOR_H
1010

11-
extern char *parse_esc(const char *string);
12-
extern void color_init();
13-
14-
/* Color escape sequences as strings */
15-
extern char *color_error, *color_notice, *color_warning, *color_end;
11+
#include <stdio.h>
12+
#include <unistd.h> /* isatty */
1613

1714
#define printf_color(color, ...) fprintf_color(color, stdout, __VA_ARGS__);
1815

@@ -40,4 +37,11 @@ extern char *color_error, *color_notice, *color_warning, *color_end;
4037
fputs(color_end, handle); \
4138
} while (0)
4239

40+
extern char *parse_esc(const char *string);
41+
extern void color_init();
42+
43+
/* Color escape sequences as strings */
44+
extern const char* const color_none;
45+
extern char *color_error, *color_notice, *color_warning, *color_end;
46+
4347
#endif /* _JOHN_COLOR_H */

src/john.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2093,6 +2093,12 @@ int main(int argc, char **argv)
20932093
return base64conv(argc, argv);
20942094
}
20952095

2096+
/*
2097+
* For having these as empty strings in case a color warning/error is
2098+
* printed before we init colors.
2099+
*/
2100+
color_error = color_notice = color_warning = color_end = (char*)color_none;
2101+
20962102
#if !(CPU_FALLBACK || OMP_FALLBACK || defined(CPU_FALLBACK_BINARY) || defined(OMP_FALLBACK_BINARY))
20972103
path_init(argv);
20982104
#endif

0 commit comments

Comments
 (0)