FS#76252 - [john] 1.9.0.jumbo1-7 OpenCL error on several hashes

Attached to Project: Community Packages
Opened by Michael (ZeroBeat) - Thursday, 20 October 2022, 07:31 GMT
Last edited by Caleb Maclennan (alerque) - Thursday, 01 December 2022, 08:57 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Caleb Maclennan (alerque)
Levente Polyak (anthraxx)
Architecture x86_64
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

john 1.9.0.jumbo1-7 is broken (OpenCL error) on several hash modes.

Steps to reproduce (example):
hash: 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a
password: hashcat!

$ echo "2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a" > pmkid.john
$ echo "hashcat!" > word.list

$ john -w:word.list --format=wpapsk-opencl pmkid.john
Device 1@tux1: NVIDIA GeForce GTX 1080 Ti
Using default input encoding: UTF-8
Loaded 1 password hash (wpapsk-opencl, WPA/WPA2/PMF/PMKID PSK [PBKDF2-SHA1 OpenCL])
Cost 1 (key version [0:PMKID 1:WPA 2:WPA2 3:802.11w]) is 0 for all loaded hashes
6 errors generated.
Options used: -I /usr/share/john/kernels -cl-mad-enable -DSM_MAJOR=6 -DSM_MINOR=1 -D__GPU__ -DDEVICE_INFO=524306 -D__SIZEOF_HOST_SIZE_T__=8 -DDEV_VER_MAJOR=520 -DDEV_VER_MINOR=56 -D_OPENCL_COMPILER -DHASH_LOOPS=105 -DITERATIONS=4095 -DPLAINTEXT_LENGTH=63 -DV_WIDTH=1 /usr/share/john/kernels/wpapsk_kernel.cl
Build log: In file included from <kernel>:12:
/usr/share/john/kernels/opencl_sha2_ctx.h:122:24: error: passing '__generic uchar *' (aka '__generic unsigned char *') to parameter of type 'const uchar *' (aka 'const unsigned char *') changes address space of pointer
_sha256_process(ctx, ctx->buffer);
^~~~~~~~~~~
/usr/share/john/kernels/opencl_sha2_ctx.h:40:51: note: passing argument to parameter 'data' here
void _sha256_process(SHA256_CTX *ctx, const uchar data[64]) {
^
/usr/share/john/kernels/opencl_sha2_ctx.h:130:24: error: passing 'const __generic uchar *' (aka 'const __generic unsigned char *') to parameter of type 'const uchar *' (aka 'const unsigned char *') changes address space of pointer
_sha256_process(ctx, input);
^~~~~
/usr/share/john/kernels/opencl_sha2_ctx.h:40:51: note: passing argument to parameter 'data' here
void _sha256_process(SHA256_CTX *ctx, const uchar data[64]) {
^
/usr/share/john/kernels/opencl_sha2_ctx.h:291:24: error: passing '__generic uchar *' (aka '__generic unsigned char *') to parameter of type 'const uchar *' (aka 'const unsigned char *') changes address space of pointer
_sha512_process(ctx, ctx->buffer);
^~~~~~~~~~~
/usr/share/john/kernels/opencl_sha2_ctx.h:209:51: note: passing argument to parameter 'data' here
void _sha512_process(SHA512_CTX *ctx, const uchar data[128]) {
^
/usr/share/john/kernels/opencl_sha2_ctx.h:299:24: error: passing 'const __generic uchar *' (aka 'const __generic unsigned char *') to parameter of type 'const uchar *' (aka 'const unsigned char *') changes address space of pointer
_sha512_process(ctx, input);
^~~~~
/usr/share/john/kernels/opencl_sha2_ctx.h:209:51: note: passing argument to parameter 'data' here
void _sha512_process(SHA512_CTX *ctx, const uchar data[128]) {
^
In file included from <kernel>:13:
/usr/share/john/kernels/opencl_cmac.h:62:22: error: passing 'const __generic uint8_t *' (aka 'const __generic unsigned char *') to parameter of type 'const void *' changes address space of pointer
AES_set_encrypt_key(key, 128, &ctx->aesctx);
^~~
/usr/share/john/kernels/opencl_aes_bitslice.h:1001:61: note: expanded from macro 'AES_set_encrypt_key'
#define AES_set_encrypt_key(key, bits, ctx) AES_Setkey(ctx, key, (bits) / 8)
^~~
/usr/share/john/kernels/opencl_aes_bitslice.h:690:45: note: passing argument to parameter 'key' here
AES_Setkey(AES_CTX *ctx, AES_KEY_TYPE void *key, int len)
^
<kernel>:546:15: error: passing '__generic uchar *' (aka '__generic unsigned char *') to parameter of type 'uchar *' (aka 'unsigned char *') changes address space of pointer
SHA256_Final(mac, &ctx);
^~~
/usr/share/john/kernels/opencl_sha2_ctx.h:145:25: note: passing argument to parameter 'output' here
void SHA256_Final(uchar output[32], SHA256_CTX *ctx) {
^

Error building kernel /usr/share/john/kernels/wpapsk_kernel.cl. DEVICE_INFO=524306
0: OpenCL CL_BUILD_PROGRAM_FAILURE (-11) error in opencl_common.c:1386 - clBuildProgram


$ pacman -Q | grep nvidia
nvidia 520.56.06-4
nvidia-settings 520.56.06-1
nvidia-utils 520.56.06-2
opencl-nvidia 520.56.06-2

$ pacman -Q | grep cuda
cuda 11.8.0-1
This task depends upon

Closed by  Caleb Maclennan (alerque)
Thursday, 01 December 2022, 08:57 GMT
Reason for closing:  Not a bug
Additional comments about closing:  This is not a packaging bug, it is an upstream bug. Upstream has a fix, but it isn't in a tagged release yet that we can ship.
Comment by Michael (ZeroBeat) - Thursday, 20 October 2022, 07:53 GMT
Reported to upstream, because latest git head is affected, too:
https://github.com/openwall/john/issues/5205
Comment by Michael (ZeroBeat) - Friday, 21 October 2022, 11:31 GMT
I've moved the conversation forward to
https://github.com/openwall/john/issues/5205
Comment by Michael (ZeroBeat) - Friday, 21 October 2022, 15:57 GMT
We got a workaround
https://github.com/openwall/john/issues/5205#issuecomment-1287069933
Here's a workaround for you though: Edit john.conf and find GlobalBuildOpts. Append -cl-std=CL1.2 to what is already there:
GlobalBuildOpts = -cl-mad-enable -cl-std=CL1.2

on latest git head:
$ john
John the Ripper 1.9.0-jumbo-1+bleeding-84a4aeb20 2022-10-17 14:03:56 +0200 MPI + OMP [linux-gnu 64-bit x86_64 AVX AC]
Copyright (c) 1996-2022 by Solar Designer and others
Homepage: https://www.openwall.com/john/

that will solve the problem:
$ john -w:word.list --format=wpapsk-opencl pmkid.john
Device 1@tux1: NVIDIA GeForce GTX 1080 Ti
Using default input encoding: UTF-8
Loaded 1 password hash (wpapsk-opencl, WPA/WPA2/PMF/PMKID PSK [PBKDF2-SHA1 OpenCL])
Note: Minimum length forced to 8 by format
LWS=256 GWS=1048576 (4096 blocks)
Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status
Warning: Only 1 candidate buffered, minimum 1048576 needed for performance.
hashcat! (?)
1g 0:00:00:00 DONE (2022-10-21 17:50) 20.00g/s 20.00p/s 20.00c/s 20.00C/s Dev#1:62°C hashcat!
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Not sure, if it is working on john 1.9.0.jumbo1-7, too, because this version was hit by another bug (fixed):
https://github.com/openwall/john/issues/4667

Comment by Michael (ZeroBeat) - Wednesday, 26 October 2022, 15:54 GMT
That PR should fix the issue and really should work fine on any platform:
https://github.com/openwall/john/pull/5207
Comment by Michael (ZeroBeat) - Monday, 31 October 2022, 10:04 GMT
Now finally fixed:
https://github.com/openwall/john/commit/8d5524d3ac9a62678c585efec1298b213d30d61e

Please consider to move from JtR Jumbo to JtR bleeding, because it is thousand commits ahead.
Comment by Caleb Maclennan (alerque) - Thursday, 01 December 2022, 08:56 GMT
This is an upstream issue. Even though it has been fixed in HEAD it is not in a tagged release yet. Please open an upstream issue to get a tagged release out that includes this fix: at that point Arch will package it. We don't typically package anything other than tagged releases. Use a VCS package from the AUR if you need HEAD builds until a release happens.

Loading...