Introduce hashconfig_t

This commit is contained in:
jsteube
2016-09-09 16:54:48 +02:00
parent ecba0d295a
commit 26172af89d
16 changed files with 4776 additions and 5146 deletions
+1
View File
@@ -13,6 +13,7 @@
#include "ext_nvml.h"
#include "ext_xnvctrl.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "rp_cpu.h"
#include "restore.h"
+387 -4525
View File
File diff suppressed because it is too large Load Diff
+20 -20
View File
@@ -46,7 +46,7 @@ static const char HLFMT_TEXT_NSLDAPS[] = "nsldaps";
// hlfmt hashcat
static void hlfmt_hash_hashcat (char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len)
static void hlfmt_hash_hashcat (char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, hashconfig_t *hashconfig)
{
if (data.username == 0)
{
@@ -60,7 +60,7 @@ static void hlfmt_hash_hashcat (char *line_buf, int line_len, char **hashbuf_pos
for (int i = 0; i < line_len; i++, pos++, len--)
{
if (line_buf[i] == data.separator)
if (line_buf[i] == hashconfig->separator)
{
pos++;
@@ -75,7 +75,7 @@ static void hlfmt_hash_hashcat (char *line_buf, int line_len, char **hashbuf_pos
}
}
static void hlfmt_user_hashcat (char *line_buf, int line_len, char **userbuf_pos, int *userbuf_len)
static void hlfmt_user_hashcat (char *line_buf, int line_len, char **userbuf_pos, int *userbuf_len, hashconfig_t *hashconfig)
{
char *pos = NULL;
int len = 0;
@@ -84,7 +84,7 @@ static void hlfmt_user_hashcat (char *line_buf, int line_len, char **userbuf_pos
for (int i = 0; i < line_len; i++)
{
if (line_buf[i] == data.separator)
if (line_buf[i] == hashconfig->separator)
{
sep_cnt++;
@@ -130,7 +130,7 @@ static int hlfmt_detect_pwdump (char *line_buf, int line_len)
return 0;
}
static void hlfmt_hash_pwdump (char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len)
static void hlfmt_hash_pwdump (char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, hashconfig_t *hashconfig)
{
char *pos = NULL;
int len = 0;
@@ -146,7 +146,7 @@ static void hlfmt_hash_pwdump (char *line_buf, int line_len, char **hashbuf_pos,
continue;
}
if (data.hash_mode == 1000)
if (hashconfig->hash_mode == 1000)
{
if (sep_cnt == 3)
{
@@ -155,7 +155,7 @@ static void hlfmt_hash_pwdump (char *line_buf, int line_len, char **hashbuf_pos,
len++;
}
}
else if (data.hash_mode == 3000)
else if (hashconfig->hash_mode == 3000)
{
if (sep_cnt == 2)
{
@@ -328,34 +328,34 @@ char *strhlfmt (const uint hashfile_format)
return ((char *) "Unknown");
}
void hlfmt_hash (uint hashfile_format, char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len)
void hlfmt_hash (uint hashfile_format, char *line_buf, int line_len, char **hashbuf_pos, int *hashbuf_len, hashconfig_t *hashconfig)
{
switch (hashfile_format)
{
case HLFMT_HASHCAT: hlfmt_hash_hashcat (line_buf, line_len, hashbuf_pos, hashbuf_len); break;
case HLFMT_PWDUMP: hlfmt_hash_pwdump (line_buf, line_len, hashbuf_pos, hashbuf_len); break;
case HLFMT_PASSWD: hlfmt_hash_passwd (line_buf, line_len, hashbuf_pos, hashbuf_len); break;
case HLFMT_SHADOW: hlfmt_hash_shadow (line_buf, line_len, hashbuf_pos, hashbuf_len); break;
case HLFMT_HASHCAT: hlfmt_hash_hashcat (line_buf, line_len, hashbuf_pos, hashbuf_len, hashconfig); break;
case HLFMT_PWDUMP: hlfmt_hash_pwdump (line_buf, line_len, hashbuf_pos, hashbuf_len, hashconfig); break;
case HLFMT_PASSWD: hlfmt_hash_passwd (line_buf, line_len, hashbuf_pos, hashbuf_len); break;
case HLFMT_SHADOW: hlfmt_hash_shadow (line_buf, line_len, hashbuf_pos, hashbuf_len); break;
}
}
void hlfmt_user (uint hashfile_format, char *line_buf, int line_len, char **userbuf_pos, int *userbuf_len)
void hlfmt_user (uint hashfile_format, char *line_buf, int line_len, char **userbuf_pos, int *userbuf_len, hashconfig_t *hashconfig)
{
switch (hashfile_format)
{
case HLFMT_HASHCAT: hlfmt_user_hashcat (line_buf, line_len, userbuf_pos, userbuf_len); break;
case HLFMT_PWDUMP: hlfmt_user_pwdump (line_buf, line_len, userbuf_pos, userbuf_len); break;
case HLFMT_PASSWD: hlfmt_user_passwd (line_buf, line_len, userbuf_pos, userbuf_len); break;
case HLFMT_SHADOW: hlfmt_user_shadow (line_buf, line_len, userbuf_pos, userbuf_len); break;
case HLFMT_HASHCAT: hlfmt_user_hashcat (line_buf, line_len, userbuf_pos, userbuf_len, hashconfig); break;
case HLFMT_PWDUMP: hlfmt_user_pwdump (line_buf, line_len, userbuf_pos, userbuf_len); break;
case HLFMT_PASSWD: hlfmt_user_passwd (line_buf, line_len, userbuf_pos, userbuf_len); break;
case HLFMT_SHADOW: hlfmt_user_shadow (line_buf, line_len, userbuf_pos, userbuf_len); break;
}
}
uint hlfmt_detect (FILE *fp, uint max_check)
uint hlfmt_detect (FILE *fp, uint max_check, hashconfig_t *hashconfig)
{
// Exception: those formats are wrongly detected as HLFMT_SHADOW, prevent it
if (data.hash_mode == 5300) return HLFMT_HASHCAT;
if (data.hash_mode == 5400) return HLFMT_HASHCAT;
if (hashconfig->hash_mode == 5300) return HLFMT_HASHCAT;
if (hashconfig->hash_mode == 5400) return HLFMT_HASHCAT;
uint *formats_cnt = (uint *) mycalloc (HLFMTS_CNT, sizeof (uint));
+1
View File
@@ -17,6 +17,7 @@
#include "ext_nvml.h"
#include "ext_xnvctrl.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "rp_cpu.h"
#include "restore.h"
+4112 -369
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -22,6 +22,7 @@
#include "memory.h"
#include "hwmon.h"
#include "rp_cpu.h"
#include "interface.h"
#include "mpsp.h"
#include "opencl.h"
#include "restore.h"
+35 -34
View File
@@ -24,6 +24,7 @@
#include "filehandling.h"
#include "thread.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "rp_cpu.h"
#include "opencl.h"
@@ -60,7 +61,7 @@ void mp_css_to_uniq_tbl (uint css_cnt, cs_t *css, uint uniq_tbls[SP_PW_MAX][CHAR
}
}
static void mp_add_cs_buf (uint *in_buf, size_t in_len, cs_t *css, int css_cnt)
static void mp_add_cs_buf (uint *in_buf, size_t in_len, cs_t *css, int css_cnt, hashconfig_t *hashconfig)
{
cs_t *cs = &css[css_cnt];
@@ -81,7 +82,7 @@ static void mp_add_cs_buf (uint *in_buf, size_t in_len, cs_t *css, int css_cnt)
{
uint u = in_buf[i] & 0xff;
if (data.opts_type & OPTS_TYPE_PT_UPPER) u = (uint) toupper (u);
if (hashconfig->opts_type & OPTS_TYPE_PT_UPPER) u = (uint) toupper (u);
if (css_uniq[u] == 1) continue;
@@ -95,7 +96,7 @@ static void mp_add_cs_buf (uint *in_buf, size_t in_len, cs_t *css, int css_cnt)
myfree (css_uniq);
}
static void mp_expand (char *in_buf, size_t in_len, cs_t *mp_sys, cs_t *mp_usr, int mp_usr_offset, int interpret)
static void mp_expand (char *in_buf, size_t in_len, cs_t *mp_sys, cs_t *mp_usr, int mp_usr_offset, int interpret, hashconfig_t *hashconfig)
{
size_t in_pos;
@@ -113,31 +114,31 @@ static void mp_expand (char *in_buf, size_t in_len, cs_t *mp_sys, cs_t *mp_usr,
switch (p1)
{
case 'l': mp_add_cs_buf (mp_sys[0].cs_buf, mp_sys[0].cs_len, mp_usr, mp_usr_offset);
case 'l': mp_add_cs_buf (mp_sys[0].cs_buf, mp_sys[0].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case 'u': mp_add_cs_buf (mp_sys[1].cs_buf, mp_sys[1].cs_len, mp_usr, mp_usr_offset);
case 'u': mp_add_cs_buf (mp_sys[1].cs_buf, mp_sys[1].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case 'd': mp_add_cs_buf (mp_sys[2].cs_buf, mp_sys[2].cs_len, mp_usr, mp_usr_offset);
case 'd': mp_add_cs_buf (mp_sys[2].cs_buf, mp_sys[2].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case 's': mp_add_cs_buf (mp_sys[3].cs_buf, mp_sys[3].cs_len, mp_usr, mp_usr_offset);
case 's': mp_add_cs_buf (mp_sys[3].cs_buf, mp_sys[3].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case 'a': mp_add_cs_buf (mp_sys[4].cs_buf, mp_sys[4].cs_len, mp_usr, mp_usr_offset);
case 'a': mp_add_cs_buf (mp_sys[4].cs_buf, mp_sys[4].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case 'b': mp_add_cs_buf (mp_sys[5].cs_buf, mp_sys[5].cs_len, mp_usr, mp_usr_offset);
case 'b': mp_add_cs_buf (mp_sys[5].cs_buf, mp_sys[5].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case '1': if (mp_usr[0].cs_len == 0) { log_error ("ERROR: Custom-charset 1 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[0].cs_buf, mp_usr[0].cs_len, mp_usr, mp_usr_offset);
mp_add_cs_buf (mp_usr[0].cs_buf, mp_usr[0].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case '2': if (mp_usr[1].cs_len == 0) { log_error ("ERROR: Custom-charset 2 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[1].cs_buf, mp_usr[1].cs_len, mp_usr, mp_usr_offset);
mp_add_cs_buf (mp_usr[1].cs_buf, mp_usr[1].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case '3': if (mp_usr[2].cs_len == 0) { log_error ("ERROR: Custom-charset 3 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[2].cs_buf, mp_usr[2].cs_len, mp_usr, mp_usr_offset);
mp_add_cs_buf (mp_usr[2].cs_buf, mp_usr[2].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case '4': if (mp_usr[3].cs_len == 0) { log_error ("ERROR: Custom-charset 4 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[3].cs_buf, mp_usr[3].cs_len, mp_usr, mp_usr_offset);
mp_add_cs_buf (mp_usr[3].cs_buf, mp_usr[3].cs_len, mp_usr, mp_usr_offset, hashconfig);
break;
case '?': mp_add_cs_buf (&p0, 1, mp_usr, mp_usr_offset);
case '?': mp_add_cs_buf (&p0, 1, mp_usr, mp_usr_offset, hashconfig);
break;
default: log_error ("Syntax error: %s", in_buf);
exit (-1);
@@ -170,13 +171,13 @@ static void mp_expand (char *in_buf, size_t in_len, cs_t *mp_sys, cs_t *mp_usr,
chr = hex_convert (p1) << 0;
chr |= hex_convert (p0) << 4;
mp_add_cs_buf (&chr, 1, mp_usr, mp_usr_offset);
mp_add_cs_buf (&chr, 1, mp_usr, mp_usr_offset, hashconfig);
}
else
{
uint chr = p0;
mp_add_cs_buf (&chr, 1, mp_usr, mp_usr_offset);
mp_add_cs_buf (&chr, 1, mp_usr, mp_usr_offset, hashconfig);
}
}
}
@@ -194,7 +195,7 @@ u64 mp_get_sum (uint css_cnt, cs_t *css)
return (sum);
}
cs_t *mp_gen_css (char *mask_buf, size_t mask_len, cs_t *mp_sys, cs_t *mp_usr, uint *css_cnt)
cs_t *mp_gen_css (char *mask_buf, size_t mask_len, cs_t *mp_sys, cs_t *mp_usr, uint *css_cnt, hashconfig_t *hashconfig)
{
cs_t *css = (cs_t *) mycalloc (256, sizeof (cs_t));
@@ -217,31 +218,31 @@ cs_t *mp_gen_css (char *mask_buf, size_t mask_len, cs_t *mp_sys, cs_t *mp_usr, u
switch (p1)
{
case 'l': mp_add_cs_buf (mp_sys[0].cs_buf, mp_sys[0].cs_len, css, css_pos);
case 'l': mp_add_cs_buf (mp_sys[0].cs_buf, mp_sys[0].cs_len, css, css_pos, hashconfig);
break;
case 'u': mp_add_cs_buf (mp_sys[1].cs_buf, mp_sys[1].cs_len, css, css_pos);
case 'u': mp_add_cs_buf (mp_sys[1].cs_buf, mp_sys[1].cs_len, css, css_pos, hashconfig);
break;
case 'd': mp_add_cs_buf (mp_sys[2].cs_buf, mp_sys[2].cs_len, css, css_pos);
case 'd': mp_add_cs_buf (mp_sys[2].cs_buf, mp_sys[2].cs_len, css, css_pos, hashconfig);
break;
case 's': mp_add_cs_buf (mp_sys[3].cs_buf, mp_sys[3].cs_len, css, css_pos);
case 's': mp_add_cs_buf (mp_sys[3].cs_buf, mp_sys[3].cs_len, css, css_pos, hashconfig);
break;
case 'a': mp_add_cs_buf (mp_sys[4].cs_buf, mp_sys[4].cs_len, css, css_pos);
case 'a': mp_add_cs_buf (mp_sys[4].cs_buf, mp_sys[4].cs_len, css, css_pos, hashconfig);
break;
case 'b': mp_add_cs_buf (mp_sys[5].cs_buf, mp_sys[5].cs_len, css, css_pos);
case 'b': mp_add_cs_buf (mp_sys[5].cs_buf, mp_sys[5].cs_len, css, css_pos, hashconfig);
break;
case '1': if (mp_usr[0].cs_len == 0) { log_error ("ERROR: Custom-charset 1 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[0].cs_buf, mp_usr[0].cs_len, css, css_pos);
mp_add_cs_buf (mp_usr[0].cs_buf, mp_usr[0].cs_len, css, css_pos, hashconfig);
break;
case '2': if (mp_usr[1].cs_len == 0) { log_error ("ERROR: Custom-charset 2 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[1].cs_buf, mp_usr[1].cs_len, css, css_pos);
mp_add_cs_buf (mp_usr[1].cs_buf, mp_usr[1].cs_len, css, css_pos, hashconfig);
break;
case '3': if (mp_usr[2].cs_len == 0) { log_error ("ERROR: Custom-charset 3 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[2].cs_buf, mp_usr[2].cs_len, css, css_pos);
mp_add_cs_buf (mp_usr[2].cs_buf, mp_usr[2].cs_len, css, css_pos, hashconfig);
break;
case '4': if (mp_usr[3].cs_len == 0) { log_error ("ERROR: Custom-charset 4 is undefined\n"); exit (-1); }
mp_add_cs_buf (mp_usr[3].cs_buf, mp_usr[3].cs_len, css, css_pos);
mp_add_cs_buf (mp_usr[3].cs_buf, mp_usr[3].cs_len, css, css_pos, hashconfig);
break;
case '?': mp_add_cs_buf (&chr, 1, css, css_pos);
case '?': mp_add_cs_buf (&chr, 1, css, css_pos, hashconfig);
break;
default: log_error ("ERROR: Syntax error: %s", mask_buf);
exit (-1);
@@ -278,13 +279,13 @@ cs_t *mp_gen_css (char *mask_buf, size_t mask_len, cs_t *mp_sys, cs_t *mp_usr, u
chr |= hex_convert (p1) << 0;
chr |= hex_convert (p0) << 4;
mp_add_cs_buf (&chr, 1, css, css_pos);
mp_add_cs_buf (&chr, 1, css, css_pos, hashconfig);
}
else
{
uint chr = p0;
mp_add_cs_buf (&chr, 1, css, css_pos);
mp_add_cs_buf (&chr, 1, css, css_pos, hashconfig);
}
}
}
@@ -356,13 +357,13 @@ void mp_setup_sys (cs_t *mp_sys)
mp_sys[5].cs_len = pos; }
}
void mp_setup_usr (cs_t *mp_sys, cs_t *mp_usr, char *buf, uint index)
void mp_setup_usr (cs_t *mp_sys, cs_t *mp_usr, char *buf, uint index, hashconfig_t *hashconfig)
{
FILE *fp = fopen (buf, "rb");
if (fp == NULL || feof (fp)) // feof() in case if file is empty
{
mp_expand (buf, strlen (buf), mp_sys, mp_usr, index, 1);
mp_expand (buf, strlen (buf), mp_sys, mp_usr, index, 1, hashconfig);
}
else
{
@@ -378,11 +379,11 @@ void mp_setup_usr (cs_t *mp_sys, cs_t *mp_usr, char *buf, uint index)
{
log_info ("WARNING: Charset file corrupted");
mp_expand (buf, strlen (buf), mp_sys, mp_usr, index, 1);
mp_expand (buf, strlen (buf), mp_sys, mp_usr, index, 1, hashconfig);
}
else
{
mp_expand (mp_file, len, mp_sys, mp_usr, index, 0);
mp_expand (mp_file, len, mp_sys, mp_usr, index, 0, hashconfig);
}
}
}
+1
View File
@@ -21,6 +21,7 @@
#include "opencl.h"
#include "shared.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "restore.h"
#include "data.h"
+1
View File
@@ -17,6 +17,7 @@
#include "thread.h"
#include "rp_cpu.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "opencl.h"
#include "restore.h"
+1
View File
@@ -23,6 +23,7 @@
#include "rp_cpu.h"
#include "terminal.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "rp_cpu.h"
#include "opencl.h"
+25 -15
View File
@@ -18,12 +18,13 @@
#include "rp_cpu.h"
#include "terminal.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "opencl.h"
#include "restore.h"
#include "interface.h"
#include "data.h"
//#include "shared.h"
#include "interface.h"
#include "status.h"
static const char ST_0000[] = "Initializing";
@@ -287,6 +288,13 @@ void status_display ()
if (data.devices_status == STATUS_INIT) return;
if (data.devices_status == STATUS_STARTING) return;
hashconfig_t *hashconfig = data.hashconfig;
void *digests_buf = data.digests_buf;
salt_t *salts_buf = data.salts_buf;
void *esalts_buf = data.esalts_buf;
hashinfo_t **hash_info = data.hash_info;
char *hashfile = data.hashfile;
// in this case some required buffers are free'd, ascii_digest() would run into segfault
if (data.shutdown_inner == 1) return;
@@ -305,7 +313,7 @@ void status_display ()
char *status_type = strstatus (data.devices_status);
uint hash_mode = data.hash_mode;
uint hash_mode = hashconfig->hash_mode;
char *hash_type = strhashtype (hash_mode); // not a bug
@@ -373,15 +381,15 @@ void status_display ()
if (mask_len > 0)
{
if (data.opti_type & OPTI_TYPE_SINGLE_HASH)
if (hashconfig->opti_type & OPTI_TYPE_SINGLE_HASH)
{
if (data.opti_type & OPTI_TYPE_APPENDED_SALT)
if (hashconfig->opti_type & OPTI_TYPE_APPENDED_SALT)
{
mask_len -= data.salts_buf[0].salt_len;
}
}
if (data.opts_type & OPTS_TYPE_PT_UNICODE) mask_len /= 2;
if (hashconfig->opts_type & OPTS_TYPE_PT_UNICODE) mask_len /= 2;
tmp_len += snprintf (tmp_buf + tmp_len, sizeof (tmp_buf) - tmp_len, " [%i]", mask_len);
}
@@ -490,7 +498,7 @@ void status_display ()
if (data.digests_cnt == 1)
{
if (data.hash_mode == 2500)
if (hashconfig->hash_mode == 2500)
{
wpa_t *wpa = (wpa_t *) data.esalts_buf;
@@ -509,19 +517,19 @@ void status_display ()
wpa->orig_mac2[4],
wpa->orig_mac2[5]);
}
else if (data.hash_mode == 5200)
else if (hashconfig->hash_mode == 5200)
{
log_info ("Hash.Target....: File (%s)", data.hashfile);
}
else if (data.hash_mode == 9000)
else if (hashconfig->hash_mode == 9000)
{
log_info ("Hash.Target....: File (%s)", data.hashfile);
}
else if ((data.hash_mode >= 6200) && (data.hash_mode <= 6299))
else if ((hashconfig->hash_mode >= 6200) && (hashconfig->hash_mode <= 6299))
{
log_info ("Hash.Target....: File (%s)", data.hashfile);
}
else if ((data.hash_mode >= 13700) && (data.hash_mode <= 13799))
else if ((hashconfig->hash_mode >= 13700) && (hashconfig->hash_mode <= 13799))
{
log_info ("Hash.Target....: File (%s)", data.hashfile);
}
@@ -529,7 +537,7 @@ void status_display ()
{
char out_buf[HCBUFSIZ_LARGE] = { 0 };
ascii_digest (out_buf, 0, 0);
ascii_digest (out_buf, 0, 0, hashconfig, digests_buf, salts_buf, esalts_buf, hash_info, hashfile);
// limit length
if (strlen (out_buf) > 40)
@@ -545,13 +553,13 @@ void status_display ()
}
else
{
if (data.hash_mode == 3000)
if (hashconfig->hash_mode == 3000)
{
char out_buf1[32] = { 0 };
char out_buf2[32] = { 0 };
ascii_digest (out_buf1, 0, 0);
ascii_digest (out_buf2, 0, 1);
ascii_digest (out_buf1, 0, 0, hashconfig, digests_buf, salts_buf, esalts_buf, hash_info, hashfile);
ascii_digest (out_buf2, 0, 1, hashconfig, digests_buf, salts_buf, esalts_buf, hash_info, hashfile);
log_info ("Hash.Target....: %s, %s", out_buf1, out_buf2);
}
@@ -1117,6 +1125,8 @@ void status_display ()
void status_benchmark_automate ()
{
hashconfig_t *hashconfig = data.hashconfig;
u64 speed_cnt[DEVICES_MAX] = { 0 };
double speed_ms[DEVICES_MAX] = { 0 };
@@ -1152,7 +1162,7 @@ void status_benchmark_automate ()
if (device_param->skipped) continue;
log_info ("%u:%u:%" PRIu64 "", device_id + 1, data.hash_mode, (hashes_dev_ms[device_id] * 1000));
log_info ("%u:%u:%" PRIu64 "", device_id + 1, hashconfig->hash_mode, (hashes_dev_ms[device_id] * 1000));
}
}
+1
View File
@@ -24,6 +24,7 @@
#include "interface.h"
#include "shared.h"
#include "hwmon.h"
#include "interface.h"
#include "mpsp.h"
#include "restore.h"
#include "data.h"