/**
* Authors.....: Jens Steube <jens.steube@gmail.com>
* Gabriele Gristina <matrix@hashcat.net>
+ * magnum <john.magnum@hushmail.com>
*
* License.....: MIT
*/
#ifndef SHARED_H
#define SHARED_H
-#include <common.h>
-#include <constants.h>
+#include "common.h"
+#include "inc_hash_constants.h"
/**
* thread management
#define hc_thread_mutex_unlock(m) pthread_mutex_unlock (&m)
#define hc_thread_mutex_init(m) pthread_mutex_init (&m, NULL)
#define hc_thread_mutex_delete(m) pthread_mutex_destroy (&m)
+#endif
+
+#ifdef OSX
+typedef struct cpu_set
+{
+ uint32_t count;
+} cpu_set_t;
+
+static inline void CPU_ZERO (cpu_set_t *cs) { cs->count = 0; }
+static inline void CPU_SET (int num, cpu_set_t *cs) { cs->count |= (1 << num); }
+static inline int CPU_ISSET (int num, cpu_set_t *cs) { return (cs->count & (1 << num)); }
#endif
/**
#define hc_dlsym dlsym
#endif
+#define HC_LOAD_FUNC2(ptr,name,type,var,libname,noerr) \
+ ptr->name = (type) hc_dlsym (ptr->var, #name); \
+ if (noerr != -1) { \
+ if (!ptr->name) { \
+ if (noerr == 1) { \
+ log_error ("ERROR: %s is missing from %s shared library.", #name, #libname); \
+ exit (-1); \
+ } else { \
+ log_info ("WARNING: %s is missing from %s shared library.", #name, #libname); \
+ return (-1); \
+ } \
+ } \
+ }
+
#define HC_LOAD_FUNC(ptr,name,type,libname,noerr) \
ptr->name = (type) hc_dlsym (ptr->lib, #name); \
- if (!ptr->name) { \
- if (noerr == 1) { \
- log_error ("ERROR: %s is missing from %s shared library.", #name, #libname); \
- exit (-1); \
- } else { \
- log_info ("WARNING: %s is missing from %s shared library.", #name, #libname); \
- return (-1); \
+ if (noerr != -1) { \
+ if (!ptr->name) { \
+ if (noerr == 1) { \
+ log_error ("ERROR: %s is missing from %s shared library.", #name, #libname); \
+ exit (-1); \
+ } else { \
+ log_info ("WARNING: %s is missing from %s shared library.", #name, #libname); \
+ return (-1); \
+ } \
} \
}
#define hc_sleep(x) sleep ((x));
#endif
-#include <ext_OpenCL.h>
+#include "ext_OpenCL.h"
/**
* temperature management
*/
-#ifdef OSX
-#include <ext_smi.h>
-#include <ext_dummy.h>
-#elif _WIN
-#include <ext_ADL.h>
-#include <ext_nvapi.h>
-#else
-#include <ext_ADL.h>
-#include <ext_nvml.h>
-#endif
+#include "ext_ADL.h"
+#include "ext_nvapi.h"
+#include "ext_nvml.h"
+#include "ext_xnvctrl.h"
/**
* shared stuff
*/
-#define ETC_MAX (60 * 60 * 24 * 365 * 10)
+#define ETC_MAX (60 * 60 * 24 * 365 * 10)
-#define DEVICES_MAX 128
+#define DEVICES_MAX 128
-#define CL_PLATFORMS_MAX 16
+#define CL_PLATFORMS_MAX 16
-#define CL_VENDOR_NV "NVIDIA Corporation"
-#define CL_VENDOR_AMD "Advanced Micro Devices, Inc."
-#define CL_VENDOR_APPLE "Apple"
-#define CL_VENDOR_POCL "The pocl project"
+#define CL_VENDOR_AMD "Advanced Micro Devices, Inc."
+#define CL_VENDOR_AMD_USE_INTEL "GenuineIntel"
+#define CL_VENDOR_APPLE "Apple"
+#define CL_VENDOR_INTEL_BEIGNET "Intel"
+#define CL_VENDOR_INTEL_SDK "Intel(R) Corporation"
+#define CL_VENDOR_MESA "Mesa"
+#define CL_VENDOR_NV "NVIDIA Corporation"
+#define CL_VENDOR_POCL "The pocl project"
-#define VENDOR_ID_AMD 4098
-#define VENDOR_ID_NV 4318
-#define VENDOR_ID_APPLE 16925952
-#define VENDOR_ID_GENERIC 9999
+#define VENDOR_ID_AMD (1 << 0)
+#define VENDOR_ID_APPLE (1 << 1)
+#define VENDOR_ID_INTEL_BEIGNET (1 << 2)
+#define VENDOR_ID_INTEL_SDK (1 << 3)
+#define VENDOR_ID_MESA (1 << 4)
+#define VENDOR_ID_NV (1 << 5)
+#define VENDOR_ID_POCL (1 << 6)
+#define VENDOR_ID_AMD_USE_INTEL (1 << 7)
+#define VENDOR_ID_GENERIC (1 << 31)
-#define BLOCK_SIZE 64
+#define BLOCK_SIZE 64
-#define CHARSIZ 0x100
-#define INFOSZ CHARSIZ
+#define CHARSIZ 0x100
+#define INFOSZ CHARSIZ
-#define SP_HCSTAT "hashcat.hcstat"
-#define SP_PW_MIN 2
-#define SP_PW_MAX 64
-#define SP_ROOT_CNT (SP_PW_MAX * CHARSIZ)
-#define SP_MARKOV_CNT (SP_PW_MAX * CHARSIZ * CHARSIZ)
+#define SP_HCSTAT "hashcat.hcstat"
+#define SP_PW_MIN 2
+#define SP_PW_MAX 64
+#define SP_ROOT_CNT (SP_PW_MAX * CHARSIZ)
+#define SP_MARKOV_CNT (SP_PW_MAX * CHARSIZ * CHARSIZ)
-#define INDUCT_DIR "induct"
-#define OUTFILES_DIR "outfiles"
+#define TUNING_DB_FILE "hashcat.hctune"
-#define LOOPBACK_FILE "hashcat.loopback"
+#define INDUCT_DIR "induct"
+#define OUTFILES_DIR "outfiles"
+
+#define LOOPBACK_FILE "hashcat.loopback"
+
+#define DICTSTAT_FILENAME "hashcat.dictstat"
+#define POTFILE_FILENAME "hashcat.pot"
/**
* types
*/
#ifdef _WIN
-typedef LARGE_INTEGER hc_timer_t;
-typedef HANDLE hc_thread_t;
-typedef CRITICAL_SECTION hc_thread_mutex_t;
+typedef LARGE_INTEGER hc_timer_t;
+typedef HANDLE hc_thread_t;
+typedef CRITICAL_SECTION hc_thread_mutex_t;
#elif _POSIX
-typedef struct timeval hc_timer_t;
-typedef pthread_t hc_thread_t;
-typedef pthread_mutex_t hc_thread_mutex_t;
+typedef struct timeval hc_timer_t;
+typedef pthread_t hc_thread_t;
+typedef pthread_mutex_t hc_thread_mutex_t;
#endif
-#include <types.h>
+#include "types.h"
#include "rp_cpu.h"
-#include "rp_kernel.h"
+#include "inc_rp.h"
/**
* valid project specific global stuff
extern hc_thread_mutex_t mux_display;
-/**
- * password lengths supported
- */
-
-#define PW_LENGTH_MIN_0 0
-#define PW_LENGTH_MAX_0 55
-#define PW_LENGTH_MIN_400 0
-#define PW_LENGTH_MAX_400 40
-#define PW_LENGTH_MIN_500 0
-#define PW_LENGTH_MAX_500 15
-#define PW_LENGTH_MIN_1600 0
-#define PW_LENGTH_MAX_1600 15
-#define PW_LENGTH_MIN_1800 0
-#define PW_LENGTH_MAX_1800 15
-#define PW_LENGTH_MIN_2500 0
-#define PW_LENGTH_MAX_2500 64
-#define PW_LENGTH_MIN_6300 0
-#define PW_LENGTH_MAX_6300 15
-#define PW_LENGTH_MIN_7400 0
-#define PW_LENGTH_MAX_7400 15
-
-/**
- * device accel macro
- */
-
-#ifdef OSX
-#define KERNEL_ACCEL_1800 1
-#define KERNEL_ACCEL_2500 2
-#define KERNEL_ACCEL_5000 16
-#define KERNEL_ACCEL_6100 1
-#define KERNEL_ACCEL_6211 2
-#define KERNEL_ACCEL_6231 1
-#define KERNEL_ACCEL_6241 4
-#define KERNEL_ACCEL_6800 2
-#define KERNEL_ACCEL_7100 1
-#define KERNEL_ACCEL_7200 1
-#define KERNEL_ACCEL_7900 1
-#define KERNEL_ACCEL_8200 1
-#define KERNEL_ACCEL_8700 2
-#define KERNEL_ACCEL_9100 4
-#define KERNEL_ACCEL_9200 1
-#define KERNEL_ACCEL_9300 1
-#define KERNEL_ACCEL_9400 1
-#define KERNEL_ACCEL_9500 1
-#define KERNEL_ACCEL_9600 1
-#define KERNEL_ACCEL_10000 1
-#define KERNEL_ACCEL_10500 4
-#define KERNEL_ACCEL_11300 1
-#define KERNEL_ACCEL_11600 1
-#define KERNEL_ACCEL_11700 1
-#define KERNEL_ACCEL_11800 1
-#define KERNEL_ACCEL_12200 1
-#define KERNEL_ACCEL_12400 1
-#define KERNEL_ACCEL_12500 1
-#define KERNEL_ACCEL_13000 1
-#else
-#define KERNEL_ACCEL_1800 2
-#define KERNEL_ACCEL_2500 8
-#define KERNEL_ACCEL_5000 64
-#define KERNEL_ACCEL_6100 8
-#define KERNEL_ACCEL_6211 16
-#define KERNEL_ACCEL_6231 4
-#define KERNEL_ACCEL_6241 32
-#define KERNEL_ACCEL_6800 8
-#define KERNEL_ACCEL_7100 2
-#define KERNEL_ACCEL_7200 2
-#define KERNEL_ACCEL_7900 2
-#define KERNEL_ACCEL_8200 2
-#define KERNEL_ACCEL_8700 8
-#define KERNEL_ACCEL_9100 8
-#define KERNEL_ACCEL_9200 2
-#define KERNEL_ACCEL_9300 2
-#define KERNEL_ACCEL_9400 8
-#define KERNEL_ACCEL_9500 8
-#define KERNEL_ACCEL_9600 2
-#define KERNEL_ACCEL_10000 2
-#define KERNEL_ACCEL_10500 64
-#define KERNEL_ACCEL_11300 2
-#define KERNEL_ACCEL_11600 2
-#define KERNEL_ACCEL_11700 4
-#define KERNEL_ACCEL_11800 4
-#define KERNEL_ACCEL_12200 2
-#define KERNEL_ACCEL_12400 64
-#define KERNEL_ACCEL_12500 8
-#define KERNEL_ACCEL_13000 8
-#endif // OSX
-
-#define KERNEL_ACCEL_0 128
-#define KERNEL_ACCEL_10 128
-#define KERNEL_ACCEL_11 128
-#define KERNEL_ACCEL_12 128
-#define KERNEL_ACCEL_20 64
-#define KERNEL_ACCEL_21 64
-#define KERNEL_ACCEL_22 64
-#define KERNEL_ACCEL_23 64
-#define KERNEL_ACCEL_30 128
-#define KERNEL_ACCEL_40 64
-#define KERNEL_ACCEL_50 64
-#define KERNEL_ACCEL_60 64
-#define KERNEL_ACCEL_100 64
-#define KERNEL_ACCEL_101 64
-#define KERNEL_ACCEL_110 64
-#define KERNEL_ACCEL_111 64
-#define KERNEL_ACCEL_112 64
-#define KERNEL_ACCEL_120 64
-#define KERNEL_ACCEL_121 64
-#define KERNEL_ACCEL_122 64
-#define KERNEL_ACCEL_124 64
-#define KERNEL_ACCEL_130 64
-#define KERNEL_ACCEL_131 64
-#define KERNEL_ACCEL_132 64
-#define KERNEL_ACCEL_133 64
-#define KERNEL_ACCEL_140 64
-#define KERNEL_ACCEL_141 64
-#define KERNEL_ACCEL_150 64
-#define KERNEL_ACCEL_160 64
-#define KERNEL_ACCEL_190 64
-#define KERNEL_ACCEL_200 64
-#define KERNEL_ACCEL_300 64
-#define KERNEL_ACCEL_400 8
-#define KERNEL_ACCEL_500 8
-#define KERNEL_ACCEL_501 8
-#define KERNEL_ACCEL_900 128
-#define KERNEL_ACCEL_910 128
-#define KERNEL_ACCEL_1000 128
-#define KERNEL_ACCEL_1100 64
-#define KERNEL_ACCEL_1400 64
-#define KERNEL_ACCEL_1410 64
-#define KERNEL_ACCEL_1420 64
-#define KERNEL_ACCEL_1421 64
-#define KERNEL_ACCEL_1430 64
-#define KERNEL_ACCEL_1440 64
-#define KERNEL_ACCEL_1441 64
-#define KERNEL_ACCEL_1450 32
-#define KERNEL_ACCEL_1460 32
-#define KERNEL_ACCEL_1500 16
-#define KERNEL_ACCEL_1600 8
-#define KERNEL_ACCEL_1700 64
-#define KERNEL_ACCEL_1710 64
-#define KERNEL_ACCEL_1711 64
-#define KERNEL_ACCEL_1720 64
-#define KERNEL_ACCEL_1722 64
-#define KERNEL_ACCEL_1730 64
-#define KERNEL_ACCEL_1731 64
-#define KERNEL_ACCEL_1740 64
-#define KERNEL_ACCEL_1750 32
-#define KERNEL_ACCEL_1760 32
-#define KERNEL_ACCEL_2100 8
-#define KERNEL_ACCEL_2400 64
-#define KERNEL_ACCEL_2410 64
-#define KERNEL_ACCEL_2600 64
-#define KERNEL_ACCEL_2611 64
-#define KERNEL_ACCEL_2612 64
-#define KERNEL_ACCEL_2711 64
-#define KERNEL_ACCEL_2811 64
-#define KERNEL_ACCEL_3000 128
-#define KERNEL_ACCEL_3100 16
-#define KERNEL_ACCEL_3200 2
-#define KERNEL_ACCEL_3710 64
-#define KERNEL_ACCEL_3711 64
-#define KERNEL_ACCEL_3800 128
-#define KERNEL_ACCEL_4300 64
-#define KERNEL_ACCEL_4400 64
-#define KERNEL_ACCEL_4500 64
-#define KERNEL_ACCEL_4700 64
-#define KERNEL_ACCEL_4800 128
-#define KERNEL_ACCEL_4900 64
-#define KERNEL_ACCEL_5100 64
-#define KERNEL_ACCEL_5200 8
-#define KERNEL_ACCEL_5300 32
-#define KERNEL_ACCEL_5400 32
-#define KERNEL_ACCEL_5500 64
-#define KERNEL_ACCEL_5600 64
-#define KERNEL_ACCEL_5700 64
-#define KERNEL_ACCEL_5800 8
-#define KERNEL_ACCEL_6000 64
-#define KERNEL_ACCEL_6212 8
-#define KERNEL_ACCEL_6213 8
-#define KERNEL_ACCEL_6221 4
-#define KERNEL_ACCEL_6222 4
-#define KERNEL_ACCEL_6223 4
-#define KERNEL_ACCEL_6232 4
-#define KERNEL_ACCEL_6233 4
-#define KERNEL_ACCEL_6242 16
-#define KERNEL_ACCEL_6243 16
-#define KERNEL_ACCEL_6300 8
-#define KERNEL_ACCEL_6400 8
-#define KERNEL_ACCEL_6500 8
-#define KERNEL_ACCEL_6600 8
-#define KERNEL_ACCEL_6700 8
-#define KERNEL_ACCEL_6900 16
-#define KERNEL_ACCEL_7300 64
-#define KERNEL_ACCEL_7400 2
-#define KERNEL_ACCEL_7500 8
-#define KERNEL_ACCEL_7600 64
-#define KERNEL_ACCEL_7700 16
-#define KERNEL_ACCEL_7800 8
-#define KERNEL_ACCEL_8000 8
-#define KERNEL_ACCEL_8100 64
-#define KERNEL_ACCEL_8300 64
-#define KERNEL_ACCEL_8400 64
-#define KERNEL_ACCEL_8500 64
-#define KERNEL_ACCEL_8600 8
-#define KERNEL_ACCEL_8800 8
-#define KERNEL_ACCEL_8900 16
-#define KERNEL_ACCEL_9000 2
-#define KERNEL_ACCEL_9700 8
-#define KERNEL_ACCEL_9710 8
-#define KERNEL_ACCEL_9720 8
-#define KERNEL_ACCEL_9800 8
-#define KERNEL_ACCEL_9810 8
-#define KERNEL_ACCEL_9820 8
-#define KERNEL_ACCEL_9900 64
-#define KERNEL_ACCEL_10100 128
-#define KERNEL_ACCEL_10200 64
-#define KERNEL_ACCEL_10300 8
-#define KERNEL_ACCEL_10400 8
-#define KERNEL_ACCEL_10410 8
-#define KERNEL_ACCEL_10420 8
-#define KERNEL_ACCEL_10600 64
-#define KERNEL_ACCEL_10700 1
-#define KERNEL_ACCEL_10800 64
-#define KERNEL_ACCEL_10900 2
-#define KERNEL_ACCEL_11000 64
-#define KERNEL_ACCEL_11100 64
-#define KERNEL_ACCEL_11200 64
-#define KERNEL_ACCEL_11400 8
-#define KERNEL_ACCEL_11500 128
-#define KERNEL_ACCEL_11900 2
-#define KERNEL_ACCEL_12000 2
-#define KERNEL_ACCEL_12100 2
-#define KERNEL_ACCEL_12300 2
-#define KERNEL_ACCEL_12600 32
-#define KERNEL_ACCEL_12700 64
-#define KERNEL_ACCEL_12800 64
-#define KERNEL_ACCEL_12900 8
-
-/**
- * device loops macro
- */
-
-#ifdef OSX
-#define KERNEL_LOOPS_0 2
-#define KERNEL_LOOPS_10 2
-#define KERNEL_LOOPS_11 2
-#define KERNEL_LOOPS_12 2
-#define KERNEL_LOOPS_20 2
-#define KERNEL_LOOPS_21 2
-#define KERNEL_LOOPS_22 2
-#define KERNEL_LOOPS_23 2
-#define KERNEL_LOOPS_30 2
-#define KERNEL_LOOPS_40 2
-#define KERNEL_LOOPS_50 2
-#define KERNEL_LOOPS_60 2
-#define KERNEL_LOOPS_100 2
-#define KERNEL_LOOPS_101 2
-#define KERNEL_LOOPS_110 2
-#define KERNEL_LOOPS_111 2
-#define KERNEL_LOOPS_112 2
-#define KERNEL_LOOPS_120 2
-#define KERNEL_LOOPS_121 2
-#define KERNEL_LOOPS_122 2
-#define KERNEL_LOOPS_124 2
-#define KERNEL_LOOPS_130 2
-#define KERNEL_LOOPS_131 2
-#define KERNEL_LOOPS_132 2
-#define KERNEL_LOOPS_133 2
-#define KERNEL_LOOPS_140 2
-#define KERNEL_LOOPS_141 2
-#define KERNEL_LOOPS_150 2
-#define KERNEL_LOOPS_160 2
-#define KERNEL_LOOPS_190 2
-#define KERNEL_LOOPS_200 2
-#define KERNEL_LOOPS_300 2
-#define KERNEL_LOOPS_900 2
-#define KERNEL_LOOPS_1000 2
-#define KERNEL_LOOPS_1100 2
-#define KERNEL_LOOPS_1400 2
-#define KERNEL_LOOPS_1410 2
-#define KERNEL_LOOPS_1420 2
-#define KERNEL_LOOPS_1421 2
-#define KERNEL_LOOPS_1430 2
-#define KERNEL_LOOPS_1440 2
-#define KERNEL_LOOPS_1441 2
-#define KERNEL_LOOPS_1450 2
-#define KERNEL_LOOPS_1460 2
-#define KERNEL_LOOPS_1700 2
-#define KERNEL_LOOPS_1710 2
-#define KERNEL_LOOPS_1711 2
-#define KERNEL_LOOPS_1720 2
-#define KERNEL_LOOPS_1722 2
-#define KERNEL_LOOPS_1730 2
-#define KERNEL_LOOPS_1731 2
-#define KERNEL_LOOPS_1740 2
-#define KERNEL_LOOPS_1750 2
-#define KERNEL_LOOPS_1760 2
-#define KERNEL_LOOPS_2400 2
-#define KERNEL_LOOPS_2410 2
-#define KERNEL_LOOPS_2600 2
-#define KERNEL_LOOPS_2611 2
-#define KERNEL_LOOPS_2612 2
-#define KERNEL_LOOPS_2711 2
-#define KERNEL_LOOPS_2811 2
-#define KERNEL_LOOPS_3100 2
-#define KERNEL_LOOPS_3200 2
-#define KERNEL_LOOPS_3710 2
-#define KERNEL_LOOPS_3711 2
-#define KERNEL_LOOPS_3800 2
-#define KERNEL_LOOPS_4300 2
-#define KERNEL_LOOPS_4400 2
-#define KERNEL_LOOPS_4500 2
-#define KERNEL_LOOPS_4700 2
-#define KERNEL_LOOPS_4800 2
-#define KERNEL_LOOPS_4900 2
-#define KERNEL_LOOPS_5000 2
-#define KERNEL_LOOPS_5100 2
-#define KERNEL_LOOPS_5300 2
-#define KERNEL_LOOPS_5400 2
-#define KERNEL_LOOPS_5500 2
-#define KERNEL_LOOPS_5600 2
-#define KERNEL_LOOPS_5700 2
-#define KERNEL_LOOPS_6000 2
-#define KERNEL_LOOPS_6100 2
-#define KERNEL_LOOPS_6231 2
-#define KERNEL_LOOPS_6232 2
-#define KERNEL_LOOPS_6233 2
-#define KERNEL_LOOPS_6900 2
-#define KERNEL_LOOPS_7300 2
-#define KERNEL_LOOPS_7500 2
-#define KERNEL_LOOPS_7600 2
-#define KERNEL_LOOPS_7700 2
-#define KERNEL_LOOPS_7800 2
-#define KERNEL_LOOPS_8000 2
-#define KERNEL_LOOPS_8100 2
-#define KERNEL_LOOPS_8200 1
-#define KERNEL_LOOPS_8300 2
-#define KERNEL_LOOPS_8400 2
-#define KERNEL_LOOPS_8500 2
-#define KERNEL_LOOPS_8600 2
-#define KERNEL_LOOPS_8700 2
-#define KERNEL_LOOPS_9700 2
-#define KERNEL_LOOPS_9710 2
-#define KERNEL_LOOPS_9720 8
-#define KERNEL_LOOPS_9800 2
-#define KERNEL_LOOPS_9810 2
-#define KERNEL_LOOPS_9820 2
-#define KERNEL_LOOPS_9900 2
-#define KERNEL_LOOPS_10100 2
-#define KERNEL_LOOPS_10200 2
-#define KERNEL_LOOPS_10400 2
-#define KERNEL_LOOPS_10410 2
-#define KERNEL_LOOPS_10420 2
-#define KERNEL_LOOPS_10600 2
-#define KERNEL_LOOPS_10700 2
-#define KERNEL_LOOPS_10800 2
-#define KERNEL_LOOPS_11000 2
-#define KERNEL_LOOPS_11100 2
-#define KERNEL_LOOPS_11200 2
-#define KERNEL_LOOPS_11300 1
-#define KERNEL_LOOPS_11400 2
-#define KERNEL_LOOPS_11500 2
-#define KERNEL_LOOPS_11700 2
-#define KERNEL_LOOPS_11800 2
-#define KERNEL_LOOPS_12600 2
-#else
-#define KERNEL_LOOPS_0 256
-#define KERNEL_LOOPS_10 256
-#define KERNEL_LOOPS_11 256
-#define KERNEL_LOOPS_12 256
-#define KERNEL_LOOPS_20 256
-#define KERNEL_LOOPS_21 256
-#define KERNEL_LOOPS_22 256
-#define KERNEL_LOOPS_23 256
-#define KERNEL_LOOPS_30 256
-#define KERNEL_LOOPS_40 256
-#define KERNEL_LOOPS_50 64
-#define KERNEL_LOOPS_60 64
-#define KERNEL_LOOPS_100 128
-#define KERNEL_LOOPS_101 128
-#define KERNEL_LOOPS_110 128
-#define KERNEL_LOOPS_111 128
-#define KERNEL_LOOPS_112 128
-#define KERNEL_LOOPS_120 128
-#define KERNEL_LOOPS_121 128
-#define KERNEL_LOOPS_122 128
-#define KERNEL_LOOPS_124 128
-#define KERNEL_LOOPS_130 128
-#define KERNEL_LOOPS_131 128
-#define KERNEL_LOOPS_132 128
-#define KERNEL_LOOPS_133 128
-#define KERNEL_LOOPS_140 128
-#define KERNEL_LOOPS_141 128
-#define KERNEL_LOOPS_150 64
-#define KERNEL_LOOPS_160 64
-#define KERNEL_LOOPS_190 128
-#define KERNEL_LOOPS_200 128
-#define KERNEL_LOOPS_300 64
-#define KERNEL_LOOPS_900 256
-#define KERNEL_LOOPS_1000 256
-#define KERNEL_LOOPS_1100 128
-#define KERNEL_LOOPS_1400 64
-#define KERNEL_LOOPS_1410 64
-#define KERNEL_LOOPS_1420 64
-#define KERNEL_LOOPS_1421 64
-#define KERNEL_LOOPS_1430 64
-#define KERNEL_LOOPS_1440 64
-#define KERNEL_LOOPS_1441 64
-#define KERNEL_LOOPS_1450 32
-#define KERNEL_LOOPS_1460 32
-#define KERNEL_LOOPS_1700 32
-#define KERNEL_LOOPS_1710 32
-#define KERNEL_LOOPS_1711 32
-#define KERNEL_LOOPS_1720 32
-#define KERNEL_LOOPS_1722 32
-#define KERNEL_LOOPS_1730 32
-#define KERNEL_LOOPS_1731 32
-#define KERNEL_LOOPS_1740 32
-#define KERNEL_LOOPS_1750 16
-#define KERNEL_LOOPS_1760 16
-#define KERNEL_LOOPS_2400 256
-#define KERNEL_LOOPS_2410 256
-#define KERNEL_LOOPS_2600 128
-#define KERNEL_LOOPS_2611 128
-#define KERNEL_LOOPS_2612 128
-#define KERNEL_LOOPS_2711 64
-#define KERNEL_LOOPS_2811 64
-#define KERNEL_LOOPS_3100 16
-#define KERNEL_LOOPS_3200 16
-#define KERNEL_LOOPS_3710 128
-#define KERNEL_LOOPS_3711 128
-#define KERNEL_LOOPS_3800 256
-#define KERNEL_LOOPS_4300 128
-#define KERNEL_LOOPS_4400 128
-#define KERNEL_LOOPS_4500 128
-#define KERNEL_LOOPS_4700 128
-#define KERNEL_LOOPS_4800 256
-#define KERNEL_LOOPS_4900 128
-#define KERNEL_LOOPS_5000 64
-#define KERNEL_LOOPS_5100 256
-#define KERNEL_LOOPS_5300 32
-#define KERNEL_LOOPS_5400 32
-#define KERNEL_LOOPS_5500 128
-#define KERNEL_LOOPS_5600 64
-#define KERNEL_LOOPS_5700 64
-#define KERNEL_LOOPS_6000 64
-#define KERNEL_LOOPS_6100 64
-#define KERNEL_LOOPS_6231 200
-#define KERNEL_LOOPS_6232 200
-#define KERNEL_LOOPS_6233 200
-#define KERNEL_LOOPS_6900 64
-#define KERNEL_LOOPS_7300 64
-#define KERNEL_LOOPS_7500 16
-#define KERNEL_LOOPS_7600 128
-#define KERNEL_LOOPS_7700 128
-#define KERNEL_LOOPS_7800 64
-#define KERNEL_LOOPS_8000 64
-#define KERNEL_LOOPS_8100 128
-#define KERNEL_LOOPS_8200 200
-#define KERNEL_LOOPS_8300 64
-#define KERNEL_LOOPS_8400 64
-#define KERNEL_LOOPS_8500 16
-#define KERNEL_LOOPS_8600 16
-#define KERNEL_LOOPS_8700 16
-#define KERNEL_LOOPS_9700 200
-#define KERNEL_LOOPS_9710 200
-#define KERNEL_LOOPS_9720 200
-#define KERNEL_LOOPS_9800 200
-#define KERNEL_LOOPS_9820 200
-#define KERNEL_LOOPS_9810 200
-#define KERNEL_LOOPS_9900 256
-#define KERNEL_LOOPS_10100 512
-#define KERNEL_LOOPS_10200 64
-#define KERNEL_LOOPS_10400 256
-#define KERNEL_LOOPS_10410 256
-#define KERNEL_LOOPS_10420 256
-#define KERNEL_LOOPS_10600 64
-#define KERNEL_LOOPS_10700 64
-#define KERNEL_LOOPS_10800 32
-#define KERNEL_LOOPS_11000 256
-#define KERNEL_LOOPS_11100 128
-#define KERNEL_LOOPS_11200 128
-#define KERNEL_LOOPS_11300 256
-#define KERNEL_LOOPS_11400 128
-#define KERNEL_LOOPS_11500 256
-#define KERNEL_LOOPS_11700 64
-#define KERNEL_LOOPS_11800 64
-#define KERNEL_LOOPS_12600 32
-#endif // OSX
-
-#define KERNEL_LOOPS_400 256
-#define KERNEL_LOOPS_500 256
-#define KERNEL_LOOPS_501 256
-#define KERNEL_LOOPS_910 256
-#define KERNEL_LOOPS_1500 256
-#define KERNEL_LOOPS_1600 256
-#define KERNEL_LOOPS_1800 16
-#define KERNEL_LOOPS_2100 256
-#define KERNEL_LOOPS_2500 256
-#define KERNEL_LOOPS_3000 256
-#define KERNEL_LOOPS_5200 256
-#define KERNEL_LOOPS_5800 256
-#define KERNEL_LOOPS_6211 200
-#define KERNEL_LOOPS_6212 200
-#define KERNEL_LOOPS_6213 200
-#define KERNEL_LOOPS_6221 200
-#define KERNEL_LOOPS_6222 200
-#define KERNEL_LOOPS_6223 200
-#define KERNEL_LOOPS_6241 200
-#define KERNEL_LOOPS_6242 200
-#define KERNEL_LOOPS_6243 200
-#define KERNEL_LOOPS_6300 256
-#define KERNEL_LOOPS_6400 256
-#define KERNEL_LOOPS_6500 256
-#define KERNEL_LOOPS_6600 200
-#define KERNEL_LOOPS_6700 256
-#define KERNEL_LOOPS_6800 200
-#define KERNEL_LOOPS_7100 256
-#define KERNEL_LOOPS_7200 200
-#define KERNEL_LOOPS_7400 200
-#define KERNEL_LOOPS_7900 256
-#define KERNEL_LOOPS_8800 256
-#define KERNEL_LOOPS_8900 1
-#define KERNEL_LOOPS_9000 16
-#define KERNEL_LOOPS_9100 256
-#define KERNEL_LOOPS_9200 200
-#define KERNEL_LOOPS_9300 1
-#define KERNEL_LOOPS_9400 200
-#define KERNEL_LOOPS_9500 200
-#define KERNEL_LOOPS_9600 200
-#define KERNEL_LOOPS_10000 200
-#define KERNEL_LOOPS_10300 128
-#define KERNEL_LOOPS_10500 64
-#define KERNEL_LOOPS_10900 200
-#define KERNEL_LOOPS_11600 512
-#define KERNEL_LOOPS_11900 200
-#define KERNEL_LOOPS_12000 200
-#define KERNEL_LOOPS_12100 200
-#define KERNEL_LOOPS_12200 256
-#define KERNEL_LOOPS_12300 256
-#define KERNEL_LOOPS_12400 256
-#define KERNEL_LOOPS_12500 256
-#define KERNEL_LOOPS_12700 10
-#define KERNEL_LOOPS_12800 100
-#define KERNEL_LOOPS_12900 64
-#define KERNEL_LOOPS_13000 64
-
/**
* Strings
*/
#define HT_00140 "sha1($salt.unicode($pass))"
#define HT_00150 "HMAC-SHA1 (key = $pass)"
#define HT_00160 "HMAC-SHA1 (key = $salt)"
-#define HT_00190 "sha1(LinkedIn)"
#define HT_00200 "MySQL323"
#define HT_00300 "MySQL4.1/MySQL5"
#define HT_00400 "phpass, MD5(Wordpress), MD5(phpBB3), MD5(Joomla)"
#define HT_12800 "MS-AzureSync PBKDF2-HMAC-SHA256"
#define HT_12900 "Android FDE (Samsung DEK)"
#define HT_13000 "RAR5"
+#define HT_13100 "Kerberos 5 TGS-REP etype 23"
+#define HT_13200 "AxCrypt"
+#define HT_13300 "AxCrypt in memory SHA1"
+#define HT_13400 "Keepass 1 (AES/Twofish) and Keepass 2 (AES)"
+#define HT_13500 "PeopleSoft PS_TOKEN"
+#define HT_13600 "WinZip"
+#define HT_13800 "Windows 8+ phone PIN/Password"
#define HT_00011 "Joomla < 2.5.18"
#define HT_00012 "PostgreSQL"
#define HT_00121 "SMF > v1.1"
#define HT_00122 "OSX v10.4, v10.5, v10.6"
#define HT_00124 "Django (SHA-1)"
+#define HT_00125 "ArubaOS"
#define HT_00131 "MSSQL(2000)"
#define HT_00132 "MSSQL(2005)"
#define HT_00133 "PeopleSoft"
#define HT_02612 "PHPS"
#define HT_02711 "vBulletin > v3.8.5"
#define HT_02811 "IPB2+, MyBB1.2+"
-#define HT_06211 "TrueCrypt 5.0+ PBKDF2-HMAC-RipeMD160 + XTS 512 bit"
-#define HT_06212 "TrueCrypt 5.0+ PBKDF2-HMAC-RipeMD160 + XTS 1024 bit"
-#define HT_06213 "TrueCrypt 5.0+ PBKDF2-HMAC-RipeMD160 + XTS 1536 bit"
-#define HT_06221 "TrueCrypt 5.0+ PBKDF2-HMAC-SHA512 + XTS 512 bit"
-#define HT_06222 "TrueCrypt 5.0+ PBKDF2-HMAC-SHA512 + XTS 1024 bit"
-#define HT_06223 "TrueCrypt 5.0+ PBKDF2-HMAC-SHA512 + XTS 1536 bit"
-#define HT_06231 "TrueCrypt 5.0+ PBKDF2-HMAC-Whirlpool + XTS 512 bit"
-#define HT_06232 "TrueCrypt 5.0+ PBKDF2-HMAC-Whirlpool + XTS 1024 bit"
-#define HT_06233 "TrueCrypt 5.0+ PBKDF2-HMAC-Whirlpool + XTS 1536 bit"
-#define HT_06241 "TrueCrypt 5.0+ PBKDF2-HMAC-RipeMD160 + XTS 512 bit + boot-mode"
-#define HT_06242 "TrueCrypt 5.0+ PBKDF2-HMAC-RipeMD160 + XTS 1024 bit + boot-mode"
-#define HT_06243 "TrueCrypt 5.0+ PBKDF2-HMAC-RipeMD160 + XTS 1536 bit + boot-mode"
+#define HT_06211 "TrueCrypt PBKDF2-HMAC-RipeMD160 + XTS 512 bit"
+#define HT_06212 "TrueCrypt PBKDF2-HMAC-RipeMD160 + XTS 1024 bit"
+#define HT_06213 "TrueCrypt PBKDF2-HMAC-RipeMD160 + XTS 1536 bit"
+#define HT_06221 "TrueCrypt PBKDF2-HMAC-SHA512 + XTS 512 bit"
+#define HT_06222 "TrueCrypt PBKDF2-HMAC-SHA512 + XTS 1024 bit"
+#define HT_06223 "TrueCrypt PBKDF2-HMAC-SHA512 + XTS 1536 bit"
+#define HT_06231 "TrueCrypt PBKDF2-HMAC-Whirlpool + XTS 512 bit"
+#define HT_06232 "TrueCrypt PBKDF2-HMAC-Whirlpool + XTS 1024 bit"
+#define HT_06233 "TrueCrypt PBKDF2-HMAC-Whirlpool + XTS 1536 bit"
+#define HT_06241 "TrueCrypt PBKDF2-HMAC-RipeMD160 + XTS 512 bit + boot-mode"
+#define HT_06242 "TrueCrypt PBKDF2-HMAC-RipeMD160 + XTS 1024 bit + boot-mode"
+#define HT_06243 "TrueCrypt PBKDF2-HMAC-RipeMD160 + XTS 1536 bit + boot-mode"
+#define HT_13711 "VeraCrypt PBKDF2-HMAC-RipeMD160 + XTS 512 bit"
+#define HT_13712 "VeraCrypt PBKDF2-HMAC-RipeMD160 + XTS 1024 bit"
+#define HT_13713 "VeraCrypt PBKDF2-HMAC-RipeMD160 + XTS 1536 bit"
+#define HT_13721 "VeraCrypt PBKDF2-HMAC-SHA512 + XTS 512 bit"
+#define HT_13722 "VeraCrypt PBKDF2-HMAC-SHA512 + XTS 1024 bit"
+#define HT_13723 "VeraCrypt PBKDF2-HMAC-SHA512 + XTS 1536 bit"
+#define HT_13731 "VeraCrypt PBKDF2-HMAC-Whirlpool + XTS 512 bit"
+#define HT_13732 "VeraCrypt PBKDF2-HMAC-Whirlpool + XTS 1024 bit"
+#define HT_13733 "VeraCrypt PBKDF2-HMAC-Whirlpool + XTS 1536 bit"
+#define HT_13741 "VeraCrypt PBKDF2-HMAC-RipeMD160 + XTS 512 bit + boot-mode"
+#define HT_13742 "VeraCrypt PBKDF2-HMAC-RipeMD160 + XTS 1024 bit + boot-mode"
+#define HT_13743 "VeraCrypt PBKDF2-HMAC-RipeMD160 + XTS 1536 bit + boot-mode"
+#define HT_13751 "VeraCrypt PBKDF2-HMAC-SHA256 + XTS 512 bit"
+#define HT_13752 "VeraCrypt PBKDF2-HMAC-SHA256 + XTS 1024 bit"
+#define HT_13753 "VeraCrypt PBKDF2-HMAC-SHA256 + XTS 1536 bit"
+#define HT_13761 "VeraCrypt PBKDF2-HMAC-SHA256 + XTS 512 bit + boot-mode"
+#define HT_13762 "VeraCrypt PBKDF2-HMAC-SHA256 + XTS 1024 bit + boot-mode"
+#define HT_13763 "VeraCrypt PBKDF2-HMAC-SHA256 + XTS 1536 bit + boot-mode"
/**
* Outfile formats
#define DISPLAY_LEN_MAX_150 40 + 1 + 51
#define DISPLAY_LEN_MIN_150H 40 + 1 + 0
#define DISPLAY_LEN_MAX_150H 40 + 1 + 102
-#define DISPLAY_LEN_MIN_190 40
-#define DISPLAY_LEN_MAX_190 40
#define DISPLAY_LEN_MIN_200 16
#define DISPLAY_LEN_MAX_200 16
#define DISPLAY_LEN_MIN_300 40
#define DISPLAY_LEN_MAX_11100 10 + 32 + 1 + 8 + 1 + 32
#define DISPLAY_LEN_MIN_11200 9 + 40 + 1 + 40
#define DISPLAY_LEN_MAX_11200 9 + 40 + 1 + 40
-#define DISPLAY_LEN_MIN_11300 1 + 7 + 1 + 2 + 1 + 96 + 1 + 2 + 1 + 16 + 1 + 1 + 1 + 2 + 1 + 96 + 1 + 2 + 1 + 66
-#define DISPLAY_LEN_MAX_11300 1 + 7 + 1 + 2 + 1 + 96 + 1 + 2 + 1 + 16 + 1 + 6 + 1 + 2 + 1 + 96 + 1 + 2 + 1 + 66
+#define DISPLAY_LEN_MIN_11300 1 + 7 + 1 + 2 + 1 + 96 + 1 + 2 + 1 + 16 + 1 + 1 + 1 + 2 + 1 + 96 + 1 + 1 + 1 + 2
+#define DISPLAY_LEN_MAX_11300 1 + 7 + 1 + 2 + 1 + 96 + 1 + 2 + 1 + 16 + 1 + 6 + 1 + 2 + 1 + 96 + 1 + 3 + 1 + 512
#define DISPLAY_LEN_MIN_11400 6 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 3 + 1 + 32
#define DISPLAY_LEN_MAX_11400 6 + 512 + 1 + 512 + 1 + 116 + 1 + 116 + 1 + 246 + 1 + 245 + 1 + 246 + 1 + 245 + 1 + 50 + 1 + 50 + 1 + 50 + 1 + 50 + 1 + 3 + 1 + 32
#define DISPLAY_LEN_MIN_11500 8 + 1 + 8
#define DISPLAY_LEN_MAX_12900 64 + 64 + 32
#define DISPLAY_LEN_MIN_13000 1 + 4 + 1 + 2 + 1 + 32 + 1 + 2 + 1 + 32 + 1 + 1 + 1 + 16
#define DISPLAY_LEN_MAX_13000 1 + 4 + 1 + 2 + 1 + 32 + 1 + 2 + 1 + 32 + 1 + 1 + 1 + 16
+#define DISPLAY_LEN_MIN_13100 1 + 7 + 1 + 2 + 1 + 0 + 0 + 32 + 1 + 64
+#define DISPLAY_LEN_MAX_13100 1 + 7 + 1 + 2 + 1 + 2 + 512 + 1 + 32 + 1 + 20480
+#define DISPLAY_LEN_MIN_13200 1 + 7 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 1 + 48
+#define DISPLAY_LEN_MAX_13200 1 + 7 + 1 + 1 + 1 + 1 + 50 + 1 + 32 + 1 + 48 + 1 + 20480
+#define DISPLAY_LEN_MIN_13300 1 + 12 + 1 + 32
+#define DISPLAY_LEN_MAX_13300 1 + 12 + 1 + 40
+#define DISPLAY_LEN_MIN_13400 1 + 7 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 1 + 64 + 1 + 32 + 1 + 64 + 1 + 1 + 1 + 1
+#define DISPLAY_LEN_MAX_13400 1 + 7 + 1 + 1 + 10 + 1 + 3 + 1 + 64 + 1 + 64 + 1 + 32 + 1 + 64 + 1 + 4 + 1 + 600000 + 1 + 2 + 1 + 64
+#define DISPLAY_LEN_MIN_13500 40 + 1 + 32
+#define DISPLAY_LEN_MAX_13500 40 + 1 + 1024
+#define DISPLAY_LEN_MIN_13600 6 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 16 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 20 + 1 + 7
+#define DISPLAY_LEN_MAX_13600 6 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 1 + 4 + 1 + 4 + 1 + 8192 + 1 + 20 + 1 + 7
+#define DISPLAY_LEN_MIN_13800 64 + 1 + 256
+#define DISPLAY_LEN_MAX_13800 64 + 1 + 256
#define DISPLAY_LEN_MIN_11 32 + 1 + 16
#define DISPLAY_LEN_MAX_11 32 + 1 + 32
#define DISPLAY_LEN_MIN_21H 32 + 1 + 2
#define DISPLAY_LEN_MAX_21H 32 + 1 + 30
#define DISPLAY_LEN_MIN_22 30 + 1 + 1
-#define DISPLAY_LEN_MAX_22 30 + 1 + 15
+#define DISPLAY_LEN_MAX_22 30 + 1 + 28
#define DISPLAY_LEN_MIN_22H 30 + 1 + 2
-#define DISPLAY_LEN_MAX_22H 30 + 1 + 30
+#define DISPLAY_LEN_MAX_22H 30 + 1 + 56
#define DISPLAY_LEN_MIN_23 32 + 1 + 0
#define DISPLAY_LEN_MAX_23 32 + 1 + 23
#define DISPLAY_LEN_MIN_101 5 + 28
#define DISPLAY_LEN_MAX_122 8 + 40
#define DISPLAY_LEN_MIN_124 4 + 1 + 0 + 1 + 40
#define DISPLAY_LEN_MAX_124 4 + 1 + 32 + 1 + 40
+#define DISPLAY_LEN_MIN_125 10 + 40
+#define DISPLAY_LEN_MAX_125 10 + 40
#define DISPLAY_LEN_MIN_131 6 + 8 + 80
#define DISPLAY_LEN_MAX_131 6 + 8 + 80
#define DISPLAY_LEN_MIN_132 6 + 8 + 40
#define HASH_TYPE_ORACLET 47
#define HASH_TYPE_BSDICRYPT 48
#define HASH_TYPE_RAR3HP 49
+#define HASH_TYPE_KRB5TGS 50
+#define HASH_TYPE_STDOUT 51
#define KERN_TYPE_MD5 0
#define KERN_TYPE_MD5_PWSLT 10
#define KERN_TYPE_SHA1_SLTPWU 140
#define KERN_TYPE_HMACSHA1_PW 150
#define KERN_TYPE_HMACSHA1_SLT 160
-#define KERN_TYPE_SHA1_LINKEDIN 190
#define KERN_TYPE_MYSQL 200
#define KERN_TYPE_MYSQL41 300
#define KERN_TYPE_PHPASS 400
#define KERN_TYPE_HMACSHA512_PW 1750
#define KERN_TYPE_HMACSHA512_SLT 1760
#define KERN_TYPE_SHA512CRYPT 1800
+#define KERN_TYPE_STDOUT 2000
#define KERN_TYPE_DCC2 2100
#define KERN_TYPE_MD5PIX 2400
#define KERN_TYPE_MD5ASA 2410
#define KERN_TYPE_TCWHIRLPOOL_XTS512 6231
#define KERN_TYPE_TCWHIRLPOOL_XTS1024 6232
#define KERN_TYPE_TCWHIRLPOOL_XTS1536 6233
+#define KERN_TYPE_VCSHA256_XTS512 13751
+#define KERN_TYPE_VCSHA256_XTS1024 13752
+#define KERN_TYPE_VCSHA256_XTS1536 13753
#define KERN_TYPE_MD5AIX 6300
#define KERN_TYPE_SHA256AIX 6400
#define KERN_TYPE_SHA512AIX 6500
#define KERN_TYPE_MS_DRSR 12800
#define KERN_TYPE_ANDROIDFDE_SAMSUNG 12900
#define KERN_TYPE_RAR5 13000
+#define KERN_TYPE_KRB5TGS 13100
+#define KERN_TYPE_AXCRYPT 13200
+#define KERN_TYPE_SHA1_AXCRYPT 13300
+#define KERN_TYPE_KEEPASS 13400
+#define KERN_TYPE_PSTOKEN 13500
+#define KERN_TYPE_ZIP2 13600
+#define KERN_TYPE_WIN8PHONE 13800
/**
* signatures
#define SIGNATURE_MYWALLET "$blockchain$"
#define SIGNATURE_MS_DRSR "v1;PPH1_MD4"
#define SIGNATURE_RAR5 "$rar5$"
+#define SIGNATURE_KRB5TGS "$krb5tgs$23"
+#define SIGNATURE_AXCRYPT "$axcrypt$*1"
+#define SIGNATURE_AXCRYPT_SHA1 "$axcrypt_sha1"
+#define SIGNATURE_KEEPASS "$keepass$"
+#define SIGNATURE_ZIP2_START "$zip2$"
+#define SIGNATURE_ZIP2_STOP "$/zip2$"
/**
* Default iteration numbers
#define ROUNDS_ANDROIDPIN 1024
#define ROUNDS_TRUECRYPT_1K 1000
#define ROUNDS_TRUECRYPT_2K 2000
+#define ROUNDS_VERACRYPT_200000 200000
+#define ROUNDS_VERACRYPT_500000 500000
+#define ROUNDS_VERACRYPT_327661 327661
+#define ROUNDS_VERACRYPT_655331 655331
#define ROUNDS_SHA1AIX (1 << 6)
#define ROUNDS_SHA256AIX (1 << 6)
#define ROUNDS_SHA512AIX (1 << 6)
#define ROUNDS_MS_DRSR 100
#define ROUNDS_ANDROIDFDE_SAMSUNG 4096
#define ROUNDS_RAR5 (1 << 15)
+#define ROUNDS_AXCRYPT 10000
+#define ROUNDS_KEEPASS 6000
+#define ROUNDS_ZIP2 1000
+#define ROUNDS_STDOUT 0
/**
* salt types
#define OPTI_TYPE_SINGLE_SALT (1 << 12)
#define OPTI_TYPE_BRUTE_FORCE (1 << 13)
#define OPTI_TYPE_RAW_HASH (1 << 14)
-#define OPTI_TYPE_USES_BITS_8 (1 << 15)
-#define OPTI_TYPE_USES_BITS_16 (1 << 16)
-#define OPTI_TYPE_USES_BITS_32 (1 << 17)
-#define OPTI_TYPE_USES_BITS_64 (1 << 18)
+#define OPTI_TYPE_SLOW_HASH_SIMD (1 << 15)
+#define OPTI_TYPE_USES_BITS_8 (1 << 16)
+#define OPTI_TYPE_USES_BITS_16 (1 << 17)
+#define OPTI_TYPE_USES_BITS_32 (1 << 18)
+#define OPTI_TYPE_USES_BITS_64 (1 << 19)
#define OPTI_STR_ZERO_BYTE "Zero-Byte"
#define OPTI_STR_PRECOMPUTE_INIT "Precompute-Init"
#define OPTI_STR_SINGLE_SALT "Single-Salt"
#define OPTI_STR_BRUTE_FORCE "Brute-Force"
#define OPTI_STR_RAW_HASH "Raw-Hash"
+#define OPTI_STR_SLOW_HASH_SIMD "Slow-Hash-SIMD"
+#define OPTI_STR_USES_BITS_8 "Uses-8-Bit"
+#define OPTI_STR_USES_BITS_16 "Uses-16-Bit"
+#define OPTI_STR_USES_BITS_32 "Uses-32-Bit"
+#define OPTI_STR_USES_BITS_64 "Uses-64-Bit"
/**
* hash options
* digests
*/
-#define DGST_SIZE_0 0
#define DGST_SIZE_4_2 (2 * sizeof (uint)) // 8
#define DGST_SIZE_4_4 (4 * sizeof (uint)) // 16
#define DGST_SIZE_4_5 (5 * sizeof (uint)) // 20
#define PARSER_PSAFE2_FILE_SIZE -13
#define PARSER_PSAFE3_FILE_SIZE -14
#define PARSER_TC_FILE_SIZE -15
-#define PARSER_SIP_AUTH_DIRECTIVE -16
+#define PARSER_VC_FILE_SIZE -16
+#define PARSER_SIP_AUTH_DIRECTIVE -17
#define PARSER_UNKNOWN_ERROR -255
#define PA_000 "OK"
#define PA_013 "Invalid psafe2 filesize"
#define PA_014 "Invalid psafe3 filesize"
#define PA_015 "Invalid truecrypt filesize"
-#define PA_016 "Invalid SIP directive, only MD5 is supported"
+#define PA_016 "Invalid veracrypt filesize"
+#define PA_017 "Invalid SIP directive, only MD5 is supported"
#define PA_255 "Unknown error"
/**
#define STATUS_QUIT 7
#define STATUS_BYPASS 8
#define STATUS_STOP_AT_CHECKPOINT 9
+#define STATUS_AUTOTUNE 10
#define ST_0000 "Initializing"
#define ST_0001 "Starting"
#define ST_0007 "Quit"
#define ST_0008 "Bypass"
#define ST_0009 "Running (stop at checkpoint)"
+#define ST_0010 "Autotuning"
/**
* kernel types
* functions
*/
+u32 is_power_of_2(u32 v);
+
u32 rotl32 (const u32 a, const u32 n);
u32 rotr32 (const u32 a, const u32 n);
u64 rotl64 (const u64 a, const u64 n);
char *get_install_dir (const char *progname);
char *get_profile_dir (const char *homedir);
char *get_session_dir (const char *profile_dir);
+uint count_lines (FILE *fd);
void *rulefind (const void *key, void *base, int nmemb, size_t size, int (*compar) (const void *, const void *));
+int sort_by_u32 (const void *p1, const void *p2);
int sort_by_mtime (const void *p1, const void *p2);
int sort_by_cpu_rule (const void *p1, const void *p2);
int sort_by_kernel_rule (const void *p1, const void *p2);
u32 mydivc32 (const u32 dividend, const u32 divisor);
u64 mydivc64 (const u64 dividend, const u64 divisor);
-void ascii_digest (char out_buf[1024], uint salt_pos, uint digest_pos);
+void ascii_digest (char *out_buf, uint salt_pos, uint digest_pos);
void to_hccap_t (hccap_t *hccap, uint salt_pos, uint digest_pos);
void format_speed_display (float val, char *buf, size_t len);
#ifdef HAVE_HWMON
-#if defined(HAVE_NVML) || defined(HAVE_NVAPI)
-int hm_get_adapter_index_nv (HM_ADAPTER_NV nvGPUHandle[DEVICES_MAX]);
-#endif
+int get_adapters_num_adl (void *adl, int *iNumberAdapters);
-#ifdef HAVE_ADL
-int get_adapters_num_amd (void *adl, int *iNumberAdapters);
+int hm_get_adapter_index_adl (hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
-int hm_get_adapter_index_amd (hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
+int hm_get_adapter_index_nvapi (HM_ADAPTER_NVAPI nvapiGPUHandle[DEVICES_MAX]);
-LPAdapterInfo hm_get_adapter_info_amd (void *adl, int iNumberAdapters);
+int hm_get_adapter_index_nvml (HM_ADAPTER_NVML nvmlGPUHandle[DEVICES_MAX]);
+
+LPAdapterInfo hm_get_adapter_info_adl (void *adl, int iNumberAdapters);
u32 *hm_get_list_valid_adl_adapters (int iNumberAdapters, int *num_adl_adapters, LPAdapterInfo lpAdapterInfo);
int hm_get_overdrive_version (void *adl, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
int hm_check_fanspeed_control (void *adl, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
-// int hm_get_device_num (void *adl, HM_ADAPTER_AMD hm_adapter_index, int *hm_device_num);
+// int hm_get_device_num (void *adl, HM_ADAPTER_ADL hm_adapter_index, int *hm_device_num);
// void hm_get_opencl_busid_devid (hm_attrs_t *hm_device, uint opencl_num_devices, cl_device_id *devices);
-#endif // HAVE_ADL
-
-int hm_get_temperature_with_device_id (const uint device_id);
-int hm_get_fanspeed_with_device_id (const uint device_id);
-int hm_get_utilization_with_device_id (const uint device_id);
-int hm_set_fanspeed_with_device_id_amd (const uint device_id, const int fanspeed);
+int hm_get_threshold_slowdown_with_device_id (const uint device_id);
+int hm_get_threshold_shutdown_with_device_id (const uint device_id);
+int hm_get_temperature_with_device_id (const uint device_id);
+int hm_get_fanspeed_with_device_id (const uint device_id);
+int hm_get_fanpolicy_with_device_id (const uint device_id);
+int hm_get_buslanes_with_device_id (const uint device_id);
+int hm_get_utilization_with_device_id (const uint device_id);
+int hm_get_memoryspeed_with_device_id (const uint device_id);
+int hm_get_corespeed_with_device_id (const uint device_id);
+int hm_get_throttle_with_device_id (const uint device_id);
+int hm_set_fanspeed_with_device_id_adl (const uint device_id, const int fanspeed, const int fanpolicy);
+int hm_set_fanspeed_with_device_id_nvapi (const uint device_id, const int fanspeed, const int fanpolicy);
+int hm_set_fanspeed_with_device_id_xnvctrl (const uint device_id, const int fanspeed);
void hm_device_val_to_str (char *target_buf, int max_buf_size, char *suffix, int value);
#endif // HAVE_HWMON
void myabort ();
void myquit ();
-uint set_kernel_accel (uint hash_mode);
-uint set_kernel_loops (uint hash_mode);
void set_cpu_affinity (char *cpu_affinity);
void usage_mini_print (const char *progname);
void sp_stretch_markov (hcstat_table_t *in, hcstat_table_t *out);
void sp_stretch_root (hcstat_table_t *in, hcstat_table_t *out);
+void tuning_db_destroy (tuning_db_t *tuning_db);
+tuning_db_t *tuning_db_alloc (FILE *fp);
+tuning_db_t *tuning_db_init (const char *tuning_db_file);
+tuning_db_entry_t *tuning_db_search (tuning_db_t *tuning_db, hc_device_param_t *device_param, int attack_mode, int hash_type);
+
int bcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int cisco4_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int dcc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oracles_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oraclet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int osc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+int arubaos_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int osx1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int osx512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int phpass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
-int sha1linkedin_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1b64_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1b64s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int hmacsha512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int hmacmd5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int krb5pa_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+int krb5tgs_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sapb_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sapg_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int drupal7_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mywallet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int ms_drsr_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int androidfde_samsung_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
-
+int axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+int sha1axcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+int keepass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+int pstoken_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+int zip2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+int veracrypt_parse_hash_200000 (char *input_buf, uint input_len, hash_t *hash_buf);
+int veracrypt_parse_hash_500000 (char *input_buf, uint input_len, hash_t *hash_buf);
+int veracrypt_parse_hash_327661 (char *input_buf, uint input_len, hash_t *hash_buf);
+int veracrypt_parse_hash_655331 (char *input_buf, uint input_len, hash_t *hash_buf);
+int win8phone_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
+
+void naive_replace (char *s, const u8 key_char, const u8 replace_char);
+void naive_escape (char *s, size_t s_max, const u8 key_char, const u8 escape_char);
void load_kernel (const char *kernel_file, int num_devices, size_t *kernel_lengths, const u8 **kernel_sources);
void writeProgramBin (char *dst, u8 *binary, size_t binary_size);
int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], u32 rp_gen_func_min, u32 rp_gen_func_max);
int _old_apply_rule (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, char out[BLOCK_SIZE]);
-int cpu_rule_to_kernel_rule (char rule_buf[BUFSIZ], uint rule_len, kernel_rule_t *rule);
-int kernel_rule_to_cpu_rule (char rule_buf[BUFSIZ], kernel_rule_t *rule);
+int cpu_rule_to_kernel_rule (char *rule_buf, uint rule_len, kernel_rule_t *rule);
+int kernel_rule_to_cpu_rule (char *rule_buf, kernel_rule_t *rule);
void *thread_device_watch (void *p);
void *thread_keypress (void *p);