void fear() { char mflag; char key; int x,y; int xdir,ydir; int mon; int i; key = get_dir(&xdir,&ydir); x = player.x; y = player.y; mflag = ' '; while (mflag == ' ') { x += xdir; y += ydir; if (player.map[x][y] == 3) mflag = '*'; if (player.map[x][y] == 38) mflag = '*'; if (player.map[x][y] == 39) mflag = '*'; if (player.map[x][y] == 21) mflag = '*'; if (player.map[x][y] < 0) mflag = '*'; if (player.map[x][y]>400 && player.map[x][y]<500) mflag = '*'; if (in_sight(x,y) == '*') { show_sprite(x-player.map_x,y-player.map_y,80); delay(100); show_spot(x,y); } } if (player.map[x][y] < 0 || (player.map[x][y]>400 && player.map[x][y]<500)) { if (in_arena == 'Y') mon = player.map[x][y] - 400; else mon = player.map[x][y]; if (in_arena == 'Y') i=50+5*(player.level-player.monster[mon][a_mon].level); else i=50+5*(player.level-player.monster[1][mon].level); if (in_arena == 'Y' && player.monster[mon][a_mon].special == 1) i=0; if (in_arena != 'Y' && player.monster[1][mon].special == 1) i=0; if (u_random(100) < i) { clear_prompt(); prompt("SCARED !!!"); if (in_sight(x,y) == '*') { show_sprite(x-player.map_x,y-player.map_y,80); delay(250); show_spot(x,y); } if (in_arena != 'Y') player.monster[1][mon].fear=u_random(5*(player.level-player.monster[1][mon].level)); if (in_arena == 'Y') player.monster[mon][a_mon].fear=u_random(5*(player.level-player.monster[mon][a_mon].level)); } else { clear_prompt(); prompt("Fizzle. . . "); } } }
static void main_monitor_performance_hint (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) { const user_options_t *user_options = hashcat_ctx->user_options; const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; if (user_options->quiet == true) return; if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { clear_prompt (); } if (user_options->workload_profile < 3) { event_log_warning (hashcat_ctx, "Cracking performance lower than expected? Append -w 3 to the commandline!"); event_log_warning (hashcat_ctx, ""); } else { event_log_warning (hashcat_ctx, "Cracking performance lower than expected?"); event_log_warning (hashcat_ctx, ""); event_log_warning (hashcat_ctx, "* Update your OpenCL runtime / Driver but the right way:"); event_log_warning (hashcat_ctx, " https://hashcat.net/wiki/doku.php?id=frequently_asked_questions#i_may_have_the_wrong_driver_installed_what_should_i_do"); event_log_warning (hashcat_ctx, ""); event_log_warning (hashcat_ctx, "* Create more work items to make use of your parallelization power:"); event_log_warning (hashcat_ctx, " https://hashcat.net/wiki/doku.php?id=frequently_asked_questions#how_to_create_more_work_for_full_speed"); event_log_warning (hashcat_ctx, ""); } if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { send_prompt (); } }
static void main_cracker_hash_cracked (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) { outfile_ctx_t *outfile_ctx = hashcat_ctx->outfile_ctx; status_ctx_t *status_ctx = hashcat_ctx->status_ctx; user_options_t *user_options = hashcat_ctx->user_options; user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; if (outfile_ctx->fp != NULL) return; // cracked hash was not written to an outfile if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { if (outfile_ctx->filename == NULL) if (user_options->quiet == false) clear_prompt (); } fwrite (buf, len, 1, stdout); fwrite (EOL, strlen (EOL), 1, stdout); if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { if (status_ctx->devices_status != STATUS_CRACKED) { if (outfile_ctx->filename == NULL) if (user_options->quiet == false) send_prompt (); } } }
void sleep_trap() { char flag; flag = ' '; if (has_intrinsic(A_NOSL)) flag = '*'; if (flag == ' ') { player.effect[PE_SLEEP] = (player.diff+player.d_level) + u_random(player.diff+player.d_level / 3); clear_prompt(); prompt("Slept!!"); show_player(); } }
static void main_set_kernel_power_final (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) { const user_options_t *user_options = hashcat_ctx->user_options; if (user_options->quiet == true) return; clear_prompt (); event_log_info (hashcat_ctx, "INFO: approaching final keyspace, workload adjusted"); event_log_info (hashcat_ctx, ""); send_prompt (); }
static void main_monitor_runtime_limit (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) { const user_options_t *user_options = hashcat_ctx->user_options; const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; if (user_options->quiet == true) return; if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { clear_prompt (); } event_log_warning (hashcat_ctx, "Runtime limit reached, aborting..."); }
static void main_monitor_temp_abort (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) { const user_options_t *user_options = hashcat_ctx->user_options; const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; if (user_options->quiet == true) return; if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { clear_prompt (); } u32 *device_id = (u32 *) buf; event_log_error (hashcat_ctx, "Temperature limit on GPU #%u reached, aborting...", *device_id + 1); }
out_error(const char *p, ...) { va_list args; if (!out_error_ok()) return; clear_prompt(); if (out_complaint_skipped) { error_msg("..."); out_complaint_skipped = false; } va_start(args, p); axa_verror_msg(p, args); va_end(args); gettimeofday(&out_complaint_last, NULL); }
static void main_cracker_finished (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) { const hashes_t *hashes = hashcat_ctx->hashes; const user_options_t *user_options = hashcat_ctx->user_options; const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; if (user_options->keyspace == true) return; if (user_options->opencl_info == true) return; if (user_options->stdout_flag == true) return; // if we had a prompt, clear it if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { if ((user_options->benchmark == false) && (user_options->speed_only == false)) { clear_prompt (); } } // print final status if ((user_options->benchmark == true) || (user_options->speed_only == true)) { status_benchmark (hashcat_ctx); if (user_options->machine_readable == false) { event_log_info (hashcat_ctx, ""); } } else { if (user_options->quiet == false) { if (hashes->digests_saved != hashes->digests_done) event_log_info (hashcat_ctx, ""); status_display (hashcat_ctx); event_log_info (hashcat_ctx, ""); } } }
static void main_monitor_throttle2 (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) { const user_options_t *user_options = hashcat_ctx->user_options; const user_options_extra_t *user_options_extra = hashcat_ctx->user_options_extra; if (user_options->quiet == true) return; if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { clear_prompt (); } u32 *device_id = (u32 *) buf; event_log_warning (hashcat_ctx, "Drivers temperature threshold hit on GPU #%u, expect performance to drop...", *device_id + 1); if ((user_options_extra->wordlist_mode == WL_MODE_FILE) || (user_options_extra->wordlist_mode == WL_MODE_MASK)) { send_prompt (); } }
void out_close(bool announce) { if (out_pcap_dumper != NULL) { pcap_dump_close(out_pcap_dumper); out_pcap_dumper = NULL; } if (out_pcap != NULL) { pcap_close(out_pcap); out_pcap = NULL; } if (out_nmsg_output != NULL) nmsg_output_close(&out_nmsg_output); if (out_nmsg_mod != NULL) { nmsg_msgmod_fini(out_nmsg_mod, &out_nmsg_clos); } if (out_addr != NULL) { if (announce) { clear_prompt(); printf("stop forwarding to %s\n", out_addr); } free(out_addr); out_addr = NULL; } out_buf_base = out_buf_len = 0; time_out_flush.tv_sec = 0; out_nmsg_mod = NULL; out_nmsg_mod_checked = false; out_complaint_last.tv_sec = 0; out_complaint_skipped = false; out_on = false; out_on_nmsg = false; nmsg_zlib = false; }
void area25(int damage) { int x,y; int x1,y1; int mon; int i; x1 = player.x; y1 = player.y; if (x1<2) x1=2; else if (x1>98) x1 = 98; if (y1<2) y1=2; else if (y1>98) y1 = 98; for (x=x1-2; x<=x1+2; x++) for (y=y1-2; y<=y1+2; y++) if (player.map[x][y] < 0 || (player.map[x][y]>400 && player.map[x][y]<500)) { if (in_arena == 'Y') mon = player.map[x][y] - 400; else mon = player.map[x][y]; i = 90; if (in_arena == 'Y' && player.monster[mon][a_mon].special == 1) i = 0; if (in_arena != 'Y' && player.monster[1][mon].special == 1) i = 0; if (u_random(100) < i) { clear_prompt(); noise(1000,100); prompt("HIT !!!"); if (in_arena != 'Y' && player.monster[1][mon].special > 9) { player.align -= 20; player.monster[1][mon].special -= 10; if (player.align < 0) player.align = 0; } if (in_arena == 'Y' && player.monster[mon][a_mon].special > 9) { player.align -= 20; player.monster[mon][a_mon].special -= 10; if (player.align < 0) player.align = 0; } if (in_sight(x,y) == '*') { show_sprite(x-player.map_x,y-player.map_y,80); delay(250); show_spot(x,y); } i = u_random(damage) + 1; if (in_arena == 'Y') player.monster[mon][a_mon].hp -= i; else player.monster[1][mon].hp -= i; if (in_arena == 'Y') i=player.monster[mon][a_mon].hp; else i=player.monster[1][mon].hp; if (i <= 0) { clear_prompt(); if (in_arena != 'Y') { gain_exp(player.monster[1][mon].exp); player.map[x][y] = player.monster[1][mon].prev; } if (in_arena == 'Y') { gain_exp(player.monster[mon][a_mon].exp); player.map[x][y] = player.monster[mon][a_mon].prev; } show_spot(x,y); if (in_arena != 'Y' && player.monster[1][mon].special > 9) { player.align -= 20; if (player.align < 0) player.align = 0; } if (in_arena == 'Y' && player.monster[mon][a_mon].special > 9) { player.align -= 20; if (player.align < 0) player.align = 0; } show_side(); } } else { clear_prompt(); prompt("Fizzle. . ."); } } }
void drain(int damage) { char key; char buffer[32]; int x,y; int xdir,ydir; int mon; int i; key = get_dir(&xdir,&ydir); x = player.x + xdir; y = player.y + ydir; if (player.map[x][y] < 0 || (player.map[x][y]>400 && player.map[x][y]<500)) { if (in_arena == 'Y') mon = player.map[x][y] - 400; else mon = player.map[x][y]; i = 90; if (in_arena == 'Y' && player.monster[mon][a_mon].special == 1) i = 0; if (in_arena != 'Y' && player.monster[1][mon].special == 1) i = 0; if (u_random(100) < i) { clear_prompt(); noise(1000,100); prompt("HIT !!!"); if (in_arena != 'Y' && player.monster[1][mon].special > 9) { player.align -= 20; player.monster[1][mon].special -= 10; if (player.align < 0) player.align = 0; } if (in_arena == 'Y' && player.monster[mon][a_mon].special > 9) { player.align -= 20; player.monster[mon][a_mon].special -= 10; if (player.align < 0) player.align = 0; } if (in_sight(x,y) == '*') { show_sprite(x-player.map_x,y-player.map_y,80); delay(250); show_spot(x,y); } i = u_random(damage) + 1; player.chp += i; if (player.chp > player.mhp) player.chp = player.mhp; if (in_arena == 'Y') player.monster[mon][a_mon].hp -= i; else player.monster[1][mon].hp -= i; if (in_arena == 'Y') i=player.monster[mon][a_mon].hp; else i=player.monster[1][mon].hp; if (i <= 0) { clear_prompt(); if (in_arena != 'Y') { sprintf(buffer,"Exp=%.0f",player.monster[1][mon].exp); prompt(buffer); player.exp += player.monster[1][mon].exp; player.map[x][y] = player.monster[1][mon].prev; } if (in_arena == 'Y') { sprintf(buffer,"Exp=%.0f",player.monster[mon][a_mon].exp); prompt(buffer); player.exp += player.monster[mon][a_mon].exp; player.map[x][y] = player.monster[mon][a_mon].prev; } show_spot(x,y); if (in_arena != 'Y' && player.monster[1][mon].special > 9) { player.align -= 20; if (player.align < 0) player.align = 0; } if (in_arena == 'Y' && player.monster[mon][a_mon].special > 9) { player.align -= 20; if (player.align < 0) player.align = 0; } show_side(); } } else { clear_prompt(); prompt("Fizzle. . ."); } } }
/* forward watch hits as NMSG messages */ bool out_whit_nmsg(axa_p_whit_t *whit, size_t whit_len) { nmsg_message_t msg; struct timespec ts; static const union { uint e; uint8_t c[0]; } pkt_enum = { .e = NMSG__BASE__PACKET_TYPE__IP }; size_t len; struct timeval now; nmsg_res res; bool result; switch ((axa_p_whit_enum_t)whit->hdr.type) { case AXA_P_WHIT_NMSG: /* pass NMSG messages along */ if (whit2nmsg(&msg, whit, whit_len) == AXA_W2N_RES_FRAGMENT) { if (axa_debug != 0) printf("ignoring NMSG fragment from " AXA_OP_CH_PREFIX"%d", AXA_P2H_CH(whit->hdr.ch)); return (false); } if (msg == NULL) return (false); break; case AXA_P_WHIT_IP: /* Convert raw IP packets to nmsg BASE_PACKET */ len = whit_len - sizeof(whit->ip.hdr); if (AXA_P2H32(whit->ip.hdr.ip_len) != len) return (false); /* Ignore incomplete packets. */ if (!out_nmsg_mod_checked) { out_nmsg_mod_checked = true; out_nmsg_mod = nmsg_msgmod_lookup(NMSG_VENDOR_BASE_ID, NMSG_VENDOR_BASE_PACKET_ID); if (out_nmsg_mod == NULL) { out_error("cannot get BASE_PACKET module"); return (false); } res = nmsg_msgmod_init(out_nmsg_mod, &out_nmsg_clos); if (res != nmsg_res_success) { out_error("cannot init BASE_PACKET module"); out_nmsg_mod = NULL; return (false); } } if (out_nmsg_mod == NULL) { out_error("cannot forward IP as NMSG messages" " without PACKET nmsg_msgmod"); return (false); } msg = nmsg_message_init(out_nmsg_mod); AXA_ASSERT(msg != NULL); res = nmsg_message_set_field(msg, "payload_type", 0, pkt_enum.c, sizeof(pkt_enum)); AXA_ASSERT(res == nmsg_res_success); res = nmsg_message_set_field(msg, "payload", 0, whit->ip.b, len); AXA_ASSERT(res == nmsg_res_success); ts.tv_sec = AXA_P2H32(whit->ip.hdr.tv.tv_sec); ts.tv_nsec = AXA_P2H32(whit->ip.hdr.tv.tv_usec) * 1000; nmsg_message_set_time(msg, &ts); break; #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunreachable-code" default: out_error("cannot forward SRA #%d messages as NMSG messages", whit->hdr.type); return (false); #pragma clang diagnostic pop } res = nmsg_output_write(out_nmsg_output, msg); if (res == nmsg_res_success) { result = true; } else { result = false; gettimeofday(&now, NULL); if (out_sock_type != SOCK_DGRAM || res != nmsg_res_errno || !AXA_IGNORED_UDP_ERRNO(errno)) { /* Stop on non-UDP errors. */ clear_prompt(); error_msg("nmsg_output_write(): %s", nmsg_res_lookup(res)); out_close(false); disconnect(true); } else if (output_errno != errno || 60*1000 <= axa_elapsed_ms(&now, &output_errno_time) || axa_debug >= AXA_DEBUG_TRACE) { /* Report occasional identical UDP errors. */ output_errno = errno; gettimeofday(&output_errno_time, NULL); clear_prompt(); error_msg("nmsg_output_write(): %s", strerror(output_errno)); } } nmsg_message_destroy(&msg); if (time_out_flush.tv_sec == 0) gettimeofday(&time_out_flush, NULL); return (result); }