X-Git-Url: https://www.flypig.org.uk/git/?a=blobdiff_plain;f=src%2Fshared.c;h=8488463e691e36d0811e737bfc6cd6960271b3bf;hb=51e1d11b2d6dff4ae331cff6098169455733c412;hp=e7d5dc399bb76fd56c245ca064475dcc08ad8450;hpb=d77c63a12c08cc587e420b2196bdb32bfee1ad5a;p=hashcat.git diff --git a/src/shared.c b/src/shared.c index e7d5dc3..8488463 100644 --- a/src/shared.c +++ b/src/shared.c @@ -6,7 +6,7 @@ * License.....: MIT */ -#ifdef DARWIN +#ifdef __APPLE__ #include #endif @@ -2338,7 +2338,7 @@ void drupal7_encode (u8 digest[64], u8 buf[43]) * tty */ -#ifdef LINUX +#ifdef __linux__ static struct termios savemodes; static int havemodes = 0; @@ -2387,7 +2387,7 @@ int tty_fix() } #endif -#if defined(DARWIN) || defined(__FreeBSD__) +#if defined(__APPLE__) || defined(__FreeBSD__) static struct termios savemodes; static int havemodes = 0; @@ -2756,13 +2756,13 @@ int hm_get_adapter_index_nvapi (HM_ADAPTER_NVAPI nvapiGPUHandle[DEVICES_MAX]) { NvU32 pGpuCount; - if (hm_NvAPI_EnumPhysicalGPUs (data.hm_nvapi, nvapiGPUHandle, &pGpuCount) != NVAPI_OK) return (0); + if (hm_NvAPI_EnumPhysicalGPUs (data.hm_nvapi, nvapiGPUHandle, &pGpuCount) != NVAPI_OK) return 0; if (pGpuCount == 0) { log_info ("WARN: No NvAPI adapters found"); - return (0); + return 0; } return (pGpuCount); @@ -2787,7 +2787,7 @@ int hm_get_adapter_index_nvml (HM_ADAPTER_NVML nvmlGPUHandle[DEVICES_MAX]) { log_info ("WARN: No NVML adapters found"); - return (0); + return 0; } return (pGpuCount); @@ -3489,7 +3489,9 @@ int hm_set_fanspeed_with_device_id_nvapi (const uint device_id, const int fanspe { if (fanpolicy == 1) { - NV_GPU_COOLER_LEVELS CoolerLevels = { 0 }; + NV_GPU_COOLER_LEVELS CoolerLevels; + + memset (&CoolerLevels, 0, sizeof (NV_GPU_COOLER_LEVELS)); CoolerLevels.Version = GPU_COOLER_LEVELS_VER | sizeof (NV_GPU_COOLER_LEVELS); @@ -4351,7 +4353,7 @@ char *get_exec_path () char *exec_path = (char *) mymalloc (exec_path_len); - #ifdef LINUX + #ifdef __linux__ char tmp[32] = { 0 }; @@ -4363,7 +4365,7 @@ char *get_exec_path () const int len = GetModuleFileName (NULL, exec_path, exec_path_len - 1); - #elif DARWIN + #elif __APPLE__ uint size = exec_path_len; @@ -4517,7 +4519,7 @@ void truecrypt_crc32 (const char *filename, u8 keytab[64]) myfree (buf); } -#ifdef DARWIN +#ifdef __APPLE__ int pthread_setaffinity_np (pthread_t thread, size_t cpu_size, cpu_set_t *cpu_set) { int core; @@ -4582,7 +4584,7 @@ void set_cpu_affinity (char *cpu_affinity) } #ifdef _WIN - aff_mask |= 1 << (cpu_id - 1); + aff_mask |= 1u << (cpu_id - 1); #elif _POSIX CPU_SET ((cpu_id - 1), &cpuset); #endif @@ -4645,7 +4647,7 @@ int sort_by_salt (const void *v1, const void *v2) while (n--) { if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1); - if (s1->salt_buf[n] < s2->salt_buf[n]) return (-1); + if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; } n = 8; @@ -4653,10 +4655,10 @@ int sort_by_salt (const void *v1, const void *v2) while (n--) { if (s1->salt_buf_pc[n] > s2->salt_buf_pc[n]) return ( 1); - if (s1->salt_buf_pc[n] < s2->salt_buf_pc[n]) return (-1); + if (s1->salt_buf_pc[n] < s2->salt_buf_pc[n]) return -1; } - return (0); + return 0; } int sort_by_salt_buf (const void *v1, const void *v2) @@ -4675,7 +4677,7 @@ int sort_by_salt_buf (const void *v1, const void *v2) while (n--) { if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1); - if (s1->salt_buf[n] < s2->salt_buf[n]) return (-1); + if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; } return 0; @@ -4695,20 +4697,20 @@ int sort_by_hash_t_salt (const void *v1, const void *v2) while (n--) { if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1); - if (s1->salt_buf[n] < s2->salt_buf[n]) return (-1); + if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; } /* original code, seems buggy since salt_len can be very big (had a case with 131 len) also it thinks salt_buf[x] is a char but its a uint so salt_len should be / 4 if (s1->salt_len > s2->salt_len) return ( 1); - if (s1->salt_len < s2->salt_len) return (-1); + if (s1->salt_len < s2->salt_len) return -1; uint n = s1->salt_len; while (n--) { if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1); - if (s1->salt_buf[n] < s2->salt_buf[n]) return (-1); + if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; } */ @@ -4730,7 +4732,7 @@ int sort_by_hash_t_salt_hccap (const void *v1, const void *v2) while (n--) { if (s1->salt_buf[n] > s2->salt_buf[n]) return ( 1); - if (s1->salt_buf[n] < s2->salt_buf[n]) return (-1); + if (s1->salt_buf[n] < s2->salt_buf[n]) return -1; } return 0; @@ -4819,7 +4821,7 @@ int sort_by_dictstat (const void *s1, const void *s2) dictstat_t *d1 = (dictstat_t *) s1; dictstat_t *d2 = (dictstat_t *) s2; - #ifdef _LINUX + #ifdef __linux__ d2->stat.st_atim = d1->stat.st_atim; #else d2->stat.st_atime = d1->stat.st_atime; @@ -4846,10 +4848,10 @@ int sort_by_digest_4_2 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_4_4 (const void *v1, const void *v2) @@ -4862,10 +4864,10 @@ int sort_by_digest_4_4 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_4_5 (const void *v1, const void *v2) @@ -4878,10 +4880,10 @@ int sort_by_digest_4_5 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_4_6 (const void *v1, const void *v2) @@ -4894,10 +4896,10 @@ int sort_by_digest_4_6 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_4_8 (const void *v1, const void *v2) @@ -4910,10 +4912,10 @@ int sort_by_digest_4_8 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_4_16 (const void *v1, const void *v2) @@ -4926,10 +4928,10 @@ int sort_by_digest_4_16 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_4_32 (const void *v1, const void *v2) @@ -4942,10 +4944,10 @@ int sort_by_digest_4_32 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_4_64 (const void *v1, const void *v2) @@ -4958,10 +4960,10 @@ int sort_by_digest_4_64 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_8_8 (const void *v1, const void *v2) @@ -4974,10 +4976,10 @@ int sort_by_digest_8_8 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_8_16 (const void *v1, const void *v2) @@ -4990,10 +4992,10 @@ int sort_by_digest_8_16 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_8_25 (const void *v1, const void *v2) @@ -5006,10 +5008,10 @@ int sort_by_digest_8_25 (const void *v1, const void *v2) while (n--) { if (d1[n] > d2[n]) return ( 1); - if (d1[n] < d2[n]) return (-1); + if (d1[n] < d2[n]) return -1; } - return (0); + return 0; } int sort_by_digest_p0p1 (const void *v1, const void *v2) @@ -5023,15 +5025,15 @@ int sort_by_digest_p0p1 (const void *v1, const void *v2) const uint dgst_pos3 = data.dgst_pos3; if (d1[dgst_pos3] > d2[dgst_pos3]) return ( 1); - if (d1[dgst_pos3] < d2[dgst_pos3]) return (-1); + if (d1[dgst_pos3] < d2[dgst_pos3]) return -1; if (d1[dgst_pos2] > d2[dgst_pos2]) return ( 1); - if (d1[dgst_pos2] < d2[dgst_pos2]) return (-1); + if (d1[dgst_pos2] < d2[dgst_pos2]) return -1; if (d1[dgst_pos1] > d2[dgst_pos1]) return ( 1); - if (d1[dgst_pos1] < d2[dgst_pos1]) return (-1); + if (d1[dgst_pos1] < d2[dgst_pos1]) return -1; if (d1[dgst_pos0] > d2[dgst_pos0]) return ( 1); - if (d1[dgst_pos0] < d2[dgst_pos0]) return (-1); + if (d1[dgst_pos0] < d2[dgst_pos0]) return -1; - return (0); + return 0; } int sort_by_tuning_db_alias (const void *v1, const void *v2) @@ -5225,7 +5227,7 @@ void format_output (FILE *out_fp, char *out_buf, unsigned char *plain_ptr, const #endif } - fputc ('\n', out_fp); + fputs (EOL, out_fp); } void handle_show_request (pot_t *pot, uint pot_cnt, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *), FILE *out_fp) @@ -5506,7 +5508,7 @@ uint setup_opencl_platforms_filter (char *opencl_platforms) exit (-1); } - opencl_platforms_filter |= 1 << (platform - 1); + opencl_platforms_filter |= 1u << (platform - 1); } while ((next = strtok (NULL, ",")) != NULL); @@ -5541,7 +5543,7 @@ u32 setup_devices_filter (char *opencl_devices) exit (-1); } - devices_filter |= 1 << (device_id - 1); + devices_filter |= 1u << (device_id - 1); } while ((next = strtok (NULL, ",")) != NULL); @@ -5576,7 +5578,7 @@ cl_device_type setup_device_types_filter (char *opencl_device_types) exit (-1); } - device_types_filter |= 1 << device_type; + device_types_filter |= 1u << device_type; } while ((next = strtok (NULL, ",")) != NULL); @@ -5792,11 +5794,14 @@ char **scan_directory (const char *path) if ((d = opendir (tmp_path)) != NULL) { - #ifdef DARWIN + #ifdef __APPLE__ + struct dirent e; - for (;;) { + for (;;) + { memset (&e, 0, sizeof (e)); + struct dirent *de = NULL; if (readdir_r (d, &e, &de) != 0) @@ -5807,12 +5812,16 @@ char **scan_directory (const char *path) } if (de == NULL) break; + #else + struct dirent *de; while ((de = readdir (d)) != NULL) { + #endif + if ((strcmp (de->d_name, ".") == 0) || (strcmp (de->d_name, "..") == 0)) continue; int path_size = strlen (tmp_path) + 1 + strlen (de->d_name); @@ -6176,9 +6185,10 @@ void ascii_digest (char *out_buf, uint salt_pos, uint digest_pos) uint len = 4096; - uint digest_buf[64] = { 0 }; + u8 datax[256] = { 0 }; - u64 *digest_buf64 = (u64 *) digest_buf; + u64 *digest_buf64 = (u64 *) datax; + u32 *digest_buf = (u32 *) datax; char *digests_buf_ptr = (char *) data.digests_buf; @@ -10089,7 +10099,7 @@ int bcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) char *iter_pos = input_buf + 4; - salt->salt_iter = 1 << atoi (iter_pos); + salt->salt_iter = 1u << atoi (iter_pos); char *salt_pos = strchr (iter_pos, '$'); @@ -10825,7 +10835,7 @@ int phpass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) char *iter_pos = input_buf + 3; - uint salt_iter = 1 << itoa64_to_int (iter_pos[0]); + uint salt_iter = 1u << itoa64_to_int (iter_pos[0]); if (salt_iter > 0x80000000) return (PARSER_SALT_ITERATION); @@ -13435,7 +13445,7 @@ int sha1aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) salt->salt_sign[0] = atoi (salt_iter); - salt->salt_iter = (1 << atoi (salt_iter)) - 1; + salt->salt_iter = (1u << atoi (salt_iter)) - 1; hash_pos++; @@ -13484,7 +13494,7 @@ int sha256aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) salt->salt_sign[0] = atoi (salt_iter); - salt->salt_iter = (1 << atoi (salt_iter)) - 1; + salt->salt_iter = (1u << atoi (salt_iter)) - 1; hash_pos++; @@ -13536,7 +13546,7 @@ int sha512aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) salt->salt_sign[0] = atoi (salt_iter); - salt->salt_iter = (1 << atoi (salt_iter)) - 1; + salt->salt_iter = (1u << atoi (salt_iter)) - 1; hash_pos++; @@ -14469,7 +14479,7 @@ int drupal7_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) char *iter_pos = input_buf + 3; - uint salt_iter = 1 << itoa64_to_int (iter_pos[0]); + uint salt_iter = 1u << itoa64_to_int (iter_pos[0]); if (salt_iter > 0x80000000) return (PARSER_SALT_ITERATION); @@ -17923,7 +17933,7 @@ int pdf17l8_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) int enc_md = atoi (enc_md_pos); - if (enc_md != 1) return (PARSER_SALT_VALUE); + if ((enc_md != 0) && (enc_md != 1)) return (PARSER_SALT_VALUE); const uint id_len = atoi (id_len_pos); const uint u_len = atoi (u_len_pos); @@ -19050,7 +19060,7 @@ int seven_zip_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) salt->salt_sign[0] = iter; - salt->salt_iter = 1 << iter; + salt->salt_iter = 1u << iter; /** * digest @@ -19669,7 +19679,7 @@ int rar5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf) salt->salt_sign[0] = iterations; - salt->salt_iter = ((1 << iterations) + 32) - 1; + salt->salt_iter = ((1u << iterations) + 32) - 1; /** * digest buf @@ -21129,11 +21139,12 @@ int cpu_rule_to_kernel_rule (char *rule_buf, uint rule_len, kernel_rule_t *rule) break; case RULE_OP_MANGLE_PURGECHAR: - return (-1); + SET_NAME (rule, rule_buf[rule_pos]); + SET_P0 (rule, rule_buf[rule_pos]); break; case RULE_OP_MANGLE_TOGGLECASE_REC: - return (-1); + return -1; break; case RULE_OP_MANGLE_DUPECHAR_FIRST: @@ -21209,14 +21220,14 @@ int cpu_rule_to_kernel_rule (char *rule_buf, uint rule_len, kernel_rule_t *rule) break; default: - return (-1); + return -1; break; } } - if (rule_pos < rule_len) return (-1); + if (rule_pos < rule_len) return -1; - return (0); + return 0; } int kernel_rule_to_cpu_rule (char *rule_buf, kernel_rule_t *rule) @@ -21348,11 +21359,12 @@ int kernel_rule_to_cpu_rule (char *rule_buf, kernel_rule_t *rule) break; case RULE_OP_MANGLE_PURGECHAR: - return (-1); + rule_buf[rule_pos] = rule_cmd; + GET_P0 (rule); break; case RULE_OP_MANGLE_TOGGLECASE_REC: - return (-1); + return -1; break; case RULE_OP_MANGLE_DUPECHAR_FIRST: @@ -21432,7 +21444,7 @@ int kernel_rule_to_cpu_rule (char *rule_buf, kernel_rule_t *rule) break; default: - return (-1); + return -1; break; } } @@ -21442,7 +21454,7 @@ int kernel_rule_to_cpu_rule (char *rule_buf, kernel_rule_t *rule) return rule_pos; } - return (-1); + return -1; } /**