From 24ce7bacae8d8aa2d169f0df3ec7c3156763ec80 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Fri, 26 Oct 2018 21:16:32 +0200 Subject: [PATCH] Updated Intel OpenCL runtime version check --- docs/changes.txt | 11 ++++++----- src/opencl.c | 29 +++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index c8adbea74..416a0865e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -4,7 +4,7 @@ ## Features ## -- Add new option --slow-candidates which allows hashcat to generate passwords on-host +- Added new option --slow-candidates which allows hashcat to generate passwords on-host ## ## Algorithms @@ -25,23 +25,24 @@ ## Improvements ## -- Added a periodic check for read timeouts in stdin/pipe mode, and abort if no input was provided - Added additional hybrid "passthrough" rules, to enable variable-length append/prepend attacks +- Added a periodic check for read timeouts in stdin/pipe mode, and abort if no input was provided - Added a tracker for salts, amplifier and iterations to the status screen - Added option --markov-hcstat2 to make it clear that the new hcstat2 format (compressed hcstat2gen output) must be used - Allow bitcoin master key lengths other than 96 bytes (but they must be always multiples of 16) -- Allow keepass iteration count to be larger than 999999 - Allow hashfile for -m 16800 to be used with -m 16801 +- Allow keepass iteration count to be larger than 999999 +- Changed algorithms using colon as separators in the hash to not use the hashconfig separator on parsing - Do not allocate memory segments for bitmap tables if we don't need it - for example, in benchmark mode - Got rid of OPTS_TYPE_HASH_COPY for Ansible Vault - Improved the speed of the outfile folder scan when using many hashes/salts - Increased the maximum size of edata2 in Kerberos 5 TGS-REP etype 23 - Make the masks parser more restrictive by rejecting a single '?' at the end of the mask (use ?? instead) -- Removed duplicate words in the dictionary file example.dict - Override --quiet and show final status screen in case --status is used +- Removed duplicate words in the dictionary file example.dict +- Updated Intel OpenCL runtime version check - Work around some AMD OpenCL runtime segmentation faults - Work around some padding issues with host compilers and OpenCL JiT on 32 and 64-bit systems -- Changed algorithms using colon as separators in the hash to not use the hashconfig separator on parsing ## ## Bugs diff --git a/src/opencl.c b/src/opencl.c index 32b0a6ffe..2964d1773 100644 --- a/src/opencl.c +++ b/src/opencl.c @@ -3776,15 +3776,32 @@ int opencl_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime) { bool intel_warn = false; - float opencl_version = 0; - int opencl_build = 0; + // Intel OpenCL runtime 18 - int res = sscanf (device_param->device_version, "OpenCL %f (Build %d)", &opencl_version, &opencl_build); + int opencl_driver1 = 0; + int opencl_driver2 = 0; + int opencl_driver3 = 0; + int opencl_driver4 = 0; - if (res == 2) + const int res18 = sscanf (device_param->driver_version, "%u.%u.%u.%u", &opencl_driver1, &opencl_driver2, &opencl_driver3, &opencl_driver4); + + if (res18 == 4) { - // Intel OpenCL runtime 16.1.1 - if (opencl_build < 25) intel_warn = true; + // so far all versions 18 are ok + } + else + { + // Intel OpenCL runtime 16 + + float opencl_version = 0; + int opencl_build = 0; + + const int res16 = sscanf (device_param->device_version, "OpenCL %f (Build %d)", &opencl_version, &opencl_build); + + if (res16 == 2) + { + if (opencl_build < 25) intel_warn = true; + } } if (intel_warn == true)