uint eapol[64];
int eapol_size;
int keyver;
+ u8 orig_mac1[6];
+ u8 orig_mac2[6];
+ u8 orig_nonce1[32];
+ u8 orig_nonce2[32];
} wpa_t;
} krb5pa_t;
+typedef struct
+{
+ uint account_info[512];
+ uint checksum[4];
+ uint edata2[2560];
+ uint edata2_len;
+
+} krb5tgs_t;
+
+typedef struct
+{
+ u32 version;
+ u32 algorithm;
+
+ /* key-file handling */
+ u32 keyfile_len;
+ u32 keyfile[8];
+
+ u32 final_random_seed[8];
+ u32 transf_random_seed[8];
+ u32 enc_iv[4];
+ u32 contents_hash[8];
+
+ /* specific to version 1 */
+ u32 contents_len;
+ u32 contents[75000];
+
+ /* specific to version 2 */
+ u32 expected_bytes[8];
+
+} keepass_t;
+
typedef struct
{
uint salt_buf[16];
} oldoffice34_t;
+typedef struct
+{
+ u32 salt_buf[128];
+ u32 salt_len;
+
+ u32 pc_digest[5];
+ u32 pc_offset;
+
+} pstoken_t;
+
typedef struct
{
uint P[256];
} seven_zip_t;
+typedef struct
+{
+ u32 KEK[5];
+
+ u32 lsb[4];
+ u32 cipher[4];
+
+} axcrypt_tmp_t;
+
+typedef struct
+{
+ u32 tmp_digest[8];
+
+} keepass_tmp_t;
+
typedef struct
{
u32 random[2];
typedef struct
{
- union
- {
- u8 hc4[4][ 64];
- u32 hi4[4][ 16];
- u64 hl4[4][ 8];
+ u32 i[16];
- u8 hc2[2][128];
- u32 hi2[2][ 32];
- u64 hl2[2][ 16];
+ u32 pw_len;
- u8 hc1[1][256];
- u32 hi1[1][ 64];
- u64 hl1[1][ 32];
- } h;
-
- uint pw_len;
- uint alignment_placeholder_1;
- uint alignment_placeholder_2;
- uint alignment_placeholder_3;
+ u32 alignment_placeholder_1;
+ u32 alignment_placeholder_2;
+ u32 alignment_placeholder_3;
} pw_t;
} comb_t;
-typedef struct
-{
- pw_t pw_buf;
-
- uint cnt;
-
-} pw_cache_t;
-
typedef struct
{
u32 version_bin;
- char cwd[1024];
+ char cwd[256];
u32 pid;
u32 dictpos;
} wordr_t;
+typedef struct
+{
+ char *device_name;
+ char *alias_name;
+
+} tuning_db_alias_t;
+
+typedef struct
+{
+ char *device_name;
+ int attack_mode;
+ int hash_type;
+ int workload_profile;
+ int vector_width;
+ int kernel_accel;
+ int kernel_loops;
+
+} tuning_db_entry_t;
+
+typedef struct
+{
+ tuning_db_alias_t *alias_buf;
+ int alias_cnt;
+
+ tuning_db_entry_t *entry_buf;
+ int entry_cnt;
+
+} tuning_db_t;
+
#define RULES_MAX 256
#define PW_MIN 0
#define PW_MAX 54
uint device_id;
uint platform_devices_id; // for mapping with hms devices
- uint skipped;
+ bool skipped;
uint sm_major;
uint sm_minor;
u64 device_maxmem_alloc;
u64 device_global_mem;
u32 device_maxclock_frequency;
+ size_t device_maxworkgroup_size;
uint vector_width;
uint kernel_threads;
+ uint kernel_loops;
uint kernel_accel;
- uint kernel_power; // these both are based on their _user counterpart
- uint kernel_blocks; // but are modified by autotuner and used inside crack loops
+ uint kernel_loops_min;
+ uint kernel_loops_max;
+ uint kernel_accel_min;
+ uint kernel_accel_max;
+ uint kernel_power;
uint kernel_power_user;
- uint kernel_blocks_user;
- uint size_pws;
- uint size_tmps;
- uint size_hooks;
- uint size_root_css;
- uint size_markov_css;
- uint size_digests;
- uint size_salts;
- uint size_shown;
- uint size_results;
- uint size_plains;
-
- uint (*pw_add) (struct __hc_device_param *, const u8 *, const uint);
-
- void (*pw_transpose) (const pw_t *, pw_t *);
+ size_t size_pws;
+ size_t size_tmps;
+ size_t size_hooks;
+ size_t size_bfs;
+ size_t size_combs;
+ size_t size_rules;
+ size_t size_rules_c;
+ size_t size_root_css;
+ size_t size_markov_css;
+ size_t size_digests;
+ size_t size_salts;
+ size_t size_shown;
+ size_t size_results;
+ size_t size_plains;
FILE *combs_fp;
comb_t *combs_buf;
void *hooks_buf;
- pw_cache_t *pw_caches;
-
pw_t *pws_buf;
uint pws_cnt;
- u64 pw_cnt;
u64 words_off;
u64 words_done;
uint innerloop_pos;
uint innerloop_left;
+ uint exec_pos;
+ double exec_ms[EXEC_CACHE];
+
+ // this is "current" speed
+
uint speed_pos;
u64 speed_cnt[SPEED_CACHE];
- float speed_ms[SPEED_CACHE];
-
- hc_timer_t speed_rec[SPEED_CACHE];
+ double speed_ms[SPEED_CACHE];
hc_timer_t timer_speed;
char *device_version;
char *driver_version;
+ bool opencl_v12;
+
cl_uint vendor_id;
cl_kernel kernel1;
cl_kernel kernel_mp_l;
cl_kernel kernel_mp_r;
cl_kernel kernel_amp;
- cl_kernel kernel_tb;
cl_kernel kernel_tm;
cl_kernel kernel_weak;
void *kernel_params_mp_r[PARAMCNT];
void *kernel_params_mp_l[PARAMCNT];
void *kernel_params_amp[PARAMCNT];
- void *kernel_params_tb[PARAMCNT];
void *kernel_params_tm[PARAMCNT];
u32 kernel_params_buf32[PARAMCNT];
hc_device_param_t *devices_param;
- uint kernel_blocks_all;
+ /**
+ * workload specific
+ */
+
+ uint kernel_power_all;
+ float kernel_power_div;
/**
* attack specific
int rule_len_l;
int rule_len_r;
+ /**
+ * opencl library stuff
+ */
+
+ void *ocl;
+
/**
* hardware watchdog
*/
#ifdef HAVE_HWMON
- HM_LIB hm_dll_nv;
- HM_LIB hm_dll_amd;
+ void *hm_nv;
+ void *hm_amd;
hm_attrs_t hm_device[DEVICES_MAX];
#endif
uint quiet;
uint force;
uint benchmark;
+ uint benchmark_repeats;
uint runtime;
uint remove;
uint remove_timer;
uint hex_wordlist;
uint pw_min;
uint pw_max;
- float kernel_blocks_div;
- uint kernel_accel;
- uint kernel_loops;
uint powertune_enable;
uint scrypt_tmto;
uint segment_size;
char *truecrypt_keyfiles;
+ uint workload_profile;
uint hash_mode;
uint hash_type;
hc_timer_t timer_running; // timer on current dict
hc_timer_t timer_paused; // timer on current dict
- float ms_paused; // timer on current dict
+ double ms_paused; // timer on current dict
/**
* hash_info and username