static void john_run(void) { if (options.flags & FLG_TEST_CHK) exit_status = benchmark_all() ? 1 : 0; else if (options.flags & FLG_MAKECHR_CHK) do_makechars(&database, options.charset); else if (options.flags & FLG_CRACKING_CHK) { if (!(options.flags & FLG_STDOUT)) { status_init(NULL, 1); log_init(LOG_NAME, options.loader.activepot, options.session); john_log_format(); if (cfg_get_bool(SECTION_OPTIONS, NULL, "Idle", 1)) log_event("- Configured to use otherwise idle " "processor cycles only"); } tty_init(options.flags & FLG_STDIN_CHK); if (options.flags & FLG_SINGLE_CHK) do_single_crack(&database); else if ((options.flags & FLG_GIJOHN_CHK) && FLG_EXTERNAL_CHK) { do { do_external_crack(&database); if (!aborted_gijohn) ext_init("gijohn"); } while (crk_db->password_count && !aborted_gijohn); } else if (options.flags & FLG_WORDLIST_CHK) do_wordlist_crack(&database, options.wordlist, (options.flags & FLG_RULES) != 0); else if (options.flags & FLG_INC_CHK) do_incremental_crack(&database, options.charset); else if (options.flags & FLG_MKV_CHK) do_markov_crack(&database, options.mkv_level, options.mkv_start, options.mkv_end, options.mkv_maxlen); else if ((options.flags & FLG_EXTERNAL_CHK) && FLG_GIJOHN_CHK) do_external_crack(&database); else if (options.flags & FLG_BATCH_CHK) do_batch_crack(&database); status_print(); tty_done(); } }
static void john_run(void) { if (options.flags & FLG_TEST_CHK) exit_status = benchmark_all() ? 1 : 0; else if (options.flags & FLG_MAKECHR_CHK) do_makechars(&database, options.charset); else if (options.flags & FLG_CRACKING_CHK) { int remaining = database.password_count; if (!(options.flags & FLG_STDOUT)) { status_init(NULL, 1); log_init(LOG_NAME, options.loader.activepot, options.session); john_log_format(); if (idle_requested(database.format)) log_event("- Configured to use otherwise idle " "processor cycles only"); } tty_init(options.flags & FLG_STDIN_CHK); #if defined(HAVE_MPI) && defined(_OPENMP) if (database.format->params.flags & FMT_OMP && omp_get_max_threads() > 1 && mpi_p > 1) { if(cfg_get_bool(SECTION_OPTIONS, NULL, "MPIOMPmutex", 1)) { if(cfg_get_bool(SECTION_OPTIONS, NULL, "MPIOMPverbose", 1) && mpi_id == 0) fprintf(stderr, "MPI in use, disabling OMP (see doc/README.mpi)\n"); omp_set_num_threads(1); } else if(cfg_get_bool(SECTION_OPTIONS, NULL, "MPIOMPverbose", 1) && mpi_id == 0) fprintf(stderr, "Note: Running both MPI and OMP (see doc/README.mpi)\n"); } #endif if (options.flags & FLG_SINGLE_CHK) do_single_crack(&database); else if (options.flags & FLG_WORDLIST_CHK) do_wordlist_crack(&database, options.wordlist, (options.flags & FLG_RULES) != 0); else if (options.flags & FLG_INC_CHK) do_incremental_crack(&database, options.charset); else if (options.flags & FLG_MKV_CHK) do_markov_crack(&database, options.mkv_level, options.mkv_start, options.mkv_end, options.mkv_maxlen, options.mkv_minlevel, options.mkv_minlen); else if (options.flags & FLG_EXTERNAL_CHK) do_external_crack(&database); else if (options.flags & FLG_BATCH_CHK) do_batch_crack(&database); status_print(); tty_done(); if (database.password_count < remaining) { char *might = "Warning: passwords printed above might"; char *partial = " be partial"; char *not_all = " not be all those cracked"; switch (database.options->flags & (DB_SPLIT | DB_NODUP)) { case DB_SPLIT: #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "%s%s\n", might, partial); break; case DB_NODUP: #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "%s%s\n", might, not_all); break; case (DB_SPLIT | DB_NODUP): #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "%s%s and%s\n", might, partial, not_all); } #ifdef HAVE_MPI if (mpi_id == 0) #endif fputs("Use the \"--show\" option to display all of " "the cracked passwords reliably\n", stderr); } } }