void ext_init(char *mode, struct db_main *db) { if (db!= NULL && db->format != NULL) { ext_cipher_limit = maxlen = db->format->params.plaintext_length; return; } else { ext_cipher_limit = options.length; } if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) { #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "Unknown external mode: %s\n", mode); error(); } if (c_compile(ext_getchar, ext_rewind, &ext_globals)) { if (!ext_line) ext_line = ext_source->tail; #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "Compiler error in %s at line %d: %s\n", ext_line->cfg_name, ext_line->number, c_errors[c_errno]); error(); } ext_word[0] = 0; c_execute(c_lookup("init")); f_generate = c_lookup("generate"); f_filter = c_lookup("filter"); if ((ext_flags & EXT_REQ_GENERATE) && !f_generate) { #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "No generate() for external mode: %s\n", mode); error(); } if ((ext_flags & EXT_REQ_FILTER) && !f_filter) { #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "No filter() for external mode: %s\n", mode); error(); } if ((ext_flags & (EXT_USES_GENERATE | EXT_USES_FILTER)) == EXT_USES_FILTER && f_generate) #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "Warning: external mode defines generate(), " "but is only used for filter()\n"); ext_mode = mode; }
void do_external_crack(struct db_main *db) { unsigned char *internal; c_int *external; log_event("Proceeding with external mode: %.100s", ext_mode); if (!f_generate) { log_event("! No generate() function defined"); fprintf(stderr, "No generate() for external mode: %s\n", ext_mode); error(); } internal = (unsigned char *)int_word; external = ext_word; while (*external) *internal++ = *external++; *internal = 0; status_init(NULL, 0); rec_restore_mode(restore_state); rec_init(db, save_state); crk_init(db, fix_state, NULL); do { c_execute(f_generate); if (!ext_word[0]) break; c_execute(f_filter); if (!ext_word[0]) continue; internal = (unsigned char *)int_word; external = ext_word; while (*external) *internal++ = *external++; *internal = 0; if (crk_process_key(int_word)) break; } while (1); crk_done(); rec_done(event_abort); }
static int restore_state(FILE *file) { int c; unsigned char *internal; c_int *external; int count; internal = (unsigned char *)int_word; /* RYAN2 */ fprintf(stderr, "int_word = %s\n", int_word); external = ext_word; count = 0; do { if (fscanf(file, "%d\n", &c) != 1) return 1; if (++count >= PLAINTEXT_BUFFER_SIZE) return 1; } while ((*internal++ = *external++ = c)); c_execute(c_lookup("restore")); return 0; }
static int restore_state(FILE *file) { int c; unsigned char *internal; c_int *external; int count; internal = (unsigned char *)int_word; external = ext_word; count = 0; do { if (fscanf(file, "%d\n", &c) != 1) return 1; if (++count >= PLAINTEXT_BUFFER_SIZE) return 1; } while ((*internal++ = *external++ = c)); c_execute(c_lookup("restore")); #ifdef HAVE_MPI mpi_line = mpi_id + 1; // We just need the correct modulus #endif return 0; }
static int restore_state(FILE *file) { int c; unsigned char *internal; c_int *external; int count; if (rec_version >= 4 && fscanf(file, "%u\n", &seq) != 1) return 1; internal = (unsigned char *)int_word; external = ext_word; count = 0; do { if (fscanf(file, "%d\n", &c) != 1) return 1; if (++count >= PLAINTEXT_BUFFER_SIZE) return 1; } while ((*internal++ = *external++ = c)); c_execute(c_lookup("restore")); return 0; }
int ext_filter_body(char *in, char *out) { unsigned char *internal; c_int *external; internal = (unsigned char *)in; external = ext_word; while (*internal) *external++ = *internal++; *external = 0; c_execute(f_filter); if (in[0] && !ext_word[0]) return 0; internal = (unsigned char *)out; external = ext_word; while (*external) *internal++ = *external++; *internal = 0; return 1; }
void ext_init(char *mode) { if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) { fprintf(stderr, "Unknown external mode: %s\n", mode); error(); } if (c_compile(ext_getchar, ext_rewind, &ext_globals)) { if (!ext_line) ext_line = ext_source->tail; fprintf(stderr, "Compiler error in %s at line %d: %s\n", cfg_name, ext_line->number, c_errors[c_errno]); error(); } ext_word[0] = 0; c_execute(c_lookup("init")); f_generate = c_lookup("generate"); f_filter = c_lookup("filter"); ext_mode = mode; }
void ext_init(char *mode, struct db_main *db) { if (db != NULL && db->format != NULL) { /* This is second time we are called, just update max length */ ext_cipher_limit = maxlen = db->format->params.plaintext_length - mask_add_len; if (mask_num_qw > 1) { ext_cipher_limit /= mask_num_qw; maxlen /= mask_num_qw; } return; } else ext_cipher_limit = options.length; ext_time = (int) time(NULL); ext_maxlen = options.force_maxlength; if (options.force_minlength > 0) ext_minlen = options.force_minlength; else ext_minlen = 0; if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) { if (john_main_process) fprintf(stderr, "Unknown external mode: %s\n", mode); error(); } if (c_compile(ext_getchar, ext_rewind, &ext_globals)) { if (!ext_line) ext_line = ext_source->tail; if (john_main_process) fprintf(stderr, "Compiler error in %s at line %d: %s\n", cfg_name, ext_line->number, c_errors[c_errno]); error(); } ext_word[0] = 0; c_execute(c_lookup("init")); f_generate = c_lookup("generate"); f_filter = c_lookup("filter"); if ((ext_flags & EXT_REQ_GENERATE) && !f_generate) { if (john_main_process) fprintf(stderr, "No generate() for external mode: %s\n", mode); error(); } if ((ext_flags & EXT_REQ_GENERATE) && !c_lookup("restore")) { if (ext_flags & EXT_REQ_RESTORE) { if (john_main_process) fprintf(stderr, "No restore() for external mode: %s\n", mode); error(); } else if (john_main_process) fprintf(stderr, "Warning: external mode '%s' can't be" " resumed if aborted\n", mode); } if ((ext_flags & EXT_REQ_FILTER) && !f_filter) { if (john_main_process) fprintf(stderr, "No filter() for external mode: %s\n", mode); error(); } if (john_main_process && (ext_flags & (EXT_USES_GENERATE | EXT_USES_FILTER)) == EXT_USES_FILTER && f_generate) if (john_main_process) fprintf(stderr, "Warning: external mode defines generate(), " "but is only used for filter()\n"); ext_mode = mode; }
void ext_init(char *mode, struct db_main *db) { if (!strncmp(mode, "gijohn", 5)) gijohnmodule = 1; if (db) { maxlen = db->format->params.plaintext_length; return; } if (!gijohnmodule) { if (!(ext_source = cfg_get_list(SECTION_EXT, mode))) { #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "Unknown external mode: %s\n", mode); error(); } if (c_compile(ext_getchar, ext_rewind, &ext_globals)) { if (!ext_line) ext_line = ext_source->tail; #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "Compiler error in %s at line %d: %s\n", ext_line->cfg_name, ext_line->number, c_errors[c_errno]); error(); } } ext_word[0] = 0; c_execute(c_lookup("init")); if (gijohnmodule) { sig_done(); getthenewpiece(); init_external(xmlxml.keymap.charset, strlen(xmlxml.keymap.charset), xmlxml.keymap.firstword, xmlxml.keymap.lastword); sig_init(); } f_generate = c_lookup("generate"); f_filter = c_lookup("filter"); if (gijohnmodule) { ext_mode = mode; return; } if ((ext_flags & EXT_REQ_GENERATE) && !f_generate) { #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "No generate() for external mode: %s\n", mode); error(); } if ((ext_flags & EXT_REQ_FILTER) && !f_filter) { #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "No filter() for external mode: %s\n", mode); error(); } if ((ext_flags & (EXT_USES_GENERATE | EXT_USES_FILTER)) == EXT_USES_FILTER && f_generate) #ifdef HAVE_MPI if (mpi_id == 0) #endif fprintf(stderr, "Warning: external mode defines generate(), " "but is only used for filter()\n"); ext_mode = mode; }