Added option --stdout to print candidates instead of trying to crack a hash
[hashcat.git] / include / types.h
index e262b46..2135f1f 100644 (file)
@@ -64,6 +64,10 @@ typedef struct
   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;
 
@@ -127,11 +131,44 @@ typedef struct
 
 } 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];
   uint data_buf[112];
   uint keyfile_buf[16];
+  uint signature;
 
 } tc_t;
 
@@ -220,6 +257,38 @@ typedef struct
 
 } oldoffice34_t;
 
+typedef struct
+{
+  u32 salt_buf[128];
+  u32 salt_len;
+
+  u32 pc_digest[5];
+  u32 pc_offset;
+
+} pstoken_t;
+
+typedef struct
+{
+  u32 type;
+  u32 mode;
+  u32 magic;
+  u32 salt_len;
+  u32 salt_buf[4];
+  u32 verify_bytes;
+  u32 compress_length;
+  u32 data_len;
+  u32 data_buf[2048];
+  u32 auth_len;
+  u32 auth_buf[4];
+
+} zip2_t;
+
+typedef struct
+{
+  uint salt_buf[32];
+
+} win8phone_t;
+
 typedef struct
 {
   uint P[256];
@@ -578,6 +647,20 @@ typedef struct
 
 } seven_zip_t;
 
+typedef struct
+{
+  u32 KEK[4];
+  u32 lsb[4];
+  u32 cipher[4];
+
+} axcrypt_tmp_t;
+
+typedef struct
+{
+  u32 tmp_digest[8];
+
+} keepass_tmp_t;
+
 typedef struct
 {
   u32  random[2];
@@ -690,25 +773,13 @@ typedef struct
 
 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;
 
@@ -732,18 +803,10 @@ typedef struct
 
 } 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;
@@ -801,6 +864,9 @@ typedef struct
 
 typedef struct
 {
+  uint salt_pos;
+  uint digest_pos;
+  uint hash_pos;
   uint gidvid;
   uint il_pos;
 
@@ -874,6 +940,7 @@ struct __hc_device_param
   u64     device_maxmem_alloc;
   u64     device_global_mem;
   u32     device_maxclock_frequency;
+  size_t  device_maxworkgroup_size;
 
   uint    vector_width;
 
@@ -885,39 +952,34 @@ struct __hc_device_param
   uint    kernel_accel_min;
   uint    kernel_accel_max;
   uint    kernel_power;
-  uint    kernel_power_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 *);
+  uint    hardware_power;
+
+  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   *result;
-
   uint    outerloop_pos;
   uint    outerloop_left;
 
@@ -927,24 +989,32 @@ struct __hc_device_param
   uint    exec_pos;
   double  exec_ms[EXEC_CACHE];
 
+  // workaround cpu spinning
+
+  double  exec_us_prev1[EXPECTED_ITERATIONS];
+  double  exec_us_prev2[EXPECTED_ITERATIONS];
+  double  exec_us_prev3[EXPECTED_ITERATIONS];
+
+  // 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;
 
   // device specific attributes starting
 
   char   *device_name;
+  char   *device_vendor;
   char   *device_name_chksum;
   char   *device_version;
   char   *driver_version;
 
   bool    opencl_v12;
 
-  cl_uint vendor_id;
+  cl_uint device_vendor_id;
+  cl_uint platform_vendor_id;
 
   cl_kernel  kernel1;
   cl_kernel  kernel12;
@@ -955,16 +1025,15 @@ struct __hc_device_param
   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;
+  cl_kernel  kernel_memset;
 
   cl_context context;
 
   cl_program program;
   cl_program program_mp;
   cl_program program_amp;
-  cl_program program_weak;
 
   cl_command_queue command_queue;
 
@@ -1005,8 +1074,8 @@ struct __hc_device_param
   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];
+  void   *kernel_params_memset[PARAMCNT];
 
   u32     kernel_params_buf32[PARAMCNT];
 
@@ -1020,6 +1089,7 @@ struct __hc_device_param
   u64     kernel_params_mp_l_buf64[PARAMCNT];
 
   u32     kernel_params_amp_buf32[PARAMCNT];
+  u32     kernel_params_memset_buf32[PARAMCNT];
 };
 
 typedef struct __hc_device_param hc_device_param_t;
@@ -1027,23 +1097,14 @@ typedef struct __hc_device_param hc_device_param_t;
 #ifdef HAVE_HWMON
 typedef struct
 {
-  union
-  {
-    #ifdef HAVE_ADL
-    HM_ADAPTER_AMD amd;
-    #endif
+  HM_ADAPTER_ADL   adl;
+  HM_ADAPTER_NVML  nvml;
+  HM_ADAPTER_NVAPI nvapi;
 
-    #if defined(HAVE_NVML) || defined(HAVE_NVAPI)
-    HM_ADAPTER_NV  nv;
-    #endif
+  int od_version;
 
-  } adapter_index;
-
-  int     od_version;
-  int     fan_supported;
-
-  // int     busid; // used for CL_DEVICE_TOPOLOGY_AMD but broken for dual GPUs
-  // int     devid; // used for CL_DEVICE_TOPOLOGY_AMD but broken for dual GPUs
+  int fan_get_supported;
+  int fan_set_supported;
 
 } hm_attrs_t;
 #endif // HAVE_HWMON
@@ -1064,8 +1125,9 @@ typedef struct
    * workload specific
    */
 
+  uint    hardware_power_all;
   uint    kernel_power_all;
-  float   kernel_power_div;
+  u64     kernel_power_final; // we save that so that all divisions are done from the same base
 
   /**
    * attack specific
@@ -1110,8 +1172,9 @@ typedef struct
    */
 
   #ifdef HAVE_HWMON
-  void   *hm_nv;
-  void   *hm_amd;
+  void      *hm_adl;
+  void      *hm_nvml;
+  void      *hm_nvapi;
   hm_attrs_t hm_device[DEVICES_MAX];
   #endif
 
@@ -1185,11 +1248,10 @@ typedef struct
   uint    restore_disable;
   uint    status;
   uint    status_timer;
-  uint    status_automat;
+  uint    machine_readable;
   uint    quiet;
   uint    force;
   uint    benchmark;
-  uint    benchmark_repeats;
   uint    runtime;
   uint    remove;
   uint    remove_timer;
@@ -1204,6 +1266,8 @@ typedef struct
   uint    scrypt_tmto;
   uint    segment_size;
   char   *truecrypt_keyfiles;
+  char   *veracrypt_keyfiles;
+  uint    veracrypt_pim;
   uint    workload_profile;
 
   uint    hash_mode;
@@ -1265,7 +1329,7 @@ typedef struct
   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
@@ -1283,3 +1347,4 @@ typedef struct
 extern hc_global_data_t data;
 
 #endif
+