openwall / john

John the Ripper jumbo - advanced offline password cracker, which supports hundreds of hash and cipher types, and runs on many operating systems, CPUs, GPUs, and even some FPGAs
https://www.openwall.com/john/
Other
10.31k stars 2.1k forks source link

dynamic busted for ./configure --enable-openmp-for-fast-formats builds #1960

Closed jfoug closed 8 years ago

jfoug commented 8 years ago
$ ../run/john -test=0 | grep -v PASS
Will run 8 OpenMP threads
Testing: dynamic_22 [md5(sha1($p)) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_23 [sha1(md5($p)) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_94 [gost(gost_raw($p)) 64/64]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_104 [whirlpool(whirlpool_raw($p)) 64/64 OpenSSL]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_114 [tiger(tiger_raw($p)) 32/64 sph_tiger]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_124 [ripemd128(ripemd128_raw($p)) 32/64 sph_ripemd]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_134 [ripemd160(ripemd160_raw($p)) 32/64 sph_ripemd]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_144 [ripemd256(ripemd256_raw($p)) 32/64 sph_ripemd]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_154 [ripemd320(ripemd320_raw($p)) 32/64 sph_ripemd]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_164 [haval128_3(haval128_3_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_174 [haval128_4(haval128_4_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_184 [haval128_5(haval128_5_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_194 [haval160_3(haval160_3_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_204 [haval160_4(haval160_4_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_214 [haval160_5(haval160_5_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_224 [haval192_3(haval192_3_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_234 [haval192_4(haval192_4_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_244 [haval192_5(haval192_5_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_254 [haval224_3(haval224_3_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_264 [haval224_4(haval224_4_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_274 [haval224_5(haval224_5_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_284 [haval256_3(haval256_3_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_294 [haval256_4(haval256_4_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_304 [haval256_5(haval256_5_raw($p)) 32/64 sph_haval]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_314 [md2(md2_raw($p)) 32/64 sph_md2]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_324 [panama(panama_raw($p)) 32/64 sph_panama]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_334 [skein224(skein224_raw($p)) 32/64 sph_skein]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_344 [skein256(skein256_raw($p)) 32/64 sph_skein]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_354 [skein384(skein384_raw($p)) 32/64 sph_skein]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_364 [skein512(skein512_raw($p)) 32/64 sph_skein]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_374 [sha3_224(sha3_224_raw($p)) 64/64 keccak]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_384 [sha3_256(sha3_256_raw($p)) 64/64 keccak]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_394 [sha3_384(sha3_384_raw($p)) 64/64 keccak]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_404 [sha3_512(sha3_512_raw($p)) 64/64 keccak]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_414 [keccak_256(keccak_256_raw($p)) 64/64 keccak]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_424 [keccak_512(keccak_512_raw($p)) 64/64 keccak]... (8xOMP) FAILED (cmp_all(3))

Testing: dynamic_1018 [md5(sha1(sha1($p))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1019 [md5(sha1(sha1(md5($p)))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1020 [md5(sha1(md5($p))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1021 [md5(sha1(md5(sha1($p)))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1022 [md5(sha1(md5(sha1(md5($p))))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1024 [sha1(md5($p)) (hash truncated to length 32) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1025 [sha1(md5(md5($p))) (hash truncated to length 32) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)
jfoug commented 8 years ago

289dcef fixes all of the dyna_num % 4 formats (and probably others). We had a quick check for hex, that was using element [0] and NOT the element for this thread.

I still have these to look into. They can NOT be run in OMP builds, and I thought I had that worked out at one time. It may be this was the 'work around', to simply fail the ST, and not allow the format to run, I really do not remember.

$ ../run/john -test=0 -form=dynamic | grep -v PASS
Will run 8 OpenMP threads
Testing: dynamic_22 [md5(sha1($p)) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_23 [sha1(md5($p)) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1018 [md5(sha1(sha1($p))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1019 [md5(sha1(sha1(md5($p)))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1020 [md5(sha1(md5($p))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1021 [md5(sha1(md5(sha1($p)))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1022 [md5(sha1(md5(sha1(md5($p))))) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1024 [sha1(md5($p)) (hash truncated to length 32) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

Testing: dynamic_1025 [sha1(md5(md5($p))) (hash truncated to length 32) 128/128 AVX 4x1]... FAILED (FMT_OMP_BAD)

9 out of 445 tests have FAILED

The problem comes from SIMD builds, where we use a mixed buffer (not the flat code), and have BE and LE hashes in the same expression. These 'would' work for flat code just fine. The < 1000 formats should be easy (if I can not figure it out, I can #define out the stuff in preloads). The others will take more insight, since they are loaded by the parser.

jfoug commented 8 years ago

7f687f5 fee8c77 complete the fixes.