Changes Jumbo

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 295

The following changes were made between 1.8.0-jumbo-1 and 1.9.

0-jumbo-1:

magnum (2623):
inc.c: Instead of sending a "" to crk_process_key(), use a safe static
buffer of PLAINTEXT_BUFFER_SIZE. No problem seen here but in other
places with similar code.
Move lastpass format back in tree. See #890
OpenCL: Support reporting OpenCL 2.0 versions.
OpenCL: Pass DEV_VER_MAJOR and DEV_VER_MINOR to OpenCL compiler. Eg.
for Catalyst 1234.5 they will be 1234 and 5 respectively. For
strings like "text 123 text 56" they will be 123 and 56. Closes
#909.
DEScrypt OpenCL: Tweak the selection of "fast" versus "safe" version
of the kernel. The selection logic will very likely grow over time.
OpenCL: If kernel build fails, force outputting build options.
OpenCL: AMD devices have some weird bug when using pinned buffers.
They seem to allocate twice the memory. We need to account for this
when finding out limits.
Speed up some --list stuff with OpenCL formats. See #919.
Even more speedup for --list stuff with OpenCL formats. See #919.
Tweak for --list=format-[all-]details and OMP formats. See #919.
OMP tuning and some other performance fixes. See #877.
AC: Fix ASAN configuration. Closes #921.
AC: More fixes to ASAN configuration. #921.
Fix a problem with --list=format-tests and Unicode formats. Closes
#919
DEScrypt OpenCL: Tweak the selection of "fast" versus "safe" version
of the kernel. The __Tahiti__ macro is not all upper case, as I had
it. And only nvidia GM204 seem to be faster using the "safe" kernel
- Kepler and Fermi wants the other.
Vectorized OpenCL formats: Correction for max memory use.
Vectorized OpenCL formats: Correction for max memory use.
raw-sha256 bug fix. It didn't unify case for all hashes. Closes #925,
#926, #927, #928, #931.
OpenCL: Fix a bad bug with multi-field test vectors. Found by ASAN.
OpenCL: Auto-tune max. size calc. fix for vectorized formats (RAKP and
NTLMv2). See #922
Office2013 OpenCL: Disable vectorizing on VLIW5 because the register
pressure is too high. Discussion in #908.
AC: Add -D__USE_MINGW_ANSI_STDIO for MinGW.
Office2013 OpenCL: Allow forcing vectorizing.
Fix a minor problem in AESNI Makefile.
RAKP OpenCL: On VLIW5, limit vectorizing to 2x due to GPR pressure.
See #908.
Various OpenCL formats: On VLIW5, limit vectorizing to 2x due to GPR
pressure. See #908.
Oops I committed the define of JTR_RELASE_BUILD into bleeding.
Makefile: Fix a typo in luks2john's LDFLAGS. See #933
jumbo.c: Pure whitespace fixes.
OpenCL: Drop some obsolete code. Fix a lot of formats for using LWS=0
(auto tune LWS) or LWS=9999 (set to ceiling instead of forcing auto
tune). Also plenty other minor tweaks and fixes.
Change the $HEX$ loader bodge to use strncmp() instead of strstr(),
for performance.
Drop OCL_CONFIG in favor of FORMAT_LABEL. It will be stripped to it's
base and lower-cased, eg. rar-opencl -> rar, so the end result is
supposedly the same (or bugs got fixed automagically, which is the
very intention with this). Closes #940.
Drop a couple of old formats from the unused/ directory. That
directory is not a permanent graveyard - Git is.
Drop a couple of old Unicode "original" files from unused. We do not
need them - the licensing information is stated in the files we
actually use.
Fix a problem with opencl_cryptsha512_fmt after my recent changes.
Drop no-op code from Truecrypt. See #941.
Fix indentation and widescreen comments in memory.c
raw-sha1-linkedin bodge for loader.c. Closes #924.
RAKP-opencl, fix a problem with uninitialized index buffer when used
with -skip. Closes #947.
mscash-cuda. Update valid() and prepare() from CPU format. Closes #942
sha256crypt-cuda. Use shared valid() and binary() functions. Closes
#943.
sha512crypt-cuda. Use shared valid() and binary() functions. Closes
#944.
Revert an incorrect fix in formats.c from faf28f43. You must not call
clear_keys() in the middle of a batch of keys!
Revert an incorrect fix in mssql from faf28f43.
Put workaround back in RSVP since we reverted the fix in formats.c
Bugfix for xsha512-cuda found by ASAN.
Add more test vectors to CUDA formats that only had one.
Encfs-opencl and sxc-opencl: Add test vectors from CPU format.
OpenCL keyring format: Add second test vector from CPU format. This
immediately made a bad bug show up, which was fixed too.
Revert "loader: incresed number of parms being loaded from file, for
scrypt"
pwsafe-opencl: Reject uppercase in valid().
Drop 'test' but keep .gitmodules. Experimental.
Drop some unused code from Keccak and Blake.
Fix some header inclusions that should be <brackets> but was "quotes"
Add an option to configure (--enable-plugin-dependencies) that creates
plugin dependencies in Makefile. Highly experimental and
best-effort. See #955.
Add a self-test for salt() ensuring it returns same data for same
salt. See #953.
Base64_convert code: Some off-by-one and buffer cleaning problems
fixed. See #953
Fix some more header inclusions that should be <brackets> but were
"quotes".
Add Makefile dependencies for non-plugins, "best effort".
Default to enable plugin dependencies generation.
Add a debug print to formats.c salt dupe check.
PFX bugfix. We were clearing salt after setting things in it. This
does not fix #953 - it appears we really have to use a dynamic salt.
Change wording of self-test warning for dupe salt detection. There's
not really any doubt it's broken.
OpenCL DES: Use an LWS of 8 for Intel, for good measure (they
recommend it in their white papers). Closes #958.
Revert 53442ed and 123a654. They were never needed. See #958
Allow environment variable OMP_SCALE to override john.conf setting
FormatBlockScaleTuneMultiplier. And clean up code.
luks2john: Add missing LF in error output.
Fix bugs in LUKS format. Some optimist had changed things without
checking results of it. We were freeing memory that was not
alloc'ed, and non-inlined hash handling was terrificly b0rken in
valid().
Add autoconfig-stamp-h.in to .gitignore
DEScrypt-opencl: Add a kludge for older buggy Intel CPU driver.
Double entry in .gitignore after mid-air collision. Removed.
Make base64_convert less Windows-ish by lifting the limit of 50K max.
number of lines read from stdin. Fix some bugs while at it. The max
line length is now 256K as stated (it was coded as 256M). FWIW our
current LINE_BUFFER_SIZE is less at 0x30000.
base64_convert: Put a line length limit notice back in usage blob.
Fix edge-case issues with enc_lc() and enc_uc(). The destination size
is now buffer size, not string length.
Fix a good bunch of formats that did not work with the new OMP_SCALE
test/devel stuff. See #877.
Fix some more formats that did not work with the new OMP_SCALE
test/devel stuff. Plus some no-ops for unified code. See #877.
Revert CP737 to what the Unicode database says.
Manual sync of libclamav unrar code from upstream. This did not fix
#1000.
Fix an ASAN problem in unrar.c where a read ahead buffer could read
past end of buffer. Closes #1000.
Fix a bug in -list=format-details where multi-field ciphertexts were
not printed. Also drop some for loops in -list=format-tests in favor
of strchr().
unrar.c, bump over-alloc more for protection against bad data. See
#1000 and closes #1001.
Document how to crack CRAM-MD5 using the HMAC-MD5 format. Closes #999.
Add salt_compare method and plaintext_min_length param to format
struct. Closes 996, closes #997.
Add --list info for new format struct members. Closes #1004.
unrar.c: Implement a similar protection for rar_getbits() that Jim did
in rarvm_getbits(). Unfortunately this did not help #1008.
Wordlist mode had no consecutive dupe suppression when running
unbuffered and without rules. This reverts 15949eb and fixes it in a
better way. Closes #1012.
Reduce some chatter when -verbosity is decreased.
If verbosity is increased, report tunable cost even when all hashes
have same cost. This was suggested in #816.
Allow -cost with -test. See #816.
Clean up cost-with-test code, see #816.
Cost-with-test: Added printing of costs used in test. Closes #816.
Cost-with-test: Changed message for costs used in test. See #816.
Benchmark w/ -cost issues. Closes #816. - Never output cost
information w/ --test=0. - Also mute it if verbosity was decreased
from default. - Give a better error message when -cost pruned all
test vectors. - Fail with a proper notice if a required cost is not
defined.
Import pp.c (as prince.c) from Atom's Princeprocessor and implement a
prince mode with it. See #1011.
Add means for setting PRINCE parameters. Also add logging of them. See
#1011.
PRINCE: Add ETA/progress. See #1011.
PRINCE: Minor tweaks. See #1011.
PRINCE: Implement session save/restore. See #1011.
PRINCE: Minor tweaks. See #1011.
PRINCE: Fix a problem where we broke out of inner loop but not the
outer. See #1014.
PRINCE: Fix another problem where we broke out of inner loop but not
the outer. Closes #1014.
Fix a potential "ASan problem" in mask mode.
PRINCE: Always report DONE when everything is cracked. This is not
necessarily a good idea (will open another issue) but all other
modes do so.
PRINCE: Support node/fork. See #1011.
PRINCE: Better node/fork distribution. See #1011.
PRINCE: Fix resume problem. Closes #1016.
PRINCE: Cosmetic & performance resume tweaks. See #1016.
Drop PRINCE from usage blob and other stuff, unless GMP is available.
PRINCE: Sync pp.c from Atom's repo.
PRINCE: Add proper GMP cleanup for JtR-specific variables.
PRINCE: Optionally define PRINCE-specific wordlist in john.conf.
Autoconf: Add a PRINCE notice to summary (for GMP library).
PRINCE: Mute a compiler warning.
Add a header in pkzip_plug.c muting a compiler warning.
Sync upstream PRINCE changes. Major improvement for resuming.
PRINCE: Much faster node distribution - but distributes poorly for
very small keyspaces.
PRINCE: Sync prince.c from upstream (d9bbf908) pp.c.
PRINCE: Sync prince.c from upstream (be309320) pp.c (major bugfix).
Autoconf: Check whether compiler supports some int128 type(s).
PRINCE: Prefer uint128_t over GMP if available, for a 44% boost. This
only works with 64-bit builds and not with all compilers (it should
work with gcc 3.1 and above). Otherwise fall back to GMP.
PRINCE: Support 128-bit integer for legacy Makefile builds.
PRINCE: Fix a bug with 128-bit restore.
Show default parameters for PRINCE mode in usage blob.
PRINCE: Bugfix for legacy builds.
Add instructions for working around bugs in the system headers of OS X
Yosemite. See #1025.
PRINCE: Merge upstream.
OSX: Backup originals if patching system headers o.O
Mask mode (pure): Fix progress/ETA for node/fork runs. Closes #1024.
PRINCE: Drop the inner-loop node distribution alternative, plus some
error output tweaks.
PRINCE: Update from upstream.
PRINCE: Ensure session store/resume compatibility between GMP and
non-GMP versions. And fix input/output of large numbers in the
int128 version. Also fix what I hope is a bug upstream (else we got
a problem).
PRINCE: Update from upstream. 6.4x boost. Drop the int128 version for
now (WIP).
PRINCE: Add options --prince-skip=N and --prince-limit=N.
PRINCE: Add int128 alternative to GMP again, this time using a header
with nefarious macros.
Re-add AC status output for int128 PRINCE.
PRINCE: Add --prince-keyspace option. Also add --disable-int128 to
autoconf.
mpz_int128.h: Support base 10 and 16 for mpz_set_str()
PRINCE: Show "bits used" when printing keyspace. Also revert a bug
workaround that should no longer be needed (div by zero while
skipping).
Add unrule.pl embryo. This does wot epixoip said, plus removes dupes
and sorts by count. Reduces rockyou.txt by 60% in 30 seconds. See
#998.
mpz_int128.h: Add overflow checks, saturating to INT128_MAX (and to
zero for subtraction)
mpz_int128.h: Minor tweaks.
blf.h: Use "stdint.h" and not <stdint.h>
Sync pp.c from upstream.
Add a warning about saturation in mpz_int128.h in case someone tries
to use it for something other than PRINCE.
PRINCE: Fix a bug in JtR-specific code introduced when merging
upstream.
Drop OS X 'as' wrapper script in favor of -q option to native 'as'.
mpz_int128.h: Fix saturation checks for case where rop and op1 is the
same variable.
PRINCE: Update from upstream v 0.20.
PRINCE: Tweak parameter checking.
PRINCE: Fix (JtR specific) resume bug.
PRINCE: Update pp.c from upstream and add new -prince-case-permute
amplifier option to JtR.
PRINCE: Allow output lengths up to 125. Note that this mode currently
limits output length to 16 unless you use -max-len to bump it. For
most other use cases, -max-len is a limiter.
Print timestamp with --log-stderr.
PRINCE: Bug fixes for case when output length > max input length.
Jim's portability hack of pp.c was broken: * If -DJTR_MODE we don't
need getopt.h at all * if that macro is not defined we must not
depend on other object files.
PRINCE: Reduce memory use.
PRINCE: Fix a bug when output length > max. input length.
PRINCE: Fix output length bugs. We can't support longer output than 32
unless we switch to u64, but it will too slow anyway.
PRINCE: Fix a session bugs with node/fork. This is incompatible with
saved sessions from previous versions - there was no way around it.
MIPS tweaks for autoconf script. Suggested by Solar after tests.
PRINCE: Update from upstream.
AC: Add mips* back (and a new mips64*) for catching obscure target
triples.
WPAPSK: Better version of previous patch. See #1031
PRINCE: Add support for encodings. This does not affect performance
much, and only during initial wordlist load.
PRINCE: Add loopback mode. Note that we do not yet have dupe
suppression which is almost a must for loopback.
PRINCE: Add dupe-suppression.
PRINCE: Update from (sort of) upstream.
Some tweaks for --max-length option. Do not allow it to over-ride a
limited --stdout=N length, and bail with error if trying to use
larger than allowed for PRINCE mode (currently 32).
Change the inline error output from keepass format to reference the
issue for fixing it, and use error() instead of exit(). See #1023
and #1026.
Do not test for int128 unless we are really 64-bit or better.
PRINCE: Fix resume bug.
PRINCE: Update from upstream. Dupe-suppression is now default.
PRINCE: Yet again tweak session save/resume. It's hard to get
node/fork right.
Replace exit() calls with error() so we get a proper bailout with
logging.
PRINCE: Optionally memory-map the input file (not for loopback mode
nor when using case permutations). This is JtR-specific, the
original prince-processor still only supports loading from stdin.
Dupe suppression is no longer default except in loopback mode, good
old --dupe-suppression option does it otherwise.
Tweaks to the Yosemite patch, for not breaking clang builds.
Pacify a clang compiler warning in pp.c.
PRINCE: Add logging of memory use (JtR only).
PRINCE: Upstream bug fix, and some more fixes for dupe-suppression.
Comment out an unused variable in MD4 OpenCL kernel.
PRINCE: Revert a bogus change in last commit.
PRINCE: JtR-specific bugfix similar to the recently fixed one
upstream.
PRINCE: Automatically decrease elem-cnt-max to pw_max if applicable.
Drop an odd thing Frank accidentally(?) added to bash completion.
Fix bash completion for --prince=FILE. Closes #1020.
bash completion: Allow ':' instead of '=' for --prince=FILE. See
#1020.
MPI/fork: Mute dupe "slow loading" warning messages for NTLMv1.
PRINCE: Ensure session-save does not store a position we never
reached. Not sure there was a problem but better than sorry.
PRINCE: Add rules support. This is very slow right now because we run
each word through all rules instead of the other way round. Closes
#1019.
Add a format that is based on dummy but use no encoding at all.
ciphertext == plaintext. This is easier to use for some tests.
Some --list OpenCL tweaks for Apple.
Cosmetic --list CUDA tweak for cc 2.1.
Add a comment in plaintext format. This format is faster than dummy if
using same max lengths.
Drop some weird garbage from Makefile.in
Support -DSYSTEMWIDE using Autoconf --with-systemwide. Shared binary
directory defaults to /usr/libexec/john unless you use the --prefix
option to configure [which also implies --with-systemwide].
PRINCE: Updates from upstream.
logger.c: Only flush stdout if we're indeed running fork. It should
not be needed for MPI.
Minor tweak for SecureMode = Y.
Fix p/s counter for GPU generation.
PRINCE: Enable hybrid mask mode.
Various fixes for PRINCE hybrid mask mode.
Add a newly needed GMP function for emulation.
Some file locking tweaks: Ensure a LOCK_SH before pot sync was not
interrupted by a signal (timer). This should not matter much, if at
all. Also show whether locking is supported or not in
--list=build-info.
Add some file locking debug output for -DLOCK_DEBUG and also have it
imply -DPOTSYNC_DEBUG.
Add a flock-test script to unused.
Change a couple #ifdef POTSYNC_DEBUG to LOCK_DEBUG for consistency.
Simplify pot-reload file open. This should really not make any
difference in the end (we're doing the same things) but it looks
nicer and it no longer feels like we're missing a call to close()
(as opposed to fclose() which we do call).
Make it possible to *completely* disable pot syncing just by editing
john.conf. Also clarify some descriptions.
Plaintext format: Add a test vector including spaces, and some
comments.
PRINCE: Enable use of mmap with loopback, plus various bugfixes.
Fix some logging that happened before log_init() so never made it into
log.
Finish the alternative fcntl() file locking. After having consulted
Solar, we also make it the default.
Improved -DLOCK_DEBUG a little.
BFEgg is FMT_NOT_EXACT. See #1045.
BFEgg should have a max. password length of 72.
Drop FMT_NOT_EXACT from BFEgg again, and document (in source) the
optional per-run alternative --keep-guessing. See #1045.
Tweaks and a bug fix for fcntl locking.
Update some obsolete information in README.mpi.
Clarify description of FMT_NOT_EXACT in formats.h, and drop that flag
from CRC32 format. That format should be run with --keep-guessing
option instead (if/when actually needed). Also drop some comments
from formats so they don't hit a "git grep FMT_NOT_EXACT" while not
actually having that flag.
Mute clang compiler warnings about unused variables (that we can't
drop cause we need the sizeof() them) in gpg2john.
Fix usage blob for --prince-mmap, a restriction was dropped.
The --stress-test option did not work very well with OpenMP formats
that have things like "self->params.max_keys_per_crypt *= omp_t"
since this would be evaluated before each test and figures would
soon get silly. So we save them and restore them. Also applies to
plaintext_length as that might be eg. "*= 3" for UTF-8.
Update doc/OPTIONS with some missing bits and pieces.
Work around a very strange MPI segfault when trying to resume a
session that does not exist.
Fix a bug that was introduced with the ShowUIDinCracks option, even
when not enabled. pwdump-format input files ended up showing random
garbage.
doc/OPTIONS, tweak description of --keep-guessing.
ShowUIDinCracks: Honor --field-sep-char.
CUDA md5crypt, clean salt.
Add salt_hash() to a couple of formats. See #809.
AC: Rename --disable-native-macro to --disable-native-march which is a
whole lot less confusing. Also ensure that --disable-native-tests
always implies --disable-native-march.
AC: All x86 cross-compile tests were busted and returned true for
anything.
Document a problem when using Ubuntu 12.04 with modern (AVX2)
hardware. Closes #1051.
PRINCE: Updates from upstream.
Always use mem_alloc(), or check result of malloc(), for good measure.
Our "mute ASAN" fix in bench.c affected benchmark speeds a whole lot
for fast formats. This mitigates it at least enough not to show
slower than real-life speed (compared to mask mode).
DES-opencl: Use mem_alloc wrapper.
Update Unicode external dumb/repeats modes for Unicode 7.0, and add
some codepages for possibly dealing with "Equation Group" hashes as
published by Kaspersky. All generated from the Unicode Database.
Update doc/ENCODINGS.
Fix bogus include paths (using quotes where there should be brackets).
Ensure Makefile dependencies for opencl_DES_hst_dev_shared.h
DEScrypt-opencl: Bugfix for dupe salts. The list of binaries for a
given salt may have NULL entries (already cracked).
OpenCL: Ensure that we get AMD-specific functionality even if JtR was
built with nvidia headers, and vice versa.
Add a few more vendor-specific OpenCL macros in case they are not
present in headers.
DEScrypt OpenCL: get rid of a warning about comparison of integers of
different signs.
Cosmetic tweak (on error) for fcntl locks.
OpenCL: Use locks when reading/writing cache files.
memdbg: Fix calloc bugs. Closes #1062.
DES-opencl bugfix. I got "Get key error! 50 1575" until I did this,
and with this fix it cracked a hash at that point.
Copy test vector plains to full-size buffers outside of hot loops so
we get a better raw speed benchmark figure. Closes #1054.
Add CRAM-MD5 support to HMAC-MD5 format, using the raw Base64 strings
prepended with a Hashcat-compatible tag. Closes #1018.
We've had an odd prototype for mem_calloc() ever since implemented in
36416c5. As much as I hate this no-op commit it makes it easier to
import code in the future.
Fix regex.h for new path of rexgen header.
hmac-SHA384 bug fix. Closes #1063.
Fix a bug in hmac-MD5 and hmac-SHA1, and unify HMAC code.
Revert recent changes to HMAC formats and make the correct fixes.
Better fix for #1063 (the previous fixes were OK but used larger
buffer sizes than necessary).
Disable raw-sha1-linkedin if SHA1_SSE_PARA > 3. Closes #454.
Bug fix for edge cases in wordlist mode using mmap(). Hopefully
addresses #1025.
Bug fix (ASAN) in HMAC-MD5 for CRAM-MD5 conversion. See #1067
Add our own strnlen() unless system has one.
Add a self-test for catching buggy SIMD implementations using 0x80 as
end of data. 0x80 can be anything, for example a euro-sign in
CP1252. You can't ever use it for detecting end of data!
XSHA512: Fix a bug that would truncate any plaintext containing 0x80.
MSSQL12 SIMD support. There's some overhead in set_key() that's hard
to work around without writing totally unreadable code.
MSSQL12: KISS fixes for SIMD: Simpler buffer cleaning and use flat
buffers. Speed is about the same (or better) and code is much
simpler and potential bugs are squashed before they showed up.
Replace more deprecated des_ methods and calls with the DES_
counterparts.
Fix bogus line endings in cryptsha256_common.h (it had a disgusting
MIX of LF and CRLF).
sha256crypt: Allow - but truncate - salts longer than 16.
sha256crypt-cuda: Bump max length to 23. See #1077. This format
probably should be able to do 24, but then it loses some in the Test
Suite due to a bug somewhere.
Pending core change in cracker.c. Ensure get_key() is not called (via
status.c) after clear_keys() was called. Closes #1076.
Pending core change in cracker.c. Ensure get_key() is not called (via
status.c) after clear_keys() was called. Take 2. Closes #1076.
Drop a few empty clear_keys() functions and use fmt_default*
Revert "bcrypt / opencl: created a BF_common set of functions / data"
Enforce C89 for gcc-5.x (it defaults to C11). See #1093.
Notify user of ASan affecting speed if she tries to benchmark (we
already did for -DDEBUG). I have ended up chasing non- problems a
couple of times because I forgot I was running an ASAN build o.O
Move our strnlen() function to jumbo.c, where we have other such
functions. Basically, misc.c is for our "own" functions while
jumbo.c is for functions that many systems already have, but some
systems do not. Like in this case: We only implement the strnlen()
function unless it is available in libc.
Revert "siemens: only validate a 1. Since we now have split, a 0
should not be valid any more"
MSSQL12 bugfix for non-MMX/SSE2
Add a bunch of known mappings between OpenCL driver version and
Catalyst driver version (and name).
OpenCL, --list=opencl-devices for Catalyst (cosmetic)
Drop the "[CPU]" after OpenCL version number, it's redundant.
Revert a test vector in siemens S7 format to it's original format.
Cosmetical changes to OpenCL SHA512 formats: PLAINTEXT_LENGTH was used
in a confusing way. Change to match our conventions. These changes
are verified with TS for good measure.
Merge an optimization for HH() in md5.c originally commented as "Help
the compiler detect a common subexpression between steps in round
3."
MD5_std.c, md5_go.c, md4.c, NT and some GPU MD4/MD5: "common
subexpressions in round 3" optimizations.
sse-intrinsics.c: Use _mm_set1_epi32(n) instead of
_mm_set_epi32(n,n,n,n) when applicable. This is 100% cosmetical.
Refactor MMX_COEF -> SIMD_COEF_32
MSSQL12: Avoid build warnings on non-SIMD
Add README-jumbo on top of README.md
OpenCL: More use of shared code.
Change mem_alloc_tiny() to malloc/free for large buffers in a bunch of
formats. This mitigates memory leaks when running --test with a huge
number of threads (eg. MIC/Xeon Phi) or with --stress-test. It
matters less for a real crack run. I picked some of most common
formats here plus the ones with largest OMP_SCALE figures for a
starter.
Dynamic: Use malloc/free for buffers. This fixes the real show
stoppers, but there's still plenty of memory leaking when running
eg. "../run/john -stress-test=0 -form:dynamic".
Use malloc/free for buffers; Another bunch of formats.
Mass refactoring of saved_key_length -> saved_len to ease scripted
changes.
Use malloc/free for buffers; Yet another bunch of formats.
bench.c now resets the Unicode system, formats need not care.
Revert a torrent of trigger-happy-commits and start using
posix_memalign() or aligned_alloc() for mem_alloc_align - drop the
extra pointers.
Waste a couple of cycles for each alloc just to mute the ridiculous
compiler warning "possibly uninitialized variable" - which is isn't.
Fix a couple of ASan crashes caused by erroneous $tag$*.
Avoid re-declaring _XOPEN_SOURCE (core code clash with autoconf)
If mem_alloc_align() fails, exit with message telling what size was
requested.
OpenCL fixes. More unifying of SHA1 ahead.
RAR5 OpenCL bugfix: Wrong "cost" (iteration count) reported due to
casting to incorrect (GPU side, should be core side) salt type.
OpenCL shared SHA1 and MD4/MD5 cleanup and bugfixes.
AMD bug workaround re-implemented in new shared SHA1 for OpenCL.
Fix OpenCL formats for strtokm(). See #1108.
Fix for that stupid AMD driver bug workaround for SHA1, for mixed
vector/scalar formats.
Use -Og for debug targets if compiler supports it. Closes #1113.
GPG-opencl failed due to changes half-assed merged from CPU format.
Closes #1119.
Change strok() to strtokm() in all formats but SKEY. See #1108.
It turns out a bug workaround for Catalyst 14.9 *triggers* an other
bug in older drivers... Doh. Addresses #908.
Change strok() to strtokm() in shared files that were missed. See
#1108.
PDF had a `strtok (` that didn't get replaced. Closes #1108 again.
OpenCL: Implement an optimized SHA512 for the case where half of the
block is zero (as in PBKDF2). Just a slight boost, I guess the
compiler did much of it already.
GPG: Needed to treat $gpg$* as the effective tag. And bump plaintext
size.
GPG: Bump max length to 125, and fix some code to adopt to
PLAINTEXT_LENGTH. The OpenCL format already behaved well in that
aspect but had some other non critical bugs leading to suboptimal
code. I also unified some code to ease comparing side by side.
GPG OpenCL: Alternate leaner code, trying to make it work on more
nvidias.
GPG OpenCL: Much leaner code. Still does not work on all nvidias.
GPG OpenCL: Disable leaner code for nvidias.
Disable "cost" support in CUDA sha2crypt formats. They were buggy and
not trivial to fix. Closes #1118.
Strip format, fix an ASan regression from 70f3b95a (I guess)
Cosmetic: Address clang warnings. Closes #1126.
Fix a "binary() returned misaligned pointer" in phpass/dynamic. See
#1127.
AC: protect a variable with quotes in some tests.
OpenCL raw-md4: Correct mask mode behavior when GWS is supplied. We'll
use the figure as-is but we still print a message about internal
generation.
Add some debug/benchmark stuff to raw-md4-opencl. For GCN and Maxwell,
I see no difference at all between different versions of the HH()
optimization - or not using at all.
OpenCL raw-MD5 GPU-side mask: Change GWS divisor to a more suiting
figure. This is significantly faster (on both GCN and Maxwell) but
still a compromise: Both auto-tunes to 4M, the HD7970 works best at
8K and Maxwell at 16K. We need to auto-tune *with* candidate mask!
SHA256 OpenCL: Mute complaint from picky compilers
pass_gen.pl: Do not list formats as supported when they are not.
Closes #1132.
mem_calloc_align had its parameters reversed. Not that it matters.
Change calloc_tiny to calloc/free in many formats. See #1110.
Fix a bug introduced in b9e13c38, closing #1139.
Change calloc_tiny to calloc/free in 14 formats. See #1110.
AC: Include CPPFLAGS when creating fmt_externs.h and fmt_registers.h
just in case it matters in some situation. Closes #1137.
Fixes for building "icc .S files". See #1065.
Update the icc pre-built see-intrinsics.S files, using the icc on
super: "icc version 14.0.0 (gcc version 4.4.7 compatibility)" Closes
#1065.
Fix a bug in MD5 introduced in 2e33cfd. Closes #1142.
Fix a copy/paste bug in DMD5. Closes #1143.
Most OpenCL formats: Auto-tune in reset().
Bugfix in o5logon-opencl.
Fix GPG-opencl for nvidias.
Optimizations for oldoffice-opencl that are also workarounds for some
AMD driver bugs.
OpenCL: The recent AMD change for PUTCHAR re-triggered the damn AMD
bug in oldoffice. Introduce a new macro for preferring the non-cast
alternative but default to the cast one.
Stop Lotus5-opencl auto-tune from overflowing on fast devices.
Lotus5-opencl, auto-tune limit.
README-OPENCL update.
Common OpenCL auto-tune: Temporary changes to handle auto-tune with
GPU-side mask. See #1136.
Common OpenCL code messed around with bench_running flag, this lead to
problems and should no longer be needed anyway.
mask.c: Allow actually using some other mask than options.mask
(possibly for auto-tune or benchmark).
Fix search/replace mistakes in comments in OpenCL MD4.
encoding_data.h: CP720 had (lack of) case conversion incorrectly
specified. Closes #1158.
Support fallback to older clang syntax for Address Sanitizer.
Fix a segfault when --users option resulted in no hashes loaded, and
an encoding was used. Closes #1164.
Prince format lacked some length checks. Closes #1163.
Fix a "theoretical" bug (ASan) in Prince. Closes #1162.
Fix alignment issues. Closes #1133.
Fix a bad bug introduced by f6af7d7: --show=left was broken for all
formats but dynamic. Closes #1130.
Refactor salt() -> get_salt() and binary -> get_binary() in most
(Jumbo) formats that did not already use those names.
Do not allow negative numbers for --mkpc. Closes #1166.
Prefer posix_memalign() over aligned_alloc() as a work-around for an
ASan shortcoming. See #1159.
Complete the previous patch: Prefer posix_memalign() over
aligned_alloc() as a work-around for an ASan shortcoming. See #1159.
Comply with the strange restriction of aligned_alloc() that "size
should be a multiple of alignment".
Less intrusive implementation of --mkpc. We do not alter format's view
of max_keys_per_crypt, just cracker.c's. Closes #1167.
--mkpc is now a no-op for --test so do not allow it.
Disallow some options unless we are running a cracking mode.
Handle --mkpc in an even safer way. This handles the situation where
max_keys_per_crypt changes during a run.
Raw-sha1-ng and shared intrinsics code incorrectly reported using AVX,
while they actually use at most SSE4.1 if no XOP.
Change the dump_stuff() debug functions so they don't spew out
warnings.
Add a pseudo_intrinsics.h function, for abstracting intrinsics from
the actual vector width.
raw-sha512-ng: Use pseudo-intrinsics.
raw-sha256-ng: Use pseudo-intrinsics.
raw-sha1-ng: Use pseudo intrinsics.
Q'n'D fix for a problem with cprepair.
vtestz was not available on Travis' clang.
Fix regression problems with clang from recent patches.
Drop an extraneous paren from pseudo-intrinsics header.
Fix a benign bug in raw-sha1-ng
Drop an unused variable in raw-sha256-ng.
Fix an issue with non-AVX SSE4.1 or SSSE3 systems Closes #1180.
Fix incorrect function declarations for cmp_all() and cmp_one()
Drop experimental code for OMP_SCALE, closing #1181.
When we do not request membdg, really do not let it interfere with
anything at all. See #1125.
Fix for cross-compiles on OS X, using SSE4.1 but not AVX.
Add a parameter to configure, --enable-experimental-code, that sets
USE_EXPERIMENTAL macro. This way we can merge incomplete features
but have them disabled unless user asks for them.
Make it possible to leave Dynamic format out entirely from a build.
And do so by default for AVX2, unless the option
--enable-experimental-code was given to configure.
Fix for the AC handling of AVX2 vs Dynamic.
Use pseudo-intrinsics for sse-intrinsics.c, making nearly all
remaining SIMD formats AVX2/AVX512 capable.
Various fixes for AVX2.
Fix NT2 format for AVX2.
Drop SIMD_COEF_BITS and just divide by SIMD_COEF instead. The
optimizer will change it to a bit shift anyway and code gets easier
to understand.
Fix more hard-coded vector sizes. And set all the SSE_PARA's to 2 for
__AVX2__, for ironing out problems.
Wpapsk bugfixes for AVX2. Practically 2x boost over AVX.
Fix hardcoded SIMD width in Office format.
Hardcoded vector widths in Dynamic. Just the top of the iceberg. Now,
dynamic_30 works. Not many more of them...
Hardcoded vector width in alignment.
Finally nailed the MD5 problem for AVX2. Now all raw formats work.
Fix a load of hardcoded vector widths.
Fix algorithm names for AVX2/AVX512.
CPU_NAME -> SIMD_TYPE
More fixes for hardcoded vector width.
Fixed SAP/H width issues.
Fixed IPB and mscash2 width issues.
Fixed mysql-sha1 and nsldap width issues.
Slow workaround for Office format. I have yet to get the original
implementation to work with AVX2 - something is not right with the
width macros.
Vector width fix for md5crypt. But it still doesn't work.
Fix hardcoded vector widths in RAKP.
Fix hardcoded vector widths in salted-sha1.
Fix hardcoded vector widths in sunmd5. Still does not work with AVX2.
Fix hardcoded vector widths in SAP/B.
Fix regression problems from Lei's recent fix.
Finally fix the inherent problem with raw-sha1-linkedin's source(),
that would not cope with certain combinations of vector width and
interleaving, and also did not allow crippled test vectors.
Fix 64-bit index calculation for widths > 4.
Fix hmac-sha256 vector width.
Fix hard-coded widths SAP F/G format.
SunMD5, fix hard-coded vector widths. Closes #1191.
Oracle11, fix hard-coded vector widths. Closes #1190.
Finally nailed md5crypt vector width. Closes #1192.
It appears we can use same PARA values for AVX2 as for AVX.
Add a few more easter egg format classes: -form:avx, -form:avx2 and
-form:avx512.
Some cleanup in pseudo_intrinsics.h, and an optimization for MIC
emulation of _mm512_loadu_si512() that should do lots of good in
most cases.
pseudo-intrinsics.h cosmetical/whitespace/comments.
sse-intrinsics.c whitespace/comments cleanup. And finally drop the old
80x4 SHA1 that we stopped using long ago.
Dynamic: Change a few hardcoded width figures to correct formulas.
These changes make a few more formats pass self-test. See #1189.
Width fixes in Dynamic. See #1189.
Algorithm name tweaks.
Minor algorithm name fixes.
More algorithm name fixes. We are not displaying "block loops", it's
just confusing.
More algorithm name fixes. Some were completely backwards.
It turns out I'm the one who was backwards w/ algorithm names.
Last bunch of fixes to algorithm names.
Yet some algorithm name fixes.
Drop confusing mentions of "sse2" in config. Closes #1193.
Add an ifdef'ed out scalar version of vtranspose_epi32() (in the AVX2
section) for reference and benchmarking. See #1201.
The _mm*_i32gather_epi32() intrinsic has different parameters for
different architectures:
Cleanups for raw-sha1-ng. Drop vtranspose_epi32 from
pseudo-intrinsics.h and revert the 4x code to a format-local macro
with its original name. Also re-write some ugly width-dependent code
to be more canonical and fix some white space problems.
Separate int128.h from mpz_int128.h, and fix raw-sha1-ng in that
regard.
Add some documentation about AVX2 vs. Dynamic format.
Auto-disable dynamic format for k1om (MIC) also.
AVX2 fixes for 32-bit builds. See #1205.
Fix for legacy generic build after AVX2 support was added.
Fixes for generic builds.
Fixes for generic. See #1205.
Some plugins could not just be deleted, so make them non-plugs. Closes
#1170.
Drop the binary plugin interface that no-one uses. Closes #1124.
Fix a typo in configure.ac
Allow building with no plugins present. Closes #1207.
Add some documentation about how to disable AVX2.
Autoconf: Add support for detecting AVX512. Also fixes a bug with XOP
erroneously regarded as better as AVX2.
Autoconf: Move the OS X as(1) quirk prior to all feature tests.
Autoconf: Do not test for AVX512 unless we have AVX2.
Drop dupe macros from pseudo_intrinsics.h and tweak non-XOP rotates.
Cosmetic change (unify code) to pseudo_intrinsics.h.
wordlist.c: Use pseudo-intrinsics for SIMD mgetl().
Fix a bug in vroti_epi16() (which is not used yet anyway).
sse-intrinsics.c: Implement the "MD4/5 common XOR" but leave it
defined out since it seems to be slower no matter how I do it
(reason yet to be examined).
MD5: 9% boost just by moving code around (this was with gcc 4.8.2 and
AVX2)
Pseudo-intrinsics tweaks for AVX2.
Change a few int's to unsigned in sse-intrinsics.c. 1% boost in eg.
wpapsk and md5crypt.
Revert some intrinsics tweaks that had dubious benefit.
OpenCL RC4: Use restrict pointers.
Autoconf: Detect AVX512BW as well.
AC: Assume that there's no point in testing for AVX512BW unless we
found AVX512F.
AC: Same as previous commit but for cross compiles.
Drop a vim swap file accidentally added in 2f8bc4871
Correct some algorithm names.
Fix the length stuffing in dynamic, taking us a good bit closer to
AVX2+ support. See #1189.
Fix more hardcoded width crap in Dynamic. See #1189.
Cruical AVX2+ fix for dynamic. Fixes most (all?) segfaults but some
formats still fail self-test. See #1189.
Yet another bunch of width fixes in dynamic. See #1189.
Possibly the last bunch of width fixes in dynamic. Closes #1189.
Do not disable dynamic format for AVX2 anymore. Closes #1189.
Drop obsolete dynamic vs. AVX2 notices.
Dynamic, change lots of variables to unsigned, enabling optimizations.
Ensure unsigned divisions with SIMD_COEF_32/64 for faster code.
Major white-space clean-up to common-opencl.[ch] First: indent -kr
-i4 -ts4 -nlp -nbbo -ncs -l79 -lc79 -bad -il0 common-opencl.[ch] and
then: astyle --style=kr -t4 -U -H -p -xC79 -c -k3 -z2
common-opencl.[ch]
Fix a bug in --list=opencl-devices that caused "Max clock (MHz)" to
show a totally bogus number on some (rare) devices.
Drop obsolete header from wordlist.c (we now use pseudo- intrinsics.h)
Fix a logic error in #ifdefs for including mman.h. This should close
#1214. It's strange we did not get complaints on many systems.
Add an experimental clone of raw-md5 that uses flat buffers for SIMD.
For now it uses Tavis' SSE set_key() from his raw-sha1-ng format,
but this will be dropped in favor of some upcoming code in
sse-intrinsics.c. See #1220.
Reformat Jim's unreadable 650-column wide comments in
see-intrinsics-load-flags.h, and add a few more flags (yet to be
actually implemented) to the enum. See #1220.
Bug fixes for raw-md5-flat. And drop the SIMD set_key().
Fix mixed declarations and code in pseudo-intrinsic.h
Fix memdbg for alignments larger than 16. Also fixes some other minor
problems (warnings). Closes #1200.
Always define _DEFAULT_SOURCE when defining _BSD_SOURCE. Closes #1227.
pkzip: Fix a cast that could lead to undefined behavior from
overflowing signed integer. Closes #1232.
OMP_SCALE tweak for raw-md5.
Promote "nt2" to be main "NT" format. Rename old "NT" to "NT-old".
Closes #1226.
NT OpenMP overhaul. This format should not run in HT threads.
listconf.c: Always call fmt_init() now that OpenCL formats are fixed.
03404dfd broke for any system using gcc but not glibc. Just comment it
out for now.
Fix a bug in pp.c where munmap() was called even when we do not
HAVE_MMAP. And add a warning notice when building without mmap.
AC: Change the way we look for mmap(). Closes #1214.
Add a format_all_done() for silencing memory leak checkers. Closes
#1244.
Fix a gigantic memory leak in dynamic when using --show and an input
file containing many different formats. See #1244.
Fix minor memory leaks in dual-use formats. See #1244.
Define _POSIX_SOURCE for glibc builds, for exposing fileno(3).
Let AC handle definition of _POSIX_SOURCE. Closes #1263.
Add a self-test fail for get_key() returning NULL.
Improve StatusShowCandidates so it logs the exact candidate number for
a crack. Screen output will still be rounded up to batch size.
Closes #1269.
memdbg: Fix alignment up to sizeof(vtype) for 32-bit builds. Closes
#1270.
memdbg: We were adding too much padding for 32-bit. It worked but was
wasteful. See #1270.
Revert "crypt-descrypt: for length-13, we never disable, since they
are in ST code"
Fix the slow AVX2 bug workaround in Office 2013 and add other
optimizations to boot. 65% speedup for -cost=2013:2013 (and now an
actual 2x speedup over AVX). Also hopefully fixes latent bugs with
interleaving.
Stop requiring libz. It's only needed for pkzip format and gpg2john.
Add some missing codepages to opencl_unicode.h
DMG (debug): Use fcntl locks if we have it.
Update .travis.yml
Update README.mozilla for mozilla-ng format
Update INSTALL-UBUNTU for latest rexgen (and drop obsolete libs).
Drop some artifacts from old MMX support.
Drop @Z_LIBS@ from Makefile.in - or it will be added either twice or
when not appropriate.
Revert "Drop @Z_LIBS@ from Makefile.in - or it will be added either"
Fix OS X as(1) workaround in cases where CC is not "gcc". Closes
#1293.
Minor and cosmetic tweaks for raw-sha1-ng.
krb5pa-sha1 formats: Salt cleansing, for pot sync to work properly.
Fix OpenSSL/CommonCrypto output. Closes #1299.
options.c: Bail with error if an invalid field separator char (eg.
multi-byte character) is used.
Reduce scope of a pot-sync variable.
sunmd5: Fix #1301 and also implement various changes for OpenMP that
was discussed on john-dev.
Fix a repeated bug in many SIMD formats that had min_keys_per_crypt
set to 1 or to SIMD_COEF without para multiplier. It's supposed to
be set to whatever number is calculated at minimum, so for SIMD
formats it should be (SIMD_COEF * SIMD_PARA).
OMP_SCALE tune for sha1crypt. See #1303. Higher numbers may be
slightly better but impacts self-test duration too much.
Work around AES-NI problems with 32-bit builds.
Fix misaligned return from binary() in IPB2 and Lotus5. Closes #1291,
closes #1304.
Add struct alignment in sunmd5 that was missed in 7910681c
gpg2john: implicit int declaration.
Add another solution to #1093. This make it possible to build using
gcc 5 without --std=gnu89 (although I kept the latter for now). See
also #1250.
ALWAYS_INLINE: Revert last commit and implement a different solution.
See #1093.
keyring: Alloc a huge buffer instead of trying to create it on stack.
Works around a problem on some 32-bit builds and does not affect
speed anyway. Closes #1292.
pufferfish: Fix incorrect source file permissions.
Add missing FORMAT_NAME for streebog formats.
Stribog: Properly emulate epi64 intrinsics for 32-bit builds. And
disable format completely unless SSE4.1 is available. Tested on
32-bit OSX. Closes #1331.
Sledge-hammer bodge for pp.c fileno() warning in Cygwin.
Default to not enable OpenMP for fast formats. Closes #1325.
Fix Pomelo algorithm_name for SSE2 case. I believe the format uses
SSE2 in single-hash calculation, so it says 1x.
Stribog formats use SSE4.1, but not for doing several hashes in
parallel. So change algo to 1x.
Do not treat SHA256/512-ng formats as "fast" ones when it comes to
OpenMP.
truecrypt_volume2john: Add a missing LF
Revert "Sledge-hammer bodge for pp.c fileno() warning in Cygwin."
Repeats16/32: Increment char before length (b will now come before
aa). This greatly benefits formats where length variations cause
thread (or branch) divergence.
Fix a bug in rar2john for decoding non-ASCII filenames when stored in
compressed form. Did not affect crack, just meta data (eg. Single
mode).
Tweak error output in wpapcap2john.
wpapcap2john: Add some rigidity against bad input. Closes #1340.
Finally start defaulting to UTF-8. Closes #1215.
Pomelo: Drop some checks that are always false (unsigned < 0). Closes
#1343.
keystore2john: Drop some checks that are always false. Closes #1342.
Fix a problem with debug builds and gcc 5.x. Closes #1286.
Bump max length in GOST R 34.11-94 format. There's no reason for us to
artificially limit it. Also fix HMAC-GOST code (not yet used).
Stribog: Don't compare too much in cmp_all() - but on the other hand
*do* compare all of the hash in cmp_one().
Many formats: Don't compare too much in cmp_all(). There is a reason
we separate cmp_all() and cmp_one() for crying out loud. Hopefully
this Q'n'D fix compiles to a simple binary[0] == crypt_key[0] in
many cases.
BFEgg has a binary size less than 8, do not memcmp ARCH_SIZE.
mem_alloc_tiny(): If -DDEBUG or -DMEMDBG, never return better
alignment than requested (for triggering bugs). See #1195.
Truecrypt: Fix a debug code buffer that was undersized.
Fix non-AVX2 builds after the previous patch.
Add SIMD_PARA_SHA256/512 macros to mic.h and x86-sse.h.
Dynamic: SHA2 interleaving fixes.
Show SHA2 interleaving factor in algorithm names if applicable.
Do not use "pragma GCC optimize" for ASan builds.
SHA512 SIMD interleaving bug fix.
sha512crypt: Interleaving fixes. Tested with para 3 so far.
sha256crypt: Interleaving fixes and some unification with sha512crypt.
Tested with para 2 & 3 so far, and AVX & AVX2.
SHA2 interleaving fixes. More to come.
sse-intrinsics.c: Asan builds was unbearably slow without using
#pragma GCC optimize... To get that, use Asan and build with "make
debug".
Fix non-OpenMP build problems introduced with b96ed88f.
Add all aliases to --list=encodings, and fix bash completion for
multiple "or". Closes #1352.
HMAC-SHA2 formats, interleaving fixes (not complete).
XSHA512 interleaving fixes (not complete).
SHA2 interleaving fixes.
Drop redundant SHA256/512_BUF_SIZ macros. They are all 16 so we don't
need different ones.
SHA2 interleaving fixes.
AIX-SSHA512 bugfix.
SHA2 interleaving fixes.
Blackberry: Interleaving bugfix, and correct algorithm name.
rawSHA224/256 formats: Fix interleaving (now passes Test Suite).
rawSHA384/512 formats: Fix interleaving. Still fails but I'm pretty
sure the problem is in sse-intrinsics.c. Except I can't find any
problem there...
Fix a SHA512 interleaving bug in sse-intrinsics.c. Lei did the right
thing, then I blew it.
Interleaving bugfix in Drupal. Still doesn't work.
Final interleaving bugfixes in Drupal.
Interleaving bugfixes in MSSQL12
Interleaving bugfixes in XSHA512.
Minor regression fixes after SHA2 interleaving battle.
Add a testparas.sh script. See #1297.
testparas.sh LF and OMP fixes.
Refactor MD5_SSE_PARA -> SIMD_PARA_MD5 and so on. See #1217.
Pomelo and SunMD5: Fixes for non-SIMD builds.
SybaseASE: Handle truncated key length. See #1367.
Implement SSEi_FLAT_OUT for simpler format code. SHA512 and MIC may
hopefully use the new scatter instructions here.
Use new SSEi_FLAT_OUT in formats that did marshalling in caller.
Bump Keepass max. length to 125.
Fix a minor OMP_SCALE regression from 87fab5b.
sse-intrinsics.c missed LF on last line from 84bd73e0c. I've seen
compilers choke on that.
Use vscatter for SSEi_FLAT_OUT in MD4 and MD5 too.
Add codepage.pl as seen on john-users mailing list.
testparas.sh: Ensure using OMP_SCALE=1 while testing. Also change all
formats to use any existing OMP_SCALE if defined. This is for
automated testing (obviously not limited to testparas.sh).
Fix SSE2 vswap64() macro. We change in-place *and* return the result.
See #1373.
More #ifndef OMP_SCALE wrappers. Last one-liner wasn't good enough.
Add SIMD support to new Oracle 12c format.
sse-intrinsics.c: Wider interleaving loops, and as a result use
non-array temp variables. See #1217.
SHA1 intrinsics: Drop a whole array of redundant temp. We can use the
existing pad array! And decrease SHA1_PARA to 1 because that's
faster now.
Fix bug for SSEi_FLAT_IN introduced in b3fb17c7b, and drop yet another
temp variable. Closes #1375.
sse-intrinsics: Revert to using tmp[SIMD_PARA].
SHA512 intrinsics: Decrease the w[80] pad to w[16] using the same
sliding-window technique used in SHA1 and SHA256. Just a 3-4% boost
here but may gain more on some systems. See #1217.
Unify SHA256 and SHA512 intrinsics. Effectively a no-op, but simpler
code. See #1217.
Add an EMMS at HDAA MMX function exit (icc warned about it).
Mute a warning from some compilers about see-intrinsics cast.
Intrinsics: Safer casting (union) between vtype and integer.
Replace testparas.sh with testparas.pl, with Markdown table output,
ready for pasting in GitHub.
Add non-OMP figures in testparas.pl
Improve testparas.pl for quicker run and real non-OMP figures. This is
very hacky but does the job.
krb5pa-md5: Improve comments on input format.
Keepass: Avoid a compiler bug related to SALT_ALIGN. Closes #1284.
Add CRC-32C format with SSE4.2 support, just for trying it out. See
#1379.
Use a unique tag for CRC-32C.
Re-enable SIMD for Truecrypt/SHA512. Closes #1421.
Fix a bug in last commit spotted just by review. We need test vectors
for this! See #1421.
Add error handling for keyfile operations in truecrypt.
doc/MASK: Fix a typo and do not use tabs.
Drop the separate CRC-32C format (CRC-32 format now hosts both).
Drop the recently introduced Lineage format. It wasn't ready.
Add "cost" support to CRC-32 format, mainly to facilitate benchmarking
CRC-32C separately (using --cost=1).
Whitespace/cosmetic in raw-md4-opencl
Add GPU-side mask mode to raw-md5.
Drop some obsolete/redundant stuff from CRC32 format.
Tweaks to README.md: Slightly smaller heading, put license last.
Fix a segfault in some OpenCL formats when ran after another.
raw-sha512-opencl: Fix re-init bugs.
Fix for plugins that are #ifdef _OPENMP (they were never included).
OpenCL formats: Fix a problem with --list where fmt_done() is called
without create_clobj() being called first. Closes #1237.
Drop an old kludge for nvidia rotates and fix weirdness in pwsafe code
(cosmetical).
Core merge for Makefile.legacy. Git lost track of the connection with
master:src/Makefile after some screw-ups we did in the past.
Update rexgen.h for latest librexgen.
Support Tera prefix for C/s numbers.
Revert bogus change of raw-md5-opencl format tag, plus some minor
(cosmetic) fixes.
Add generic pbkdf2-hmac-md5 OpenCL format.
Add SIMD support to pbkdf2-hmac-md5. Closes #1446.
Add 1000x test vectors to pbkdf2-hmac-md5.
OpenCL raw-md4/5 formats: Correction for assert.h, it was given in
quotes instead of brackets.
Another try handling the CircleCI problem with MD5 internal CTX
struct.
Add 'const' to our own MD4 and MD5 update functions.
Mute some compiler warnings (gcc 4.4.7, possibly false positives).
Add a pbkdf2-hmac-md4-opencl format, for testing purposes.
Correct some confusing format struct names.
Add a pbkdf2-hmac-md4 format, for testing/benchmarking. Also change
testparas.pl to use the PBKDF2 formats for MD4 and MD5 and add some
test vectors so we always do 1000 iterations.
Selectively mute some output from testparas.pl.
Fix for clang not compatible with gcc despite claiming to *be* gcc
(which proves that's a dumb ass claim).
Add const to MD4/MD5 Update functions. I already did this but jfoug
decided to drop them without discussion. Do not do that, I didn't
add them by accident.
MD4/5 const stuff.
#undef MIN/MAX macros before defining.
Add CPPFLAGS to cprepair target.
Drop a dupe macro definition from raw-sha1-opencl
bcrypt-opencl: Only use privat mem (as opposed to local) for Maxwell
and above.
Ignore "Idle=Y" when running an OpenCL or CUDA format. See #1460.
Work around an OSX OpenCL driver bug for Intel HD4000 where profiling
info sometimes end up with end-time == 0. In the cases seen, we can
just ignore it (set end-time to start-time). Let's hope we don't see
more of this bug.
Improve OpenCL version detection.
OpenCL 1.2 formats: Move slow function call out of inner loop.
Add a workaround for what I believe is a driver bug in OS X for nvidia
(seen on GT650M driver version 10.2.7 310.41.25f01). See #1459.
BF-opencl: Use private memory for nvidia sm_30 & sm_35 too.
Turns out only Kepler benefits from using private memory in
bcrypt-opencl. The Maxwell is 6.5x faster using local memory.
OpenCL fixes after #1456 and #1457.
SHA512 OpenCL: Workarounds for OSX' nvidia & HD4000 driver bugs.
Closes #1464 (even though HD4000 now fails instead of crashes).
Unify OpenCL formats / use shared code.
pass_gen.pl: Drop misplaced 'require' lines for Haval. The point of
using 'require' instead of 'use' is we only place them where
actually needed. I can't currently build the Haval stuff from CPAN,
for some reason (fails self test).
Revert "Add build timestamp to --list=build-info"
Add -Wdate-time if compiler supports it. JTR_FLAG_CHECK is a gem!
Add git commit hash to --list=build-info. Also move non-version
strings like "debug" and "OMP" to the *build* info.
I was hoping this would fix a dependency problem with version.h, but
it doesn't. It does update version.h if needed, but listconf.c may
already have decided dependencies being OK.
Fixed dependency problem (I think) with version.h
Ensure "usage" version is same as "--list=build-info".
Drop a level macro that broke all real builds.
We can't use OpenCL 1.2 commands without wrapping them in #ifdef.
Addresses #1470.
If we are a "release build", never show Git hash in version string.
Kludge for ADL device id matching with Catalyst > 14.9 and dual-chip
devices. I'm out of (printable) words for AMD.
Change our OpenCL run-time support macros: APPLE -> __APPLE__
DEVICE_IS_CPU -> __CPU__ And add __GPU__ too. The __CPU__ and
__GPU__ macros are defined by AMD but we make sure they get defined
when not using AMD too.
pbkdf2-hmac-sha512-opencl: Apply some bugfixes from CPU version.
Closes #1476.
Allow an option argument string to contain an equal sign when the
delimiter is a colon. Closes #1481.
Revert 734dc42 and re-implement parts of it in a way that doesn't
force you to use a fkn pager to read the output.
Drop an unjustified chain of ifdefs for debug build warnings in
bench.c
Fix a bug in configure from d9293dc.
Some dynamic formats had the ambiguous text "first 32 bytes". Change
it to "hash truncated to length 32". Closes #1482.
Bugfix for POSIX va_args usage in dynamic_compiler.c. You can't re-use
the va_list, you need to copy it.
See if we can have Travis test OpenCL (CPU) builds.
Fix a perl warning and a missing linefeed in testparas.pl.
testparas.pl: show OMP/GOMP params
2nd try getting OpenCL into Travis
OSX OpenCL: We can't -D__APPLE__ because it clashes with system stuff
when using the CPU device. Refactor to __OS_X__.
RAR3 formats: share about 700 lines of code. See #978.
RAR5 formats: Reject bogus iteration count. Closes #1493.
OpenCL verbosity tweaks.
DEScrypt-opencl: Use "safe goto" for newer AMD drivers. Closes #1496.
nt-opencl: Silence a compiler warning.
OpenCL: Verbosity tweaks.
Core: Always pass database to reset(), if we have one.
OpenCL formats: Adopt to core change for reset().
OpenCL mscash: Adopt to core change for reset().
OpenCL SHA2 formats: Bug fixes after core change for reset().
Mute compiler warnings when building without OpenMP.
Fix -DDYNAMIC_DISABLED.
Fix name case for pbkdf2-hmac-sha512-opencl
Fix typo in Makefiles ($shell) -> $(shell)
Silence warnings about redefining bswap32. See #1511
Fix OpenCL version mismatch in GPU mask formats. See #1508 for
discussion.
One OpenMP pragma missed in 5bd720090
Add --list=build-info to 'make check'. See #1516.
Silence warnings about redefining bswap64. See #1511
Port SXC fixes to OpenCL version.
Port Strip fixes to OpenCL version. And fix a fundamental align
problem with the "unsplit" PBKDF2 salt struct.
Add -list=build-info to CircleCI. Closes #1516.
Strip-opencl: Fix alignment warning. Closes #1519.
Do not trust byteswap.h for things like swap(*x++). See #1520.
magnum decided to return the address holding a pointer instead of the
address it contained. Dubious idea, and did not quite work out well.
Comment out defining DEBUG in build_table.c. Closes #1521.
Boost NT format by a percent or two skipping final add, which is a
very modest first attempt to reversing steps...
More reversing steps for NT SIMD format (and shared MD4 SIMD). Total
boost now 10% from original speed.
Add whirlpool_plug.o to dynacomptest rule.
Reverse steps in raw-md4 format. 12% boost. See #1523.
Ensure out max-length self-tests doesn't make case-insensitive formats
fail.
Fix cmp_all() in reversing MD4 SIMD formats. It would only check 32
bits when reversing steps. We don't have the half baked buffer so we
need to do a full MD4 in cmp_exact() but that wont affect
performance anyway. See #1523.
Reverse steps (more of an early exit) in raw-md5 (SIMD). See #1523.
Reverse last add of constants in SIMD raw SHA1. See #1523.
Reverse final add in all (SIMD) MSSQL formats. See #1523.
OpenCL formats: Do not compile kernel in init(). It slows things down.
Bugfix for reversing final add in SHA512.
Partially revert "Generate more test output for `make check`, for
Travis build clues"
Pacify warning about unused variables in MD5 kernel.
Pacify warnings about unused variables in MD4 and SHA1 kernels.
Pacify warnings about unused variable in NT kernel.
Fix non-SIMD builds of MSSQL formats.
Fix #1533 (and a memory leak while at it). Sorry about whitespace but
it was a horrible mess of tabs and spaces.
Add a heading for --list=format-details. Defined out for now.
mscash-opencl claimed to fully support UTF-8 and codepages, while it
doesn't. This is a bad bug: False negatives!
Fix version.h rule: -N is not a universal option to diff and we don't
need it anyway. Closes #1555.
Fix for when using attribute format gnu_printf instead of printf. See
#1555 and 6406e51.
It turns out even -q is not in POSIX diff. Closes #1555 again.
Fix a bug that prevented NETLM and NETHALFLM to be removed even though
they are plugins. Also prepare for upcoming OpenCL version of LM
format.
Add tag to bare hashes $u -> $$U preparation (if needed). Also fixes
some CRLF issues. See #1541.
Fix for dynacomptest workaround. See #1541
LM-opencl: Make device query error for warp size non-fatal. Also fixes
minor things like format name and benchmark len. Closes #1561.
Print CUDA version numbers in --list=cuda-devices. Closes #1534.
Minor fixes to sha256crypt while trying to nail #1532.
Reverse final add in raw SHA2 formats and LinkedIn format. Closes
#1523.
Linkedin format was accidentally disabled for all non-SIMD builds.
Dynamic compiler: Normalize $password -> $p. See #1543.
Add cmpt_cp.pl, closes #1568.
Some more white-space fixes. See #1567.
cmpt_cp.pl was accidentally put in base directory instead of src.
zip2john: Change default to never use file magic. Closes #1569.
zip2john: Fix usage blob after last commit. See #1569.
editorconfig: Let user decide his tab width. That's the very beauty of
using tabs!
Fix a bug in pot sync found by Christien Rioux, where split is used
twice. Since split returns a static buffer, a strcmp of the two
results always returned 0. Closes #1573.
Improve SSEi_REVERSE_STEPS for SHA1 for another 5% boost. The Linkedin
format can't reverse steps because it needs a source() with larger
part of binary as input to be safe.
Update icc-precompiled intrinsics (compiled on Super).
Fix memdbg bug in mscash2-opencl helper. Closes #1574.
Fix "reverse sum" bug in raw SHA-224/384 and also decrease binary size
in a bunch of raw SHA-2 formats for smaller memory footprint when
loading many hashes. Closes #1577.
MSSQL off by one bug introduced with recent reverse-steps code.
Fix a couple of bugs in MSSQL formats before jfoug finds them ;-)
Work around an OpenCL driver bug in OSX. See #1583.
Rewrite some hairy code in oldoffice kernel. I'm not sure it was legal
(and guaranteed left-to-right) at all but even if it were, some
drivers had problems with it. See #1571.
OpenCL: Add a -D__MESA__ for MESA platforms. And use it to enforce
"safe goto" DES kernel version for decrypt. See #1470.
Since Mesa incorrectly claims supporting OpenCL 1.2, add an autoconf
function test checking for actual presence in the libs found. See
#1470.
Minor fix for the OpenCL 1.2 AC detection stuff.
Fix for non-opencl builds.
Fix a bug in LM OpenCL for use of clGetKernelArgInfo. See #1587.
LM OpenCL: Fix for OSX nvidia. Closes #1587.
Bugfix for selection of LM Incremental mode.
Automagic selection of LM-opencl codepage.
sha256crypt-opencl: Protect some macro arguments with parens. Closes
#1601.
Correct algorithm_name for non-SIMD sha512crypt.
Bump nt-opencl to max. length 27. This adds six additions to each
calculation and increases a buffer size with 8 bytes.
Autoconf: Don't enable CUDA unless user asked for it.
Autoconf: Change --enable-rexgen -> --disable-rexgen (default is we
use it if found; user may want to disable it).
Oracle12c: The SIMD implementation never worked except for index 0 - a
whole loop was missing. See #1607.
CRC32 bugfix: We used a function pointer to crypt_all that was set in
set_salt, but cracker.c and others may have already "cached" its
dereference. See #1607.
Fix for non-SIMD OMP Oracle12c.
Drop old "testpara" make targets (they are obsoleted by testparas.pl).
Closes #1297.
CircleCI forced me into actually testing a non-SIMD build myself and
fix the Oracle12c problems.
Tune lm-opencl for OSX nvidia.
Emit a warning if CUDA was found but not OpenCL.
Update README-CUDA.
Warn if using an 8-bit incremental mode with a 7-bit format. Closes
#1619.
-enc=raw (or -enc=ascii) disables CPstoreUTF8 option. Closes #1633.
Document the fact --loopback now defaults to using rules. See #1655.
Change %zd to %zu in a number of files. Silly.
Regard GPU temp readings of < 10°C or > 125°C as invalid.
Change all code to use our AES-NI (run-time detection) implementation
(with fall-back to OpenSSL). Heaven knows why we didn't do this ages
ago.
Fix aes/ legacy Makefile for recent AES changes.
Revert Office, LastPass and GPG formats to use OpenSSL AES since our
run-time-detecting AES-NI code only handles CBC mode. Closes #1683.
7z-opencl: New kernel, optimized similar to RAR3. About 65% boost and
now faster than oclHashcat.
Boost 7z formats' many-salts speed a *lot*, it's KDF is effectively
unsalted as long as the iteration count doesn't change. Closes
#1679.
Emit a warning if "many salts" benchmark did not test the full
BENCHMARK_MANY number of salts.
Bitcoin: Drop OpenSSL EVP high-level crap in favor of our own AES.
Hopefully fixes #1667.
RAR3 formats: Stop using OpenSSL EVP, see #1686. This ought to give a
noticeable boost, especially for OpenCL.
Add missing header protection wrapper (wtf is that called?) for aes.h.
7z: Add a missing OpenMP pragma for non-SIMD and fix algorithm names.
Add a bunch of test vectors to 7z formats.
Fix bug in 7z for SIMD: Max supported length seem to be 27. Also fix
my own bug with OpenMP allocation. There are still some SIMD
problems so the '#undef SIMD_COEF_32' stays.
Re-write the "extra pot files" code to use a list section. See #1623.
doc/CONFIG: Replace a line that got lost from its section, and add a
bit more details/examples.
Drop an unused variable from encfs_common_plug.c.
OpenCL PBKDF2-HMAC-MD4/5 contrived formats: Use 2x interleaving on
nvidia Kepler.
pass_gen.pl: Add a -vectors option for test vector "source code"
output.
Drop silly warnings from pass_gen.pl
md5crypt-opencl: Prepare for supporting length > 15.
formats.c: Use strcasecmp for checking (most) format names. Also
trim/fix some error output.
pass_gen.pl: Refactor a sub for checking (surrogate) UTF-16 length.
7z: Bugfixes for SIMD. Buffers were not sufficiently allocated for
worst-case scenario. Also move more code into "if (new_keys)".
Closes #1692.
7z: Fix for non-SIMD builds.
Add a macro for detecting "nvidia sm_32 or better" and use it for
enabling Solar's inline PTX for md5crypt format.
OpenCL NTLMv2 & SHA1crypt: Run 2x interleaved on Kepler.
OpenCL shared pbkdf2-hmac-sha1: Tweaks for reducing GPR pressure.
Update Catalyst major/minor -> "version" list.
Drop pufferfish format. Closes #1702.
Don't use __attribute__((max_constant_size())) on OS X, it's not
supported (emits warnings). Closes #1657.
Loopback mode: Never assemble LM halves when target format is
descrypt. Closes #1654 (or so I hope).
Tweak "recommended"/"not recommended" output for AMD versions.
7z: Canonical fix for the confusing alloc formulas. See #1692.
Single mode: Re-write Jim's patch for retesting guessed plains against
all other salts. See #1706.
Use fewer test-vectors in 7z-opencl unless -DDEBUG - it takes too long
to self-test.
Tweak for new auto-tune, fixing problem with some formats.
Shared OpenCL code: Drop obsoleted functions.
New OpenCL auto-tune: Print nanoseconds in human format.
OpenCL autotune: Drop obsolete functions get_task_max_size() and
get_default_workgroup().
Add ability to read all pot files in a directory. See #1623.
EditorConfig: Use a tab width of 8 for core files.
Break out the Jumbo additions to single mode rules to a separate
section (but do include that section where it was located, so this
is a no-op).
SessionFileProtect: Adopt to coding style, simplify code and fix error
messages. Closes #1710.
Try to address #1711. I have no idea why this doesn't work.
Logic bug with SessionFileProtect.
OpenCL: Change BENCH_CLERROR so it can always be used in crypt_all().
This reduces the risk of auto-tune aborting the process if hitting a
limit.
More output from auto-tune: Show LWS when tuning GWS and vice versa.
OpenCL: Change some %zu to portable macro.
Add a global variable telling if we're currently auto-tuning.
Change default (LWS == NULL) to a device query for warp size. But also
include other alternatives in a ladder of #if's.
RAR-opencl: Use the new ocl_autotune_running variable to get rid of
the crypt_all_benchmark() function.
WPAPSK-opencl: Use the new ocl_autotune_running variable to get rid of
the crypt_all_benchmark() function.
7z-opencl: Use the new ocl_autotune_running variable to get rid of the
crypt_all_benchmark() function.
Office OpenCL formats: Drop the separate crypt_all_benchmark().
encfs-opencl: Drop the separate crypt_all_benchmark().
krb5pa-sha1-opencl: Drop the separate crypt_all_benchmark().
sha1crypt-opencl: Drop the separate crypt_all_benchmark().
rar5-opencl: Drop the separate crypt_all_benchmark().
pwsafe-opencl: Drop the separate crypt_all_benchmark().
OpenCL PBKDF2 formats: Drop the separate crypt_all_benchmark().
Bunch of OpenCL formats: Replace unreadable code with an existing
macro.
Many OpenCL formats: Speed up autotune and make it more reliable.
OpenCL: Make a macro vector-aware.
RAR-opencl: Autotune fix just for good measure. I saw no problems.
OpenCL: Drop local v_width, use the global one. Refactor
opencl_v_width to ocl_v_width.
Tweak BENCH_CLERROR macro.
Workaround for OS X weirdness with CPU OpenCL device.
OpenCL bugfix: BENCH_CLERROR got the logic backwards after change.
Tweak error output during autotune.
OpenCL: Add a global variable holding the max LWS of *all* kernels.
For this to work, format's get_task_max_work_group_size() must be
correct.
OpenCL: Don't show a build log only containing warnings/notices,
unless verbosity is bumped. This was the case for release builds
already.
OpenCL kernel functions: Never use static, always use inline.
GET_MULTIPLE_OR_BIGGER macro must not be vector aware. Add another one
instead.
Add john.conf option for auto-tune initial LWS enumeration.
OpenCL RAR formats: Bugfixes for LWS=0.
md5crypt-opencl: Add a pragma needed for amd_bitalign with older
drivers.
Change some exit() to error() for proper logging and easier debugging.
See #1714.
Add a header to win32_memmap.c needed for error().
Update dependencies in Makefile.in
7z and RAR: Trim the waste-space allocation for length sorting. Closes
#1692.
Correct dependency for error() is misc.h.
7z: Missing paren. I did say it was tricky.
Undocumented hack: If you give the benchmark time as a negative (eg.
-test=-1) it will be minimum that time, but will also wait for
completion of "many salts" test.
Keccak formats: Stop lying about SIMD support. There is none. Closes
#1712.
SHA-3 format: Stop lying about SIMD support. There is none. See #1712.
Fix 1711: Correct detection of whether we're restoring or not.
Fix a logic bug that made (currently) impossible things like "-markov
-rules" not bail out with error. Closes #1697.
Revert exit() -> error() for a CUDA file.
OpenCL: Move Solar's bitalign macros to opencl_misc.h.
OpenCL: Drop the fragile nvidia_sm32plus macro in favor of separate
SM_MAJOR and SM_MINOR definitions supplied to the kernel.
Handle partial NVML (missing nvmlDeviceGetIndex() function). Closes
#1630.
Minor tweaks to --list:cuda/opencl-devices output (stop using tabs,
for a starter. Looks bad when pasted)
Bugfix for the many-salts extra test.
OpenCL: Ensure self-test and autotune does not involve changing length
of test vectors' plaintext. Some formats have too big a penalty for
that so we need to let the format decide (by means of what test
vectors it declares).
OpenCL autotune: Rework keysetting a bit more (and fix a bug that lead
to irregularities).
formats.c: The fmt_set_key() wrapper now has its buffer SIMD- aligned.
Also fixes a few callers that did not use the wrapper.
Fix --format option when -DDYNAMIC_DISABLED. Closes #1722.
Change a format expression in dynamic.con so we don't end up seeing
"peoplesoft" when gripping out primitives. See #1716.
Tweak format descriptions for dynamic Cisco formats so we don't end up
seeing "cisco" when grep'ing out primitives. See #1716.
RAR-opencl: Minor optimization, 5-10% boost.
RAR OpenCL: allow less work per loop-kernel call.
OpenCL auto-tune: log resulting work sizes.
Minor 7z-opencl optimization.
Tweaks for .editorconfig
Suppress an erroneus comment about UTF-8 with -enc=raw.
Add FMT_TRUNC format flag. This is set for formats that originally
truncate at our max. length (eg. LM, DEScrypt) but not for formats
where our max. length is limited (usually due to optimizations), eg.
NT and MD5crypt. See #1724.
Lotus5-opencl bugfix (segfault in some situations). Closes #1726.
If BF_X2 is already defined (eg. CFLAGS), don't change it. See #1199.
Retire the "md4-gen" format, just like "sha1-gen" (they both live in
unused/ for a while). It was obsoleted long ago.
If BF_ASM is 1, don't allow redefining BF_X2. See #1199.
--list=build-info: Show salt hash size.
Separate --log-stderr from --nolog. Now the former does not imply the
latter, but both can be used.
Salt sort: Allow user to disable the default fallback to "most used
first" (it was hard-coded until now).
Lower default iteration count for pbkdf2-hmac-sha2 OpenCL formats, for
easier testing. Use -cost:10000 to get the old figures.
Unify SHA-1's H() a.k.a F3() a.k.a SHA-2's Maj() as well as SHA-2's
Ch() implementations, using better optimized ones. OpenCL and CUDA
formats. See #1727.
Unify SHA-1's H() a.k.a F3(), a.k.a SHA-2's Maj() as well as SHA-2's
Ch() implementations, using better optimized ones. Intrinsics
formats. See #1727.
7z-opencl: Bugfix for keeping within workgroup limits.
DMG-opencl segfaulted on super because of OpenSSL thread safety issues
with EVP. Disable OpenMP for now. See #1686.
raw MD5 flat format (experimental): Drop bogus header dependency
Intrinsics: Use vandnot version for vcmov, if available (currently
always). Both versions are 3 ops but the andnot one has parallelism.
Pseudo-intrinsics: Comments (no-op).
OpenCL: Ensure auto-tune plaintext length is within limits.
OpenCL: Add an alternative SHA-2 Ch() a.k.a MD4/5 F() for archs with
and-not instruction. And stop defining USE_BITSELECT for Maxwell.
OpenCL: Fix definition of OLD_NVIDIA. It was always intended for
sm_1x.
DMG formats: Drop use of EVP in favor of low-level API and re-enable
OMP support for the OpenCL format. See #1686.
Several formats: Use shared PKCS padding-check function. See #1686.
OpenCL shared MD5: Use Solar's newly found or-not bitselect.
Dynamic: Drop a couple of spurious space characters.
opencl_misc.h: Do not define HAVE_ANDNOT for GCN. This is a no-op
though since it'll use bitselect instead anyway.
Re-enable use of bitselect instructions for Maxwell. The previous
tests seem to have been invalid due to kernel binary caching.
Add a "kernel-clean" make target, dropping nvidia's cached binaries in
~/.nv/ComputeCache as well as our own cache for other vendors.
Neither of them is safe from a change in just a header file included
by a kernel.
7z formats: Add a salt_compare function so we are sure to exploit any
same-iteration-count weakness. Closes #1728.
Update --list=format-methods with missing methods. Change ordering to
same as in the struct. Do not output get/ binary_hash methods that
are NULL.
OpenCL: Work around an Apple driver bug for Intel HD Grahpics. See
#1723.
Recent change to keychain formats increased number of FP.
Intrinsics: Sourcing of misc.h was trying to abandon the pack.
Intrinsics: Change Solar's "#if 0" around MD4/5's SSEi_FLAT_OUT to
"#if USE_EXPERIMENTAL" and add comments on why it's left out.
mem_align function: Require power of 2 alignment, and use faster code.
See #1731.
Change stack allocations of MEM_ALIGN_SIMD to be safe. Closes #1731.
Intrinsics: Pacify a compiler warning on XOP where PARA >= 3.
Drop support for "icc precompiled intrinsics". We keep breaking it and
apparently no-one is using it nowadays anyway.
XOP builds: Use 2x interleaving for SHA-256.
NTLMV1/MSCHAP2 bugfix (for currently unused code path).
testparas.pl: Finish with printing a complete suggested command line
for ./configure. Also add a second optional parameter for number of
cores (for make -j option).
Document testparas.pl (very briefly).
Ensure all PBKDF2 formats have 10K test vectors. To bench them, use
"-test -cost:10000"
Optimization for emulated vloadu/vstoreu for the case address is
already aligned. See #1731.
testparas.pl: Bug when run with no args.
The "-test=-1" hack for testing all 256 "many salts" did not work for
2nd or later formats in a test run.
The "-test=-1" hack for testing all 256 "many salts" still wasn't
quite OK. Took too long for some raw formats. Closes #1738.
New canonical code for "format class" selection. If you say something
like -format=@rc4 you will only get formats that has "RC4" within
its algorithm name. This can also be combined with rejecting
dynamics. Examples:
Trying to beat Jim to fixing a free() <-> MEM_FREE() problem in john.c
that I very recently introduced.
Format-class selection: Allow rejecting OpenCL formats.
Ensure unsigned divisions (optimized to shifts) in various index
calculations.
Dynamic compiler: Add max-length and zero-length test vectors.
Dynamic compiler: Bugfix for mixed-case plaintext test vector.
Add missing parens in dynamic_compiler_lib.c. Add missing dependencies
for dynamic_compiler.c and dynamic_compiler_lib.c.
Fix all dependencies in Makefile.in. Closes #1745.
Do not consider lc() and uc() for SALT_AS_HEX. See #1748.
Pull back Myrice's OpenCL SHA-512 formats (to unused, they need some
updates before you can build them).
Face-lift for Myrice's formats, still in unused. They need the shared
auto-tune, and things moved from init() to reset().
Drop interim formats, so next commit get the "moves" right.
Put Myrice's formats back in business.
Add a config option WordlistMemoryMap, defaulting to Y but letting
user disable use of mmap in wordlist mode.
Auto-tune had a really silly bug for picking plaintext length,
resulting in always zero.
Found Myrice's XSHA512 kernel. Its removal was hidden in an unrelated
commit (b0f1fad4).
Add autotune to Myrice's SHA-2 formats.
Address some test vector length issues in dynamic compiler format. See
#1751.
Add some debug output for CircleCI. See #1751.
Fix for non-SIMD dynamic='md5($p)' max-length test vector. See #1751.
Drop the "#pragma GCC optimize 3" from simd-intrinsics.c, and the XOP
workaround that was needed when we had it.
Revert some mem_align() uses. Closes #1735.
AVX-512: undef VCMOV_EMULATED when using ternary intrinsics to emulate
it (it's just as good as the vcmov instruction).
Re-introduce the mmxput3() switch alternative (but ifdef'ed out).
Use some shared OpenCL code for Myrice' SHA-512, and optimized SHA-2
subfunctions, but keep the actual SHA functions for now.
Dynamic: Drop the phrase "(MD5_body)" from non-SIMD MD5 algorithm
name. It made no sense anyway (it's just a function name) and it
screwed up dynamic compiler format's parsing of algorithm_name vs.
label. Closes #1763.
Intrinsics: Add missing curly braces around initializer.
Add "Best64" rules from Hashcat. Some rules are not working in JtR so
was commented out, and one 'f' rule was added to end up with exactly
64 rules.
Stop defaulting to "ReloadAtCrack = Y". It hurts performance when a
lot of hashes are cracked very fast, and the remaining pot sync
alternatives will take care of the important business anyway.
Centralize reversing/unreversing of (scalar) binaries, for easier
maintenance of code. And re-implement source() for raw formats using
reversed steps (SHA-1 still to-do).
Drop the john.conf default for DefaultInternalEncoding.
Do NOT lock potfile during pot sync.
Implement source() for raw-SHA1 format.
Fix SessionProtect for forked (or MPI) sessions, as well as for
JOHN_SYSTEMWIDE builds (Jim had hard-coded the session name). Closes
#1764.
Move the logic for "Disabled Formats" out of loader.
Do not define CRK_PREFETCH in cracker.c (it's defined in params.h).
Reverse three steps for SHA-2. 4-5% boost. Closes #1758.
Replace 0x7ffffff in all binary/hash_6 functions with PH_MASK_6 which
is defined as (PASSWORD_HASH_SIZE_6 - 1) in params.h.
mssql12 non-SIMD bugfix.
Change all binary/hash function masks to params.h macros.
Dependency tweak for plugins. See #1767.
Prince mode: Pure formatting.
Prince mode: 8x speedup for rules.
Prince mode: Optimization for when rules are used but no rules were
accepted (or eg. --rules=none).
Introduce macros for telling that vloadu or vstoreu are emulated.
Bugfix for -DDEBUG.
Change wordlist memory buffer default threshold to 1 GB, and use that
default unless -save-memory >= 2. Also tweaks some other related
things.
Fixes for generator/amplifier logic for mask and regex. Closes #1756,
see also #1757 (more work needed there).
Mask mode: More rigid parsing of ranges/placeholders. Closes #1765.
Mask mode: Allow '??' as literal '?'.
Make -stdout "FMT_TRUNC" so we can chose at run-time whether to
truncate (-stdout=N) or reject (-max-len=N).
Loader: Fix a bug where a loop depending on signed behavior was using
size_t.
Revert "john-huge-loader-mt.diff, splitting initialization of bitmap"
mem_calloc: Actually use calloc().
Fix a few bugs not caused by, but triggered by, the recent loader
allocation tweaks. See #1769.
Ensure ShowUidOnCrack is turned off when --save-memory is active.
More tweaks for --save-memory.
Raw MD5 non-SIMD bugfixes.
MSSQL: Fix for reverse steps: We have to uppercase.
Add a config note about --save-memory vs. ShowUIDinCracks.
Refactor a variable to match its john.conf name.
Minor optimization for loader.
http://www.openwall.com/lists/john-dev/2015/09/16/32
Re-write code that used comma separator so it's easier to read.
Drop code that was obsoleted by fd3c440.
Fix a bug with hybrid mask used with wordlist + rules when an internal
encoding is active.
Mask mode: Use fmt_null_key instead of creating our own.
Minor overhaul of regex hybrid mode. See #1678.
Fix bugs introduced in previous commit and close #1678.
Add the cool rexgen example from #1678 to our arsenal of presets.
Allow external filters even with Hybrid Mask. The logic was there
already.
Disable CRK_PREFETCH for now, segfaults seen.
http://www.openwall.com/lists/john-dev/2015/09/20/6
Linkedin format: Bugfixes for reading {SHA}-style pot entries.
Disable UTF-8 checks when -enc:raw.
Optimization for registering dynamics. Shaves the number of calls to
dynamic_IS_VALID() by half (from 10,000).
Print hash counts to stderr for --show=invalid. See #1773.
Update INSTALL-UBUNTU (after I did just that).
Drop summary line from -show=invalid - it's not populated at all.
Add parsing of 1800.11 -> Catalyst 15.9.
Fix and improve OpenCL logging.
OpenCL: Force saving of kernel "binary" with env DUMP_BINARY. This
will have kernel's name with ".bin" extension added, stripped from
any path (so will end up in current directory). It will also
over-ride the caching we sometimes do for non-nvidia devices (the
nvidia driver caches for us).
OpenCL bug fix (or just rigidity fix) for auto-tune.
Add full Unicode/codepage support for NT-opencl, including for mask
mode with --internal-encoding. See #1037.
Mask mode: If mask contains UTF-8 characters, require
--internal-encoding so we don't get false negatives from improper
use. See #1037.
--show=invalid counted incorrectly. See #1773.
Add full Unicode/codepage support for mscash-opencl, including for
mask mode with --internal-encoding. See #1037.
New DEScrypt OpenCL code: Portability macros for %zu.
Comment out the silly "Get key error!". I have only ever seen false
alarms and Sayantan wont even comment it. See #1037.
Fix a bug in all UTF-8 conversions on GPU. We are processing strings
that are not NULL-terminated, yet checked for NULL in some places
instead of checking length. The result was a performance drop.
OpenCL: Add one more instance of "spinning wheel" cursor for slow
benchmarks with --test=-1 (force all "many-salts" test).
Mask mode debug stuff.
Code style: Don't write pointers as multiplications.
OpenCL autotune: Fix bugs when LWS is required to be a power of 2.
NT-OpenCL: Use shared auto-tune.
OpenCL auto-tune fixes. And a hack: If mask mode is active, we
decrease max duration to a tenth.
AC: Change AC_CHECK_LIB tests from "!= no" to "= yes".
Put OpenCL UCS-2/UTF-16 support selection under the wings of
./configure. Closes #1779.
DES-opencl cleanup, and a tweak in shared code. Closes #1778.
MSCash-OpenCL: Use shared auto-tune. See #1037.
Revert "MSCash-OpenCL: Use shared auto-tune. See #1037."
MSCash-OpenCL: Use shared auto-tune. 2nd try, see #1037.
mscash-opencl: Unicode salt support and test vectors. Closes #1781,
see also #1780.
Bump SALT_HASH_LOG from core's 12 to 20.
Makefile.in: Add recent loader.o dependency for base64_convert.h.
OpenCL: Unicode/codepage fixes (edge cases, even literally) for mscash
& NT formats. Both formats now pass systematic testing (TS).
Workaround for AMD problem with mscash-opencl. Closes #1780.
gcc-4.4.7 complained about me breaking strict aliasing rules in
mscash-opencl. I agreed to disagree but had to fix it anyway.
Fix some mis-match between mask mode and its documentation. Also
deprecate ?h and ?H in favor of ?B and ?b since ?b is used by
Hashcat.
Mask mode fix: If a custom mask placeholder was defined containing
UTF-8 characters, we bailed out for "internal encoding required"
even when that placeholder was not actually used.
OpenCL common code: Ensure use of portable basename().
Drop spurious file add by Jim
Fix bug when using default (from john.conf) mask, and some other cases
of hybrid/pure mask & regex modes.
Mask: When iterating over length, optionally emit a status line after
each length is done.
SHA-256 intrinsics: Reverse 4 more steps for another 3% boost. This
can't be done for SHA-224.
Mask mode: Tweak an error message for easier understanding.
SHA-512 intrinsics: Reverse 4 more steps. This can't be done for
SHA-384.
MSSQL12: Reverse seven steps.
MSSQL12: Non-SIMD fixes after last commit.
Mask mode: Change "internal encoding" error output to be more
specific.
Deprecate -internal-encoding in favor of -internal-codepage, for
clarity. Change corresponding john.conf option
DefaultInternalEncoding to DefaultInternalCodepage. The old option
names are still supported (and will be for a long time). Also
refactors the related variables.
OpenCL auto-tune: Tune with GPU-side mask, when applicable.
Autotune: Print Gp/s instead of a wall of digits.
Pacify an idiotic warning.
Revert most of the recent auto-tune-with-mask patch. Regression-tests
revealed it already happened, LOL.
Cross-compile fixes for 'ar' and 'strip', and for using DESTDIR for
bash (and zsh) completion. See #1783.
Change most opencl_build() calls from Sayantan's formats to
opencl_build_kernel() so they cache like the other formats.
OpenCL: Use a hash of parameters when deciding a cached kernel file
name, instead of creating filenames that exceed all sane limits. And
since the hash also includes the actual full source, we get extra
"security".
Bugfix in our implementation of RC4.
NT-opencl: Use our optimized MD4 macros. See #1729.
mscash-opencl: Use our optimized MD4 macros and the rotate function.
Closes #1729.
hmacmd5.h "bugfix": do not depend on caller including md5.h.
krb5-tgs: Major cleanup, code-style, stop re-inventing the wheel, fix
major and minor bugs, add proper Unicode conversion, add OpenMP
support, much less promiscuous valid().
OpenCL NT & mscash: Copy-paste bug of sorts.
Further boost for krb5-tgs format.
Cosmetic fixes in kirbi2john.py.
Complete the implementation of FMT_REMOVE. Closes #1793.
Minor enhancement of FMT_REMOVE code. See #1793.
Update docs for OS X 10.11 "El Capitan".
OpenCL bug fix. 57a6cce change a buffer to alloced memory but we were
still using sizeof() on it. Closes #1797.
Fix a bug in --reject-printable for split formats.
Revert "mask: ETA was 1/x the correct time in -fork=x mode"
Try to get rid of the Travis CI failures occurring ever since 09f7f91.
Bugfix for --test-full
Revert "Try to get rid of the Travis CI failures occurring ever since"
Myrice's OpenCL formats: Hopefully fix intermittent failures on CPU
devices.
Implement LOP3.LUT as inline PTX, but do not enable it (not yet seen
doing any good - only tested for md5crypt).
DUMP_BINARY environment variable over-rides any normal binary caching.
CUDA WPAPSK: Bugfix after get_hash macros was introduced.
Common OpenCL: Fix a potential memory leak.
lotus5-opencl: Drop that weird "PADDING" thing. This alone seemed to
fix all problems - closes #1726.
Revert "configure: changed != xno to = xyes for some display results
(crypt, mmap)"
Bump dynamic's DYNA_SALT_HASH_BITS to same as SALT_HASH_LOG.
Add proper logic for enabling LOP3.LUT (although we still don't
actually enable it because only regression was seen).
Minor CUDA fixes.
Tweaks for LOP3.LUT. Refactor the function to lut3() like what Roman
used in published DES BS s4. Always expose that function (if
available).
Add kernel filename to "Options used" when building OpenCL kernels.
DES & LM bit-slice OpenCL: Implement DeepLearningJohnDoe's LUT3
s-boxes, but with s4 replaced with Roman's published one (one less
gate).
Shared OpenCL MD4, MD5, SHA-1 and SHA-2 code: Optional explicit
LOP3.LUT.
Stop mis-using the "warn" parameter of opencl_build_kernel. It's for
kernels that take like over 10 seconds to build.
Stop mis-using the "warn" parameter of opencl_build_kernel (one last
format that was missed).
Use Makefile logic to copy/update OpenCL stuff to run/kernels.
Tweak Makefile logic for OpenCL stuff in run/kernels.
Tweak Makefile logic for OpenCL stuff in run/kernels.
Revert recent Makefile changes. They are problematic.
I seem to have a bad hair day.
Fixes for generation of Makefile OpenCL dependencies. Also updates
most other dependencies (auto-generated with plugin_deps.pl)
Fix a mis-leading notion in list=build-info.
Mask mode: Default to emitting status when switching length. And fix
some progress reporting issues.
Use __FUNCTION__, not __func__.
Some no-ops while trying to work out what's wrong with lotus5. Looks
like an nvidia driver bug. Intermittent failure when not
auto-tuning. See #1726.
Yet some tweaks required for OpenCL dependency generation.
Extra pot-file feature: When traversing directory, only consider files
with extension of ".pot". This is how the Windows code path already
handled it. Also, accept symlinks. And clean up code, moving this
to its own function to avoid indenting off screen... Closes #1623.
Windows fix for extra pot files. Windows does not grok symlinks.
Using S_IFLNK applies to lstat(2), not stat(2).
john.conf comment grammar fix.
Unicode core files overhaul: Code-style fixes and tweaks.
--stdout: Allow using a codepage output encoding.
External mode: Optionally support handling UTF-32 characters,
converted to target encoding just before crk_process_key(). This
speeds up things like -external:dumb32 with 4x and opens up for
plenty of other tricks.
Dumb16/32 and Repeats16/32 external modes: Use new UTF-32 external
mode feature. 4x boost (or even more if target encoding is a
codepage).
Implement a proper lut3_64() function, using two 32-bit ops.
OpenCL: Use bitalign for ror64() in shared code and in Myrice's
formats. See #1819.
The bitalign-rotate can't be used with vectors.
opencl_mask_extras.h: Pure whitespace clean-up.
Missed tab in whitespace clean-up.
Pot sync tweak for split OpenCL kernels.
Add a trivial script for calculating truth table for
_mm512_ternarylogic_epi32 or LOP3.LUT. Example:
Some mostly no-ops and whitespace noise while trying to nail the
nvidia LOP3.LUT bug.
LOP3.LUT bug fixes. Wasn't a driver bug... was PEBCAK!
Bugfix in the example in comments of truth.pl...
Enable LOP3.LUT for SHA-1 formats.
Stop using cl_nv_pragma_unroll for detecting nvidia; it does not work
on OS X. Also update mscash2-opencl with optimized functions.
truth.pl: Optionally show all alternatives for LOP.LUT3 (or AVX-512
ternary) truth tables.
Regression fixes for LOP3.LUT. We can't use that inline asm function
with vector variables.
Add SaltLen to new dynamic_1034. See #1825.
Poke a little at Myrice's formats to get rid of intermittent failures.
Usage blurb tweaks. Thou shall not hit 80th column (not even counting
from 1, due to Windows' silly terminal).
Allow "-test -mask" for benchmarking GPU-side mask mode performance.
Currently, self-tests are not performed when this is used. Mask can
be given or the default one from john.conf will be used. See #1822.
Enhance the "-test -mask" feature. See #1822.
Tweaks for --test --mask. See #1827.
Auto-tune tweak for mask mode. See #1827
Mask mode ETA bug fix: mask_tot_cand is supposed to hold total
multiplier *including* GPU-side. Parent modes' progress reporting
depend on it.
Some refactoring of mask mode global names, per code style.
Mask mode: Decrease max. number of placeholders from 255 to 127. This
still supports the global core max length of a plaintext and should
help footprint and locality.
Implement a shared OpenCL function to get a very rough "speed index"
for an OpenCL device, and use it to tune mask mode. Closes #1831.
Global tweaks to recent mask mode tuning logic. See #1831.
Print our "speed index" estimation in --list=opencl-devices. See
#1831.
More tweaks for mask tuning. See #1831.
Mask benchmark tweak. We won't generate candidates longer than
format's first test vector.
Hack fix for #1828.
Put a max-length test vector first in LM-opencl for better auto-tune.
mscash-opencl: First test vector should be length 8 or so and
definitely not a null-string. This is for shared auto-tune reasons.
Bugfix for building non-OpenCL.
Reduce default logging for rules and incremental mode. Now -verb=4 or
higher is required to get gigabyte size logs.
Have -stdout call log_init() but imply --nolog. See #1774.
NT & mscash OpenCL: Avoid double auto-tune for "-test -mask".
--list=opencl-devices fix. Do not print SIMD width as "stream
processors" (although we count it as such for other purposes).
PBKDF2-HMAC-MD4/5: Allow VLIW5 to use native vector width. The
register pressure limitation doesn't apply to these formats.
krb5tgs format: Bump MAX_EDATA_SIZE, see #1838.
Implement a function that creates a "struct db_main" from test
vectors, and a destroyer for it. See #1835.
Allow changing or dropping the UTF-8 degree sign in GPU temp
printouts.
Bug fix for the shared check_pkcs_pad() function. This surfaced in
form of false positive in dmg (header version 1).
AMD bug-workaround for SHA-512 formats when using bitalign for
ror64(). Closes #1840. Also closes #1834, adding a related pragma
needed for older drivers.
AMD bug-workaround for oldoffice-opencl. Closes #1497.
Mask mode: Change ?a to frequency-ordered, from Rockyou data. Closes
#1842.
Mask mode: Change ?l, ?u, ?d and ?s to frequency-ordered, from Rockyou
data. See #1842.
Improve handling of UTF-8 "degrees" character in case terminal is not
UTF-8. If we know how to output it, do. Otherwise just skip that
character. Closes #1841.
Fix a cosmetic problem with speed figure calculations overflowing
32-bit integer under GPU-side mask mode. I already wrote code for it
but it was defined out.
Mask benchmark: Pure mask mode should send a NULL key.
OpenCL: Cosmetic. Move "speed index" adjacent to its source
parameters.
Copy/paste bug in raw/x-sha512-ng-opencl.
Tweak the use of setlocale(). We now query the "terminal locale" and
store it, but then reset LC_CTYPE to "C" so to not change behavior.
See #1841.
Implement a minor optimization for SHA-512 sigma's, from Intel's "Fast
SHA-512 Implementations on Intel Architecture Processors"
whitepaper.
Mask mode: Enable a sanity check that was disabled for
backward-compatibility.
RAR: Mute an irrelevant warning when loading pot entries.
Decrease log chatter from single mode, like was done with others.
Fix an autoconf problem resulting in the CPU detection in john.o
wasn't enabled when it should be.
Add CPU detection for AVX2.
Fixes for AVX2 detection.
Another fix for AVX2 detection.
Mask mode: Fix incorrect use to CTYPE macros, so ?W will case- toggle
according to our active encoding - not just ASCII.
--list=build-info: Show fallback binaries.
Bugfix for MPI vs. fallback binaries. We must not initialize MPI until
we are running the "final" binary.
OpenCL shared header bugfix: OLD_NVIDIA was defined on all non-nvidias
too.
Add cpuid tests for SSSE3, SSE4.1, SSE4.2, AVX512F and AVX512BW.
CPU detection fixes. We drop the check for SSE4.2 because only one
format needs it - that one should have a run-time check instead.
More CPU detection fixes. A bit more thorough.
Require AVX for CRC32C intrinsics (only SSE4.2 is needed but we don't
want to add another CPU fallback case). Closes #1856.
Minor fixes to Myrice's formats.
Salt cleansing bugfixes.
Bugfix for plugin_deps.pl, do not recurse autoconfig.h file. Closes
#1860.
oldoffice-opencl: Move benchmark logic out of salt.
pkzip: Fix a problem caused by the format changing the salt after
get_salt. We still do so, but leave that part out of the active
"dynamic salt" part for compare purposes. Otherwise we get problems
with pot sync and other things. Closes #1862.
Mask mode: Fix a problem with resume sometimes missing candidates.
This should now be 100% safe. Closes #1859.
Exclude Myrice's formats from Travis CI testing. It's got to be a
driver bug causing all trouble with them. Also ditch the
Formats_base thing, it was just confusing. Better learn the
difference between putting [Disabled:Formats] vs.
[Local:Disabled:Formats] in your john-local.conf! The former
replaces the original list while the latter adds to it.
Add some safety in dynamic parser code. See #1863.
Do not assume that char is signed. See #1863.
Mask mode: Ensure that things like ?l?u (eg. the default mask) only
produces a single case for case-ignoring formats.
AC: Do not use \b with sed, apparently it's not POSIX and it doesn't
work with OSX. Closes #1867.
Fixes for OSX El Capitan and CUDA 7.5. Closes #1868.
Enable showing memdbg summary with MEMDBG environment variable. See
#1872.
Fixes for our local stdint.h. Add intmax_t and uintmax_t as we now use
them in Jumbo. Also use compiler macros like __INT32_TYPE__ if
available. Finally, remove a clash in math.h from core.
arm32le.h: Do not define SIMD_PARA_* when we don't have NEON. See
#1874.
Assorted signed/unsigned bug fixes. See #1874.
Drop unused Blake2 functions. See #1874.
Move the nefarious LUKS test vectors to a separate file. #1861.
Split lines of luks_insane.tests.h so not to break havoc.
Add filename to cisco2john output, in id field.
Fix algorithm name of Azure AD format.
Fix algorithm name of Azure AD format, this time to the correct one.
Simplify OpenCL SHA-1 (unsplit) kernel a little.
Add a john.conf option AbortGraceTime for tweaking behavior of
--max-run-time=N option. Closes #1638.
Add Truecrypt-opencl format. First cut, only RIPEMD-160 yet and for
some odd reason it's only a quarter the speed of Hashcat's as of
now. See #1344.
Optimizations for Truecrypt-opencl format.
pass_gen.pl: Honor -loops when generating bitcoin
Assorted hybrid resume fixes. Closes #1859.
Do not call wordlist's hybrid fix_state unless we are actually running
wordlist as parent mode.
Fix SessionFileProtect for batch mode. Closes #1774.
Consider the "Extra potfiles" not only when loading hashes, but also
for other things like -show and -loopback. Closes #1808.
Revert "Have -stdout call log_init() but imply --nolog. See #1774."
Revert "Hack fix for #1828."
List:Extra.Potfiles bugfix for --loopback (allow using loop_db).
john.c: Comment on a non-obvious line of code.
Log the command line used for session. It will be expanded from
abbreviations and unified to using '=' and not ':' as option
separator.
Finally, fix the Jumbo options-reset problem (when resuming)
canonically.
Fix a nasty bug in oldoffice-opencl where type 4 would never crack.
Closes #1881.
Change dyna salt formats to use fmt_default_dyna_salt(). Also assorted
fixes for dynamic salts, including OpenCL support.
AC: Test for hyperthreading, if available - define HAVE_HT. Set BF_X2
according to the result. Closes #1199.
AC: The HAVE_HT test was only done for AVX or higher, having bcrypt in
mind. But we might want to use it for other things too so this
commit makes it unconditional.
Set BF_X2 to 3 for non-OMP builds, regardless of CPU. See #1199.
Allow using OMP or CPU fallback without using SYSTEMWIDE.
Allow using CPU fallback without using SYSTEMWIDE (bug fix, the
previous commit only fixed OMP fallback).
Better fix for #1881. The previous fix worked fine but affected
performance.
Enable oldoffice's source() function, printing mitm hash in case user
wants to search for alternate keys. The use of MITM calls for using
dyna_salt. Closes #736.
Bugfix for dyna_salt in OpenCL: Bitfields are not allowed but we
actually only need the right size.
Show different output telling FMT_NOT_EXACT from --keep-guessing.
Fixes for CPU detection. See #1855.
[john.c] Clean-up from Jim's constant breaking of code style.
Disable cpuid checks if CPUID_DISABLE environment variable is defined
(at all). See #1855.
Bug fixes and easier-to-follow code for CPU detection.
Add 32-bit checks for AVX2, SSE4.1 and SSSE3. The AVX2 check is very
quick and dirty, not using leaf 7 nor extended flags but it should
be sufficient for a starter. This is UNTESTED but will hopefully be
Good Enough[tm] for #1855 for now.
Remove LENGTH from --markov mode documentation. Closes #1651.
Document PRINCE mode. Closes #1428.
configure.ac is not just a bash script.
Bugfix for 32-bit CPU detection. See #1886.
[options.c] Portability fix: Include jumbo.h.
Another 32-bit CPU detection bug fix. See #1886.
Safer CPU detect for cross compiles. See #1886. Closes #1855.
Code style fixes for Markov before doing actual changes. This is a
no-op.
Delete Frank's diary from our source tree.
Code style fixes for Rexgen before doing actual changes. This is a
no-op.
regex fixes for -max-length.
Add hybrid regex support to markov mode. See #1445.
Add hybrid regex support to incremental mode. See #1445.
Add hybrid regex support to PRINCE mode. See #1445.
Add hybrid regex support to External [generator] mode. Closes #1445.
[mask.c] Fix for 32-bit builds not getting prince mode.
Tweaks for legacy builds.
Fix for 32-bit SSE2 CPU detection.
Yet another fix for 32-bit SSE2 CPU detection. How hard can it be to
get this right? See #1886.
Don't just "define" things like JOHN_AVX, set it to 1!
Remove a wall of 32-bit build warnings. The majority were due to a
silly macro that was sprayed all over the code base instead of put
in one place. Closes #1891.
Allow using external (generator) mode as hybrid parent. Closes #1889.
Allow using regex mode as parent to hybrid mask. See #1890.
Allow hybrid regex *and* mask, using a third mode as parent. Mask is
last since it can accelerate GPU. Closes #1890.
Update documentation of Jumbo cracking modes with regex, stacking and
some other details.
More updates on documentation and usage blob.
Mask mode: Avoid internal key buffer being thrashed by external
filter. Closes #1893.
PRINCE had same external filter bug as mask mode, see #1893.
john.conf typo.
Stupid bugfix for CPU detection. I did not notice that SSE2 flag was
in EAX while SSSE3 and SSE4.1 flags are in ECX, so I ended up
erroneously checking the xsave flag (and testing would not reveal
the problem when cross-compiled on newer machines...
CPU detection: Cosmetic (comments, and rename a confusing label).
Bugfixes for -test -mask.
OpenCL SHA-1: Concentrate an AMD workaround to within the SHA-1 header
only.
MPI bugfix for OMP fallback.
[pass_gen.pl] allow specified -salt shorter than 8.
Bugfix for vectorized use of OpenCL SHA-1 after recent change.
Much nicer code for previous commit: Use __typeof__() keyword.
WPAPSK-OpenCL: Revert to using AoS, for working around AMD bugs.
Closes #1905.
Fix a couple of problems with --pipe mode when using tty for input.
Windows fix for "label at end of compound statement".
HMAC-SHA256: Support up to 183 characters of salt. Closes #1904.
Reduce (default) chatter from descrypt-opencl.
Allow muting status output for GPU temp, utilization and fan
individually.
Fix a bug in loopback mode that caused a segfault in case the
assembled LM halves alone would crack 100% of the hashes.
SAP G bugfix. See #1917.
SAP G, add headroom for 4-byte UTF-8. Closes #1917.
[listconf.c] Move --list=opencl-devices to listconf_parse_late() so we
can get things from john.conf.
Bugfix in NTLMv1/MSCHAPv2 naive formats. Closes #1923.
Scrypt (Jumbo-specific input format) and PBKDF2-HMAC-MD* formats:
Avoid using dupe test vectors. They triggered false positives in the
Test Suite. Closes #1913.
Fix a rename in 9215a07e that ended up incorrect.
cryptsha512_kernel_GCN.cl was renamed to "unused" instead of moved
to "src/unused/".
Fix a clash between mscash2-opencl multi-device support and "Poor
man's multi-device support". Closes #1920.
Allow LDAP-style raw MD5. See #1613.
Drop nsldaps-opencl and unify salted-sha1-opencl with shared code. See
#1613.
Drop nsldap-opencl and unify raw-sha1-opencl with shared code. Closes
#1613.
Update CHANGES-jumbo.git and CREDITS-jumbo. See #1911.
Workaround for Intel for our use of typeof() in OpenCL.
Try not to fail if we can't install fglrx-dev.
Bump OMP_SCALE for PHPASS. See
http://www.openwall.com/lists/john-dev/2015/12/06/1
Slight change in -list=format-all-details output to avoid confusion.
Use a "fake db" for self-test and benchmark.
NT-opencl: Drop all special code for self-test, and use the new "fake
db".
Pass db to OpenCL auto-tune, use db->salts in all crypt_all() calls.
mscash-opencl: Drop special code for self-tests (using db from test
vectors)
Fail self-test if we can't find a test vector salt in the test db.
Bugfix and problem workarounds for ldr_init_test_db() "fields"
assembly.
Add a hack for muting messages from oldoffice-opencl's source() while
loading test db.
Fix a (benign) memory leak in cryptsha256-opencl. Closes #1945.
[unrarfilter.c] free() -> MEM_FREE(), closes #1942.
Unicode/codepage improvements for letters that doesn't have any case.
If one of -min-len or -max-len is given to mask mode, give the other a
default of format's min/max length. Closes #1947.
Add memdbg.o dependencies. Closes #1944.
Add a couple more memdbg.o dependencies. Closes #1944.
Correct fix for f3113f21
Tweak some macros in shared OpenCL code.
NT: Do not use local memory for OS X with nvidia. The actual criteria
is unknown, but this was seen better on a Macbook with GT 650M.
Driver bug workaround for GPU-side UTF-8 conversion on OSX with
nvidia. Unfortunately this halves the performance, but only when
UTF-8 is used and no internal codepage is active. Closes #1857.
[common-gpu.c] Increase a couple of printf buffers, and drop some
orphaned code. Closes #1950.
OpenCL sensor status: Increase another sprintf buffer, avoiding
possible overruns. See #1950.
hmac-SHA256: Move a test from split() to valid(), and other minor
fixes.
Add README-DISTROS for more detailed fallback build instructions. Also
tweak strip and install targets as well as autoconf handling of
--prefix option. Closes #1656, closes #982.
Usage blurb: Move -test-full to "hidden" options and update its
wording. Move -costs from "hidden" to standard options (along with
-salt et al).
wpapcap2john: Add option for manually specifying ESSID:BSSID pairs in
case there are "hidden" networks or your sniff file lacks beacons
for some other reason.
Wordlist: Speed up fix_state when memory buffered. See #1955.
Add some comments in unrar.c documenting a false positive from ASan.
Closes #1962.
loader.c: Do not prune test_db from --cost. Closes #1961.
loader.c: Do not prune test_db from --salts. See #1961.
Increase verbosity level needed for testdb output.
Avoid undefined behavior for signed integer in rpp.c. See #1963.
Reduce chatter from descrypt-opencl and also introduce some macros for
verbosity levels. Closes #1968.
Bugfix for some cases where self-test messages over-ran buffers.
HMAC-SHA384/512: Bump max salt length and support JWT hashes. Closes
#1898.
Update INSTALL-UBUNTU document not to use an older rexgen version
anymore.
Fix some whitespace that was thrashed by f3cd0e63
Allow $HOME to override the home directory (eg. ~/.john) in
JOHN_SYSTEMWIDE builds. Closes 1901.
The length sorting in RAR3 was ineffective unless we bump mkpc a lot.
OpenCL: Turn an Apple-specific fallback into a generic one. Some
clustering solutions may prohibit use of vendor-specific extensions.
--list=opencl-devices: Add AMD wavefront width.
Use realpath() for evaluating absolute path for OpenCL -I./kernels.
This is needed for some cluster environments like VCL but might
break other use cases. We may want a john.conf option for it.
Common OpenCL code: Decrease scope of platform struct, and some other
minor tweaks.
Common OpenCL code: Bug fixes and tweaks for VCL. Closes #1989.
Fix bug in default GPU selection introduced by 0a026d5. Closes #1995.
Mask.c, fix multiple problems with progress/ETA. See #1996.
doc/MASK: Document the special ETA behavior when iterating over
lengths. See #1996.
Conditionalize an AMD workaround. Closes #1994, see also #1497.
Change all use of __ARM_NEON__ to __ARM_NEON. See #1998.
RC4 bugfix for decrypting more than 256 bytes with RC4_single().
Unicode: Minor bugfix for detection of invalid UTF-8 sequences. Also
drop some local copies of valid_utf8() in favor of the shared one.
leet.pl: chmod +x
cracker.c: Remove sourcing of SSE2 header obsoleted by recent merge of
master branch.
loader.c: Unify ldr_init_password_hash() with John Proper (some
variable names differed).
Drop pristine ADL SDK files from our source tree and provide our own
header, supporting NVIDIA as well as AMD and free to distribute
under the "fair use" doctrine.
Support ADL on Windows (untested).
undrop bug fix: hash length is length 13 including the '+'. Closes
#2011, thanks to shrikus.
OpenCL: Generic workaround for OSX driver bug. Fixes many formats.
--list=opencl-devices, add SIMD width for AMD devices.
recovery.c: Avoid a race condition between closing a finished session
file (which releases our lock on it) and unlinking it.
Some tweaks for 1be1841: Support $JOHN path, set execute bit on
script, drop length limit and decrease score of variables.
Revert "Some tweaks for 1be1841: Support $JOHN path, set execute bit
on"
Oldoffice formats: Fix for --show vs. legacy MITM data in input files.
pass_gen.pl incorrectly required Crypt::ECB to be installed even when
not needed.
hmac-MD5: Bump max. salt length to 183.
Oldoffice: Optimization for dupe salts, similar to what we do for
WPAPSK but with a lot less gain.
Don't try to use typeof() with Intel OpenCL.
office2john: Handle old Word "0Table" vs. "1Table" properly.
Fix a problem with sequential dupe suppression in rules, when internal
codepage is used.
Fix for rules' consecutive dupe suppression of candidates containing
non-ASCII characters when using --internal-codepage. See 4faaba9.
Do not delegate hashes to generic crypt format unless specifically
requested. Closes #2069.
External mode filter: Support UTF-32.
External mode max-length fixes. See #2072.
External mode: Code style fixes and avoid unneeded differences from
core.
Drop support for deprecated -internal-encoding option (replaced by
-internal-codepage) except we still recognize it in restored
sessions.
Bugfix for --skip-self-tests. See #1967 and closes #2090.
CUDA fixes for macro-redefinitions. Problem likely introduced in
ad2e4727.
Pot sync performance fix: Use strnzcpy() instead of strncpy(). This
was found by comparing a run with LINE_BUFFER_SIZE at 0x400 instead
of 0x30000.
PRINCE: Allow a negative max element count. This will make the
effective max depend on each password length. For example, using
-prince-elem-cnt-max=-2 the effective max will be 3 at length 5, and
4 at length 6.
Mask mode: Tweak mask-stretching. Hopefully addresses #1983 a little
but does not fix all situations.
Wordlist mode: Ignore UTF-8 BOMs. Closes #2138.
Fix long standing bug in --pipe mode vs. encodings.
Implement --max-run-time-reset option that complements
--max-run-time=N. The new option resets the timer on each crack so
session aborts after N seconds of not cracking anything. Closes
#2139.
Drop the --max-run-time-reset option and instead include that
functionality in --max-run-time=N where N is a negative number. See
#2139.
OpenCL: Recognize nvidia Pascal series (ie. the cores per MP count).
Drop some noise from dlopen definitions.
Add number of PCI lanes to --list=opencl-devices.
fgetll() needs to use size_t for size, not int.
Quick-hack for rar2john so it always inlines.
Temporary (?) hack to speed up fgetll() considerably. We switch to
using realloc and we also double the chunk size each time. The con
is we may end up allocating almost twice the needed memory, worst
case. However, that's just virtual memory and the over allocated
memory would never be touched.
Minor tweaks to logger.c and loader.c: Do not depend too heavily on
LINE_BUFFER_SIZE and avoid undocumented arbitrary figures for
margin.
More formats fixed for truncated pot lines. This includes OpenCL
versions.
fgetll(): Safer realloc, and don't let the block size exceed 128 MB.
Also WAY faster (incremental) strlen.
Get rid of $SOURCE_BIN$. Pot entries are now always shorter than
LINE_BUFFER_SIZE (including the field separator and plaintext).
keepass2john & zip2john: Always inline. Also some clean-up of rar2john
that had a quick hack earlier.
Bug fixes for handling oversized sources.
Bugfix for zip2john for arbitrary length files. This is somewhat of a
hack but if the alloc fails we can't recover anyway. We'll just
crash and burn.
rar2john bugfix
Replace the ZIP optimization that was lost in 528e6bc, for a 3x boost.
Also implements the same for OpenCL (we never had it there). Closes
#2141.
Apparently Pascal has 128 cores per SM, not 64. This explains why I
couldn't get the figures to sum up. Still, I see many references to
64 when googling.
Potsync fixes for truncated pot entries.
Revert "crypt: problems with #defines and strdup"
Avoid warnings if re-defining feature macros.
Fix CUDA build after e78d6ef, closes #2157.
Fix a long standing bug with -< rule reject when -min-length is not
used. This bug had little consequence until Jim implemented the
Hashcat rules recently.
Recovery.c: ASan "read" bugfix.
rules.c: Do not opportunisticly enable Hashcat rules mode. Use a safe
"nullstring" buffer for reading past (ASan "read" problems). And
define out a whole section that handles pre-processor stuff (should
never be encountered anyway!).
o5logon: Verify correct password, support Oracle 12 and early-reject
wrong-length candidates where possible.
kerberom.py: Move shebang-line to top (otherwise it has no effect) and
chmod +x.
Fix a silly bug affecting resumed sessions. A few values set from the
config file (notably options.reload_at_crack) was zeroed on
resuming. A similar bug was fixed in 6a543435 (reducing the memset
size) and I should have spotted these extra resets at the time.
Alas, I did not.
Re-enable some HC rules parsing without explicitly setting hc_logic,
and drop an obsolete section of code. This is a partial reversion
and partial continuation of e04c0c8.
VMS/UAF: Avoid portability problems with VMS macros containing '$'.
Closes #2154.
Add usage blurb and docs for providing rules at command line for
single mode. See #2105.
Revert "base64_convert.[ch] More work on size_t. commmon.[ch]
reverted"
Revert "base64 (and common) changed int into size_t where needed"
Optimization for --loopback mode when hitting old, very long pot
lines. See #2160. We now return a null string instead of a truly
useless portion of truncated cipher text.
loader.c: Use an existing macro instead of mimicking it.
Don't use abs() on return from hexlenl(). The latter now returns
size_t.
OpenCL: Don't try to enable cl_amd_media_ops unless it's actually
supported by the driver (eg. MESA does not).
OpenCL: Avoid using 'inline' with MESA in some cases. See #2204
Change algorithm_name of raw-md5u from "unicode($p)" to "utf16($p)" so
it matches other formats (eg. dynamic_29).
Briefly document the --format=@keyword syntax.
--show=invalid was no longer working correctly.
hmailserver and pkzip formats: Fix whitespace violations, some of
which bad enough to result in compiler complaints. Supposedly closes
#2217.
Recognize MESA even if it's written as Mesa. See #2204.
Drop some "tedious truths" from OpenCL common code.
WPAPSK format: Whitespace cleanup.
jumbo.h declared our own atoll() in a way that could clash with
system's. See #2198, #2201.
CUDA wpapsk format had a borken adoption to new FMT_MAIN_VERSION in
9423af68. Even before that, the format was borken all the way since
f024c0a6 due to loader.h being inadvertently sourced (the rest of
the bogus changes were reverted but not the #include) and CUDA can't
cope with loader.h for some reason or the other. Closes #2198,
#2201.
zip2john: Add support for CRC and lengths only stored in the Data
Descriptor following the file data.
Blind try to fix a MinGW problem in CircleCI.
Makefile.legacy: added jumbo.o to genmkvpwd for non-atoll systems.
#2220
gpg2john: Drop dependency on LINE_BUFFER_SIZE. But we still have a
hard deck defined as BIG_ENOUGH (@kholia[tm]) which was also bumped
from 8192 to 64K. See #2218.
Ensure static unicode arrays are declared as external anywhere but in
unicode.o. See #2086.
Don't use well-known name DECLSPEC for other purposes than people are
used to. Changed to EXTATIC meaning either static or extern ;-I
DEScrypt-opencl: Get rid of a few compiler warnings from picky
run-time compilers (eg. OSX).
Drop an unused variable from salted_sha_kernel.cl.
ZipMonster format: Tried to get an aligned auto variable. We know that
isn't safe. Closes #2202.
OpenCL: Handle spaces in include path. Closes #2222.
Some no-op changes to unify raw MD4 and MD5 OpenCL formats for easier
comparison (trying to nail #2181).
Ensure no format ever processes > 4G keys per crypt (including
GPU-side mask) because the *pcount return can't hold it. Closes
#2181.
Mask mode: Fixes for "-test -mask", closing #1828 and #1835. Also
fixes some other glitches.
Argon2 formats: Do not print diagnostics unless verbosity was bumped.
argon2 files: Fix memdbg (plus whitespace violations that my emacs did
automatically while at it).
Drop the borken idea of $BIN_HASH$ yet again. Do not add it again,
it's NOT THE SOLUTION.
Use $SOURCE_HASH$ truncation of test vector's ciphertexts in
--list=format-[all-]details. Prior to this commit, they were simply
chopped to 256 or 512 bytes.
Fix for $SOURCE_HASH$ with formats having a binary that gets lost or
truncated when "pot-chopped".
Fixes to formats that may get their binary chopped by $SOURCE_HASH$.
See #2117. Note that some formats don't need fixes because their
binary comes early enough that it won't get truncated - one example
is the SXC format.
Fix pot sync for truncated pot lines. This code was missing from
#2196.
Revise verbosity levels. Closes #2230.
Fix Redmond whitespace violations in potcheck.pl, for crying out
loud...
potcheck.pl: Bugfix for long lines, enable verbose option, disable
undocumented/unimplemented options, add verbose output.
rar2john edge case fix, for RAR3.
OpenCL formats using "perfect hash tables" can't be used with single
mode cracking. Bail out with an error instead of potentially hanging
indefinitely. Closes #2232.
Alternate hybrid external mode 'HybridLeet' by Christien Rioux (See
#2099).
Revert a hideous bug Jim accidentally planted in my reference $0$
format in 8c48877. This wasted hours of my life searching for
apparent core bugs and the format is forever ruined for use with git
bisect (which was its primary use). Bad_day.mpg
Fix for MESA trying to evade detection. See #2204.
OpenCL: Device-detection fix for MESA. It gives us upper-case device
names. See #2204.
OpenCL: Refactor a reused codepage macro and move to opencl_unicode.h
OpenCL: Better shared-code support for nvidia Pascal.
Fix for another bug introduced in 8c48877.
Renamed oracle9i_fmt_plug.c to o3logon_fmt_plug.c (no other changes).
o3logon: Change format struct name. Fix some potentially expensive
code in valid().
Add a 'dump_stuff' debug macro for *char to opencl_misc.h.
ntlmv2-opencl: Preparation for gpu side mask. Drop vectorization
support. Reduce to a single kernel. Move the final hmacs to a
separate function.
ntlmv2-opencl: Implement gpu side mask & compare. Speed now more or
less on par with Hashcat, despite our format fully supports Unicode.
pass_gen.pl: Fix a UTF-8 bug introduced in 27ecb1d.
pass_gen.pl: Proper code for allowing user to say -codepage=UTF-8
instead of the short-cut -utf8 (which worked).
Autoconf: Fix a bug introduced by Jim in 154314c causing int128 to be
always disabled.
config.c: Avoid multiple warning/error output with fork/MPI
OpenCL: Minor tweak to GPU-side mask auto-tune output.
zip2john: Fix a bug introduced in 744cdb91 by yours truly: File magic
could not be used.
oldoffice-opencl: Some optimizations for good measure. Not much
difference.
GPU-side mask formats: Fix an edge-case bug.
pass_gen.pl: Again, don't require obscure libs unless actually needed.
This is a quick fix, the real solution is not to depend on these at
all. Problem introduced in 030e303.
OpenCL mscash & ntlmv2 formats: Drop a few redundant lines.
o3logon format: Use a truncated salt instead of segfaulting in case
user runs a codepage-encoded input file with encoding set to UTF-8.
See discussion in #2243. Closes #2243.
ntlmv2-opencl: Simplify code after recent change.
Many OpenCL formats: Change comparisons with constants according to
coding style. Nothing effectively changed, just easier to read.
pkzip format: Bugfix and improvement of SWF file magic.
john.conf: Update AMD driver info. Apparently we can't tell 15.11
(beta) from 15.12 (release) with just OpenCL queries. I presume the
OpenCL part of them is identical.
OpenCL: Fix a bug with Global_MaxDuration. See #2204.
ZIP formats may have their binary truncated in pot file, so can't use
hash funcs. Closes #2245.
Some more formats that may have their binary truncated in pot file, so
can't use hash functions. See #2245 et al.
Add a self-test for catching formats that may get their pot entries
truncated, but use get_hash(). See #2245, #2117 et al.
Last bunch of formats (that the self-test could detect) that may have
their binary truncated in pot file, so can't use hash functions. See
#2245, #2117 et al.
OpenCL RC4: Very odd way of gaining a 4x boost, nicked from Hashcat.
oldoffice-opencl: Prepare for GPU-side mask/compare.
oldoffice-opencl: Implement GPU-side mask. Speed now more or less on
par with Hashcat, despite our format fully supports Unicode. #1845
oldoffice-opencl bugfix: result was not cleared after MITM hit.
NSEC3 bug fixes. An iteration count of zero is valid according to the
RFC. Our crypt_all() would loop for ever if given zero. Closes
#2258.
Ensure reset(realdb) is called with --skip-self-tests. Closes #2256.
See also #2090 and #1967.
Fix some formats that used prepare() for things better done in
split(). Some of them even had the functionality in both. See #2254.
SAP B format: Don't output encoding warning with --list=format-tests
Fixes for prepare/valid encoding checks/conversions. See #2252.
as400-ssha1 format: Add a UTF-8 check in valid() since Convert()
depends on correct encoding being used.
Drop a spurious asterisk from AS400-DES format tag.
Add OPT_REQ_PARAM to a bunch of options that missed it. Closes #2260.
o3logon format: Drop the prepare. Closes #2254.
formats.c: Fix a problem with gpu-side mask formats, introduced in
1a666cb. Tricky business.
Opencl formats: Typos in comments.
krb5pa-md5-opencl: Prepare for gpu-side mask/compare.
krb5pa-md5-opencl: GPU-side mask & compare.
More optimized early-reject for krb5pa-md5-opencl. This changes our
shared RC4 to no longer hard-code length of decryption at compile
time which also affects the oldoffice-opencl format, but this had no
impact on performance.
Update copyright info in OpenCL SHA-1 formats (drop the GPLv2).
There's nothing left of Samuele's initial work in them nor is there
anything of significance from the projects he referred to.
OpenCL raw-sha1: Optimizations. Swap binary once before starting
crack, instead of wasting time doing literally 25 billion swaps per
second for the whole crack run. Also unify raw-sha1 with shared
sha1.
mysql-sha1-opencl: GPU-side mask & compare.
OpenCL: Drop the option USE_SHA1_SHORT (we always use it).
lotus5-opencl: Assorted changes trying to nail problems. #1726, #2242.
Refactor shared OpenCL primitives functions.
RAR-opencl: Use shared SHA-1 code.
Bug fix for memdbg builds: The exit checks were never made if session
ended with an abort or --max-run-time reached. This seriously
limited its use when debugging. Closes #2264.
Refactor shared OpenCL primitives functions (MD4, MD5).
On resuming, print brief info from main cracking mode.
c5c1fd3a broke RAR-opencl for OSX.
OpenCL shared SHA1: drop unused variables.
Add yet another "format class" --format=all that overrides anything
else (eg. [Formats.Disabled] in john.conf) so you know every single
format will be tested/listed regardless of conf.
Make --format:all more versatile. It now also support things like
all-gpu, all-@sha1 and so on.
as400-ssha1 Unicode test was made too early. No need to complain if
we're not seeing "this" format. See #2252.
office2john.py: Pure whitespace commit (spaces -> tabs).
office2john: Add handling of a specific problem, so we can continue
with other files instead of aborting with error. I'm not sure the
problem is with corrupt files or a bug in office2john.
pass_gen.pl: Errors and warnings should go to stderr.
pass_gen.pl: Drop/change some spurious old "print" which should now be
a return string to unified output function.
pass_gen.pl: Pure whitespace fixes (spaces -> tabs).
Mask mode: Correction for an ETA problem when running non-hybrid,
fixed length, with node/fork AND with a mask that get truncated due
to max length. And only then, whoa.
Tweak verbosity levels again. We lacked a level between "normal jumbo"
and the lowest (1, which even suppress cracks). This new scheme is
more future safe: There is currently no level "> VERB_LEGACY" and "<
VERB_MAX" but we can easily just bump the max to 6 if we need one.
office2john: Revert 67d2d385 and also fix .editorconfig so any python
files are specified as having silly spaces-indentation.
Some tweaks for recent chmod change. Simplify code, use POSIX macros,
require rw for owner because eg. 0066 will make it unreadable by
yourself. Rename IgnoreLogChmodErrors to IgnoreChmodErrors since it
affects both.
logger.c: Code-style fixes, mainly over-long lines.
e50f748c missed related changes in john.conf.
logger.c: Portability workaround for Windows.
logger.c: Portability workaround for Windows, take 2.
wpapcap2john: Handle pcaps which lack beacons but do have probe
responses. They look the same as a beacon (for our purposes) so very
easy fix.
wpapcap2john: Minor cosmetic changes (diagnostics, comments).
MPI: Show node name with OpenCL device info.
misc.c: Fix a long-standing #ifdef-logic bug with MPI vs. fork causing
pexit() to segfault due to a dangling 'else'.
Fix alignment in usage blob (problem introduced in 347702b).
regex.c: Fix a new warning introduced by be39643.
AC: Add a test for sizeof(wchar_t). Note: If that type isn't available
at all, size will be defined as 0.
Unicode engine: Don't write *pointers as * multiplications, that
sucks. This commit is whitespace-only, no real change.
Regex mode: Fix for recent changes in librexgen. We now properly
convert to wchar_t. Closes #2296.
CUDA: Fix various problems with OSX/macOS.
Rexgen: Handle internal codepage correctly. See #2296.
Unicode/wcs bugfix for exotic systems.
Drop artifact from b64645f7.
When populating test_db, don't honor --user and --salt options. See
#2305.
Revert a change in mask.c from 6fb81e0 that introduced a bug.
mask.c: Bug fix for resuming iterated length. See #2306.
Replace our 7z2john.py with 7z2john.pl (pristine 7z2hashcat.pl)
Adapt 7z2john from pristine 7z2hashcat
7zip formats: Allow any data size (drop the idea of BIG_ENOUGH). See
#2314.
Bump SIMD max. salt length in HMAC-SHA256 format to accomodate for
some JWT tokens. See #2318.
Minor fix to office2john. See
https://hashcat.net/forum/thread-5739-post-32191.html#pid32191
Raw SHA-1 formats: Revert to unifying to hex, not Base-64. It had
several problems (could not --show old entries, not compatible with
dynamic_26, not compatible with Hashcat and so on).
Mask mode: Add ?h and ?H for hex digits (hashcat compatibility).
Closes #2324.
mask.c: Fix a silly bug introduced by c19f75fb9
Fix for rar2john buffer overrun problems. Closes #2337.
Revert "OpenCL formats using "perfect hash tables" can't be used with
single"
recovery.c: Re-position a comment that was pushed away from what it's
referring to.
Fix weird bugs introduced in c79fce1, messing salt resume up. You
can't look at salt->count, that's the number of hashes for *this*
salt.
Drop the raw SHA-0 format. It's unlikely anyone will ever need it.
Closes #2342.
Missing update in autoconfig.h.in related to FPGA support.
Drop CUDA support. Closes #2348.
Some more cleanup after dropping CUDA (mostly cosmetic).
Some tweaks to incremental mode vs. --min/max-length options. See
#2316.
Fix a hideous bug in CPU version of WPAPSK format concerning new_keys
flag. It was only set in clear_keys() but not in set_key(). This is
not enough when running Single mode.
Fix two memory leaks in zip2john. See #2219.
Drop CUDA artefacts from doc/INSTALL*
Fix more memory leaks in zip2john. See #2219.
Fix more memory leaks in zip2john and stop using alloc_tiny. See
#2219.
Add new option --single-seed=WORD. This is incredibly effective for
eg. web dumps where some word/name is very common as part of the
passwords. Eg. for the LinkedIn dump you'd use
--single-seed=linkedin together with normal single mode.
Document the new --single-seed option.
encfs_common.c: Fixes for compatibility with OpenSSL 1.1. See #2355
Unicode/codepage fix for --single-seed option.
Bugfixes for Unicode/codepage support vs. single mode.
Change --single-seed option to only allocate global words once. Also,
never create initials or word pairs from seed words. See #497 and
#2357.
Add --single-wordlist option as well as a john.conf list entry for
static single mode seed words. Closes #497 and #2357.
Automatically bump word pair limit for --single-wordlist and
--single-seed options to accommodate the list of words. Also update
documentation.
Fix a bug in leet.cc format: You can't free a "tiny alloc".
Drop all use of ARCH_WORD_64 (introduced in 61cea42 for no clear
reason) in favor of uint64_t. Closes #2361.
Some code clean-up in loader.c, and fix potential issues with
truncated pot lines. See #2366, #2367.
7z2john.pl: Upgrade from upstream 7z2hashcat.pl. See #2314
7z2john.pl: Update from upstream 7z2hashcat.pl. See #2314.
Drop a whole bunch of obsolete stuff from "unused" directory. We
should be a bit more restrictive with archiving stuff there. Samples
should not be placed in the repo at all, we have a wiki page for
them. Docs should be in docs directory.
Add LZMA and LZMA2 decompression functions (from LZMA SDK).
7z formats: Add support for LZMA and LZMA2 decompression. Reduce false
positives to nearly zero and drop FMT_NOT_EXACT. Despite this we've
now got a number of optimizations for early rejection.
7z2john.pl: Update from upstream 7z2hashcat.pl.
7z: Bug fix for coder props parsing.
7z2john update from upstream.
Fix a recently introduced memory leak in 7z formats.
Memdbg fixes for new LZMA code.
7z formats: Avoid FP, ensure we round up to AES blocksize.
7z2john.pl: Update from upstream. Support added for SFX files. Closes
#2120.
Fix non-thread-safe code in enpass-opencl. Closes #2393.
7z2john.pl: Update from upstream.
Add generic OpenCL code for AES. Not used yet.
Enpass and Strip formats tweaks. They had unnecessary large buffers
and decrypted more than needed.
wpapsk2john: Drop hard-coded limit of ESSIDs supported in a batch
(realloc on the fly instead). Also search the database in reverse
order for quite some speedup on extremely large pcaps (eg. from
war-driving where the related data to a packet is more likely to be
near end). This was inspired by recent huge sample posted in a
Hashcat issue (955).
OpenCL AES fixes.
ODF-AES OpenCL format: GPU-side AES decryption. This was mostly made
just for testing and PoC but it turns out it made for a better than
4x boost on nvidia Maxwell (single CPU thread). AES code is still
not optimized at all and there's a couple of SHA-256's we could move
to GPU as well if we wanted to.
Add a mem_realloc() function just for good measure. Some uses of
realloc can't use this because they are in external *2john tools
that don't link memory.o. Others have their own special handling.
Closes #2365.
OpenCL AES: #ifdef out AES_cbc_encrypt so we don't get complaints for
unused functions.
7z2john.pl: Update from upstream.
Shared SHA-2 OpenCL code: Bugfixes. Protect macro arguments and ensure
second-level macro gets its W variable correctly.
plugin_deps.pl: Support OpenCL kernel sourcing other kernel(s).
OpenCL ODF-AES format. Try a new approach for using several kernels,
and now do *all* work on GPU (and drop OpenMP). This yielded another
near 4x boost and including recent 4x boost we are now near 15x the
original speed. Closes #2400.
7z-opencl: GPU-side early rejection (check AES padding). Closes #2398
7z-opencl: Minor fixes.
7z formats: Add padding size and compression type as "costs".
agilekeychain-opencl: Move all work to GPU. Closes #2403
Correction for agilekeychain algo name (missing in last commit).
bench.c: Bugfix for dyna salt when 1st salt is reused (would
segfault).
Enpass OpenCL: GPU-side AES and verify. Closes #2404.
Drop an unused variable in enpass kernel.
Fix for a segfault in dynamic prepare() during pot reload. I'm not
quite sure who's to blame but I fixed it in crk_reload_pot(). Closes
#2415.
Enpass kernel: Fix a race condition problem with the "any cracked"
bit.
7z2john.pl update from upstream. Support for split archives added.
Upstream c143795..fe800e0.
Globally fix about a thousand whitespace violations. Contrary to
popular belief, omitting spaces doesn't make your code faster. It is
actually a little harder than that. Also change a number of "char
unsigned" to the more friendly "unsigned char".
7z-opencl: 62cec9d5 introduced a false negative bug for the "many
salts" case. We did the early reject for all salts using data from
just first salt. Add a separate kernel for the AES stage and run it
per salt.
Fix race conditions and other bugs in recent AES OpenCL formats.
OpenCL agile/iwork/enpass formats tweaks / bugfixes.
7z-opencl: Drop an unused variable.
OpenCL AES: Add ECB interface.
Add volatile to variables handled with atomic functions.
OpenCL AES formats: Optimization just for good measure.
Enpass-opencl: Copy/paste bug
New Office OpenCL format joining the separate ones (#2424)
Allow building against OpenSSL >= 1.1. Formats that will be disabled
are currently GPG, GPG-opencl, KRB5TGS, PDF, PFX and WPAPSK (CPU
only). Closes #2355.
Add build-time warnings for disabled formats. See #2355.
Drop PFX format in favor of PFX-ng and rename the latter (but not its
format tag). Closes #2431.
Drop OpenSSL dependencies from WPA-PSK format. Closes #2434.
GPG formats: Support OpenSSL 1.1. Closes #2430.
AES fixes for internal AESNI-aware code vs. OpenSSL.
GPG format needs OpenSSL for AES_cfb128_encrypt
Add a self-test for -opencl suffix in label being lower case as
required. See #2436.
Zip-opencl: Drop AES from algorithm name, it's not used!
o5logon-opencl: White-space fixes (no-op).
o5logon-opencl: GPU-side AES and verify. This made a 7x boost.
OpenCL formats: Sod using atomics. There simply is no safe way to
initialize the variable to 0 other than to do it in a separate
kernel or transfer it from host side. These formats aren't fast
enough that it matters anyway. See #2439.
Various minor OpenCL optimizations and bug fixes.
ssh-ng bugfix for truncated pot entries. See #2457.
AS400-ssha1 format: Don't use identical test vectors with different
syntax. See #2457.
External HybridLeet mode: Case-toggle letters that lacks leet
alternatives. Closes #2461.
Do not allow a hybrid external mode applied to single mode. Closes
#2462.
Add a --max-candidates option.
Fix weird bugs introduced in 0ceedb2 including --make-charset not
working at all.
Let new -max-cand option also affect -stdout
Followup work for new -max-cand=N option. Closes #2475. * Change the
"Session aborted" message when session was stopped due to max.
reached. * Allow resuming such stopped job (for processing next set
of N cands). * Document the option. * Avoid silly portability
problems with %lu vs. %llu for uint64_t.
Some updates and white-space consistency for doc/OPTIONS.
-max-cand=N option can now take a negative number. That means the
"count" will reset on each crack (so it will terminate after N
candidates are tried since last crack). See #2475.
Set CRLF line feeds for john.asm in .editorconfig. See #2484.
Drop our local stdint.h
Drop obsolete typedefs.
unicode.h: Use stdint.h types
Makefile.in: Drop a stray "stdint.h" dependency for bitlocker2john
that probably got in when merging.
Travis CI: Allow OpenCL failures
Fix a bug where --show=left only showed statistics (but no hashes)
unless at least one hash was already cracked. Closes #2506.
keepass format: Move sharable stuff to a separate file, in preparation
for an OpenCL version.
zip2john: Support 64-bit sizes in zip version 4.5. See #2528.
Assorted 64-bit-size fixes for zip/pkzip formats. See #2528.
Fix a bug in fgetll. We somehow overlooked that fgets' size arg is an
int!
Fix a pkzip problem with sizes exceeding 32-bit signed int.
Do not trust AES padding as early-reject for 7z (unless that's the
only thing we can do due to truncated data). Closes #2532.
Oldoffice formats: Fix a bug caused by using source() in a salted
format. This is simply not supported. Add a self-test to stop us
from doing the same mistake in the future. Closes #2535.
Add some better information for password max-length in case of UTF-8.
We now express it in characters, not bytes.
DMG-opencl: Change max. duration to be less strict.
Bug fix for new length reporting. See #2529.
Tweaks for new length reporting. See #2529.
OpenCL: Whenever format have a notion of "cost" and we're auto-tuning
with (#2544)
SAP format fixes for max. length.
Bug fix for recent auto-tune-with-real-db.
Minor cleanup in 7z formats.
Length reporting tweaks for LM formats.
Hard code SAP/B length reporting for non-UTF-8 and set FLG_8_BIT
again. Closes 2545.
Don't start "the clock" until all loading, auto-tune etc. are done.
This ensures stable speed readings from start, and things like
--progress-every and --max-run-time will work better.
NT-opencl: nvidia bug workaround. Closes #2335.
Add a separate .editorconfig for src/ztex subdirectory, reflecting the
odd mix of line endings. Closes #2484.
pkzip format: Fix a bug in salt compare size and add a note about
"same password assumed within one archive". Closes #2542.
Fix a couple of obscenely promiscuous or slow prepare() functions.
There's many, many more to fix.
Apply nvidia bug workaround in three more formats. See #2335.
Add a format flag FMT_HUGE_INPUT telling us that a format supports
huge input lines (ie. longer than LINE_BUFFER_SIZE) and thus
may/will truncate its pot entries.
OpenBSDsoftRAID format: Drop a dupe test vector so we don't confuse
the test suite.
Update CREDITS-jumbo and CHANGES-jumbo.git
Revert some of changes from 272c664 for the net-md5 format. They were
needed for tag translation (I thought it was merely about supporting
bare hashes).
Git .mailmap for e-ago
Revert some of changes from 272c664 for the net-sha1 format. They were
needed for tag translation (I thought it was merely about supporting
bare hashes). Closes #2554.
Bug fixes and workarounds avoiding -Wformat-truncation warnings from
gcc-7. Closes #2533.
Style fix, no-op: Change all '# define' -> ' #define'.
Whitespace violation fixes, no-op.
Code cleanup: Drop a few unused macros (but not in borrowed code).
Serious performance bugfix for fgetll() in edge cases.
Add a makefile target for producing test files from all formats.
Bugfix for the fgetll bugfix in 07ddb4f7. Also never allocate less
than 4K.
Fix for uninitialized variable. Closes #2556.
Fix for uninitialized variable in fgetll(). Silly me.
Pot sync: Emit a warning if pot file shrunk. Merely seeking past end
does not detect that.
RAR OpenCL format was lacking FMT_HUGE_INPUT.
7z formats was lacking FMT_HUGE_INPUT flag.
OSPF format is FMT_HUGE_INPUT, electrum and multibit aren't.
Fix a bug introduced in 827df441.
Don't allow gcc 7.1.1 to complain about perfectly fine fallthrough
code.
Fixes for -Wold-style-declaration.
Various fixes for -Wextra
Add test files (from 'make testfiles') to .gitignore
DMG OpenCL: Use split kernel. Closes #2564.
Add SL3 CPU format. Closes #731.
Add a silly kludge for a silly test. See
https://github.com/openwall/john/commit/e4795d6#commitcomment-22477620
Buffer overrun fix for SL3 format in non SIMD builds.
Revert "Using the new multibyte character aware API from rexgen
(#2566)" (#2569)
SL3 ensure correct string termination in non-SIMD code.
Add SL3 GPU format. See #731.
SL3-opencl: Correction of format flags.
SL3 formats: Ensure we self-test prepare() function.
Ethereum format: Set FMT_HUGE_INPUT. See #2568.
SL3 formats: Share common code.
OpenSSL-enc format: Get rid of OpenSSL EVP calls. Apart from being
more portable we also got a 25% speed boost. See #1686.
Get rid of OpenSSL EVP in encfs formats. See #1686.
Drop artefacts from EVP and BIO high-level crap that we have gotten
rid of. Some of it were just comments now but they were removed or
modified to not hit a grep. Closes #1686.
mscash formats: Fix bugs for parsing salt containing '#'. See #2575.
ztex .editorconfig update after 0bfd564c
Fix some run-time OpenCL compiler warnings for ethereal-presale, plus
other insignificant changes.
PFX: Add a test vector with a non-ASCII password.
Ethereum-presale OpenCL: Auto tune tweaks. Aim for similar durations
of loop and post-process kernels. Avoid uint8_t and size_t in
kernels.
OpenCL SHA-1 (CTX version) clean-up.
PFX optimizations. Move the last HMAC-SHA1 to GPU (for crying out
loud?). Optimize/unroll some 8-bit operations. Use a quick raw SHA-1
for inner loop of PKCS12. Over 8x boost (that last thing made the
most). See #2176.
Update .gitignore with a couple of new entries.
Ethereum-presale OpenCL: Add a cast to pacify some runtime compilers.
OpenCL: SHA-2 AMD fix for OSX.
Optionally trust 7z padding for early rejection. See #2532 and
470766a.
Drop test for -Wno-implicit-fallthrough. For some reason, the cc
options check passes that even though it's not supported. Anyway
it's not needed unless we use -Wextra.
PFX formats: Add test vectors describing the need for #2606.
MS Money format: Correction for full UCS-2 support (strip 8th bit).
See #2607. Also some optimizations.
MS Money: #2607 8-bit fix: Assume ANSI codepage -> upper-case ASCII ->
strip 8th bit -> UCS-2
Regex mode now needs librexgen >= 2.0.6
Fix a problem with resuming a descrypt-opencl session. Closes #2662.
Fix a bug introduced in 0168a45a when using fork (not MPI). Closes
#2664. This might also affect #2547 somehow.
WPAPSK: Drop some dead code. There's little point in having a function
always return 0 and then test for other returns...
Improve WPAPSK valid() so we don't accept versions we don't support.
Closes #2678.
Fix a problem with possible AVX2 (et al) code before we
detect/fallback for CPU type. Closes #2679.
Remove some dead code from WPAPSK. Key is always 32 bytes.
WPAPSK formats: Add keyver as cost 1 = WPA (MD5), 2 = WPA2 (SHA1), 3 =
802.11w (SHA256)
WPAPSK-opencl: Add support (GPU side) for 802.11w / WPA-PSK-SHA256.
Closes #2648.
Add "PMF" to wpapsk algo names, indicating we support 802.11w
WPA2-PSK-SHA256
Sybase ASE format: Decrease max. length to 30. Closes #2686.
Bump RULE_RANGES_MAX from 16 to 30. See #2684.
Replace calls to abort(3) with our own error().
Fix a mismatch between (POSIX) sleep(3) and emulation of it for
Windows.
Replace guerilla usage of exit() to error().
QNX format: Move a valid check from crypt_all() to, wait for it,
valid()!
OpenCL: Bug fixes. The dreaded PGP-WDE bug that only showed up on
nvidias were caused by an optimized macro assuming data to be
aligned as integer. Most uses of that macro always involved aligned
data but the CTX versions of SHA-1 and SHA-2 may pass unaligned
data. The now added code to handle that will (hopefully) often be
optimized away.
OpenCL: SHA1/2 CTX also had alignment issues with output. Closes
#2710.
PGPWDE-OpenCL: 5% boost just be ensuring 'struct pgpwde_password' is
sized to end up aligned (124 + 4 == 128).
Oops, the previous commit obviously made a length 125 test vector
fail.
Tweaks for suppression of heavy logging. See #2717.
Bugfix for resuming a -stdin session.
OpenCL shared code optimizations (memcpy macro replaced with
functions).
Minor tweaks to pgpdisk-opencl. Avoid non-native widths like the
plague, reduce use of private memory.
pgpwde-opencl: Since host code hard-codes saltlen and key_len, do so
in kernel also. This allows the run-time optimizer to gain us some
5% boost.
Agilekeychain: Add the new test vector from f78f329 to OpenCL version
too.
krb5pa-md5-opencl: Add the new test vector from 4810534 to OpenCL
version too.
Electrum(-modern) OpenCL format: Correct algorithm name.
OpenCL shared code: Avoid build warnings on some platforms.
PGP OpenCL optimzation
Revert "Add support for Ethernet link type"
wpapcap2john: (Re-)add some diagnostic comments after previous
revertion.
eeacc1a merely hid an older bug instead of fixing it. Duh! Fix the
silly band-aid (add a warning print) and also fix the original bug.
wpapcap2john usage blurb: Clearify -e option.
wpapcap2john: Re-introduce support for Ethernet encapsulation. See
#2751.
Add hccap.h (preparation for #2753).
Add WPA-PSK PMK formats. Closes #2754.
wpapsk-pmk-opencl: Optimization for many salts.
wpapsk-pmk-opencl: Do not set FMT_CASE
hccap2john: Add support for reading hccapx files. Closes #2753.
Fix a problem where -max-run-time=N with -fork would loop signals so
some processes ended prematurely. See #2757.
Only add WPA 802.11w CMAC functionality if our OpenSSL has CMAC. This
does not apply to OpenCL formats, they do it on GPU. Closes #2763.
cracker.c: Ensure we never try to sync pot file if event_abort is
raised. This shouldn't happen anyway but was added as safety.
Remove dupe logic from x86-sse.h resulting in incorrect CPU_NAME for
anything beyond SSE4.1. See #2764.
Suppress OpenMP warnings for ztex formats. Closes #2771.
wpapcap2john: Improve ESSID gathering. Closes #2768.
wpapcap2john: Warn about silly tools like wpaclean.
hccapx2john: Update license/description & links.
wpapcap2john: Type led to build warning.
DEScrypt-opencl: Avoid printing silly message once per node.
Refactored some extremely confusing and misleading structure names in
wpapcap2john that had me make mistakes over the years.
wpapcap2john: Code clean-up (add alloc macros). Re-init more stuff
between each new file. Add some debug output in case of bad data
seen.
.mailmap update
Update CREDITS-jumbo and CHANGES-jumbo.git
wpapcap2john: Fix a long standing bug where too many outstanding
unverified auths wouldn't emit a realloc. Thanks to ZeroBeat for
finding this!
wpapcap2john: Cosmetic (diag) fix.
wpapcap2john: wpapcap2john: Add support for 802.11n HT field. Many
cosmetic changes (-v option for verbose output) and a few bug fixes.
Do not populate testdb if we're not going to use it. Also, fix for
repeated message using --fork. Closes #2792.
wpapcap2john: Warn about insufficient snaplen and speed up promotion
loop. Cosmetic bugfix for -v option: Some packets don't have a src
field.
wpapcap2john: Avoid double allocs/copies of same data, and refactor.
Fix indentation in hccap.h
wpapcap2john: Change bunch of "packetx" pointers to array "M[x]"
wpapcap2john: Detect and use M4 packets with intact nonce (in case we
missed the M2).
wpapcap2john: -r Ignore rep count
wpapcap2john: Safer handling of data, better handling of unverified
auths.
wpapcap2john: Bug fix for -c option (only use verified auths).
Loader and wordlist/PRINCE modes: Refuse to eat UTF-16 files. Wordlist
mode also had the UTF-8 BOM-skip extended to every line in the file
(for cases where luser concatenated several infected files). Also,
the checks were simplified/optimized, mitigating the performance
hit. Closes #2802.
OpenCL: Add a shared SHA-512 "CTX" (init/update/final style) kernel.
See #2801.
Do not suggest using --fork when user runs a non-OMP format with
-stdin or -pipe. Closes #2777.
Avoid running john-local.conf twice when CWD == $JOHN. Closes #2776.
wpapcap2john: Bugfix for -r (ignore replay-count) option. That whole
stuff is WIP. See #2773.
wpapcap2john: Bug fix and some refactoring.
wpapcap2john: Bug fixes and refactoring.
wpapcap2john: Minor fix for -v showing TS for hit.
wpapcap2john bugfix (cosmetic)
Mute a couple of OpenCL runtime build warnings. See #2810.
GPG-opencl: Add missing algorithms (cosmetic)
Make sure our definition of CPU name matches what was actually defined
with the cpuid tests. Closes #2764.
CircleCI tweaks. The log was completely unfathomable.
CircleCI bugfix
Fix a regression caused by 599a1674: The shared SWAP64 macro need to
be type agnostic (type may be vector).
No-op change: Unify whitespace.
wpapcap2john: Drop stray debug text.
Only bail on UTF-16 BOM's when input encoding is UTF-8. Closes #2812.
Travis CI seem to have a broken VM announcing AVX2 but not fully
supporting it. Disable AVX2 for now.
wpapcap2john: Correction of MAC address outputs in supplemental JtR
input file fields. We output STA MAC as uid and AP MAC as gid.
This way, user can select all hashes authenticating to a certain AP
using the --group option, or all hashes from a certain STA using the
--user option.
wpapcap2john: Fix the support for reading airodump .ivs files.
wpapcap2john: Switch to using stdint.h types.
wpapcap2john: Further tweaks to airodump-ng .ivs file support.
Relax the UTF-16 BOM check in wordlist and PRINCE modes to only warn,
not bail. The rationale is some low quality wordlists contain a mix
of encodings but likely mostly UTF-8. See #2812, #2802.
Tweaks for UTF-16 BOM check vs. MPI/fork (reduce repeated messages).
wpapcap2john: More tweaks. Output more unique handshakes, yet try to
avoid pure dupes. Fix an endianness bug that caused mishaps.
gpg-opencl: Get rid of build warning due to missing #include. Closes
#2816.
wpapcap2john, major rewrite: Keep state of AP/STA pairs instead of
just AP. This is needed for some elaborate attacks. Suppress
consecutive dupes from ivs parsing. Add EAPOL breakdown diagnostics
(-v -v -v) Improve option parsing. Improve checks of replay-count
(or not) and timing checks. Add support for outputting anonce-fuzzed
hashes where needed (happens automagically when needed, with
detected endianness). Add -d option (reduce dupe suppression, mostly
for debugging). Try to tell real AP's handshakes apart from the
attacker's. Lots of code clean-up.
wpapcap2john: Typo that for some reason only affected MinGW.
Move cygwin/ethernet.h to cygwin_ethernet.h because I love having
thousands of files in a single directory (not really).
wpapcap2john: Add -f <num> forced anonce fuzzing. This will fuzz +/-
<num> for both LE and BE (assuming incrementing last word of
anonce). Also tweaks for the auto-fuzzer (in some cases we can
detect fuzzing is needed even without -f option).
wpapcap2john: Handle (merely print in -vv) EAP Identity Responses.
Fix regressions after merge.
Use "-sj8" in all 'make' examples. See #2820.
wpapcap2john: Fix a cosmetic problem with -m combined with -vv. Fix a
BSSID source mixup with ethernet encapsulation. Fix handling of
handshakes with unknown ESSID (post-pone/warn and finally print
anyway, using MAC). Fix -e option that was broken for a while.
wpapcap2john: Indicate local (i.e. probably randomized) and multicast
MAC addresses (-vv).
doc/EXAMPLES: Update some old abbreviations the are no longer
unambiguous. See #2616.
wpapcap2john: Detect Ipv4 mcast MAC addresses.
wpapcap2john: Avoid wrong output of "WPA3" for WPA2 keyver 3.
Multibit format: tweaks for better OpenMP scaling (marginally
successful). See #2846.
Fix a silly bug where many formats used omp_get_num_threads() instead
of the intended omp_get_max_threads().
Fix a bug with non-OMP introduced by 00655ad63
Fix a few formats that failed to use the PH_MASK_* macros and thus
failed after recent core merge.
Fix a "bug" where dynamic did not adapt to new binary/hash sizes.
Fix about one ppm of the whitespace and/or code style violations.
Bump the default for mem-file-size to 2 GB.
Revert to using 1 GB -mem-file-size for 32-bit systems but keep it at
2 GB for 64-bit. Also update docs (and avoid future discrepancies).
OpenCL: macOS driver/runtime bug workarounds. Closes #2923.
Add JSON version of --show=types (as --show=types-json).
Mask mode: refactor a global variable name so we know its origin.
Mask mode: Bug fixes for min/max length and ETA/progress. Closes
#2882.
Markov mode: ETA/progress fixes. Closes #2799, see also #2779.
7z2john.pl: Update from upstream 7z2hashcat.pl (1.2, Nov 16 2017)
gpg2john: bug fixes for -DDEBUG builds.
--show=types-json: Output booleans and numbers correctly and start
numbering lines from 1 instead of 0. Mute fields that are empty
strings or boolean false.
Fix comments in john.c according to code style.
Register dynamic formats last. We certainly don't want it to have
precedence over optimized formats. The old comment about it needing
to be registered early (bc of thin formats) does not seem to apply
anymore.
Fix a build warning for status.c LLu vs. PRIu64 after core merge.
Avoid lots of build warnings for PRI[ux]64 on some systems.
cracker.c and wordlist.c bug fixes after core merge.
Travis conf: Do not allow ASan or macOS failures.
--show=types-json: Escape control chars (any 8-bit stuff is currently
assumed/required to be UTF-8 and not escaped).
Change run-time CPU detection for AVX2 to actually only check for AVX2
but neither of BMI1, BMI2, MOVBE and FMA3.
MPI benchmark: For MPI frameworks lacking reduce for uint64_t,
re-introduce the old bug of taking the sum of each half without
carry. Better than nothing and I'm not sure it ever hits us anyway
in a benchmark. If it does, well, it's just cosmetical.
--show=types[-json]: Ignore pot file(s) when --show=types is used, for
speed-up (it's not used anyway).
Fixes for new CPU detection in ./configure (eg. non-Linux) See #2966,
#2972
Make CircleCI builds silent again. The output is too large even
without it.
Move CircleCI-MinGW.sh from src to .circle See #2962
Bug fix: simd-intrinsics.h had an obsolete macro clashing with
non-SIMD builds.
Fixup: Last commit accidentally had things commented out instead of
removed.
.editorconfig entries for autoconf files (.ac, .m4)
Temporary bug workaround for PPC/ARM SIMD.
Bug fix for AVX512 CPU detection/fallback.
Autoconf: Add --enable-simd=foo option in a way that doesn't add it
when building john.o (which may break CPU fallback). And some more
clean-up. See #2862. Closes #3002.
Autoconf fixes: --disable-simd: Do not add simd-intrinsics.o for
non-intel.
AC cpuid fix: Enhance Claudio's excellent tests to use autoconf macros
instead of the less safe "bastard compile". Also adds it to AVX512*
tests in the same manner. See #2881, #3002.
AC: I was using mic.h where I shouldn't. It made no harm but was
confusing.
Avoid merge conflicts whenever core bumps version.
Refactor some file names with perv... sorry, reverse polish notation.
Fix a problem with cpuid checks in ./configure on x86-32. See #3041.
Temporary bug workaround: Do not probe 32-bit x86 for better than AVX.
See #3041.
Remove temporary workaround for 32-bit cpuid checks, and implement
them. Also fix missing stuff in x86-sse.h.
x86.S, some clean-up.
x86.S cpu detection bugfix for AVX2 and higher. See #3041
NT-old: Honor the --disable-simd configure option. Closes #3044.
Add INSTALL-FEDORA and also change all references to eg 'make -j8' to
'make -j4' because that seems to be a faster overall suggestion and
bumping it is documented.
Fix a major f*up with the last commit. We changed charset files.
The -D option to gcc defines the macro to 1, no need to say it.
INSTALL-FEDORA: Add proper name for libbz2
Bug fix for SAP-G format, problem introduced in 27c9bf17. SIMD_COEF_32
was tested before defined. Also down-tunes OMP_SCALE so it resembles
the multiplier used for length sorting. Closes #3050.
Autoconf changes for using NEON on ARM64.
Autoconf: Honor --disable-neon for aarch64 (actually cosmetic).
Autoconf: Add -Wno-error=cpp for --enable-werror
NEON autoconf tweaks.
Some manual clean-up after Dhiru's poorly reviewed grep|sed sessions.
Closes #3062
Test using --enable-werror for the bots
Autoconf: Avoid outputting "configure: configure:" in output from
AC_MSG_NOTICE.
Autoconf: Add -Wno-error=#warnings for clang when --enable-werror.
Autoconf: Unify comments (using dnl so they don't end up in the
compiled script), replace some comment that drifted away from what
it referred to and drop some obsolete comments. Also adds default
CFLAGS for when we can't test compiler flags (and this is the only
no-op change).
Further clean-up of autoconf scripts.
Drop some CUDA artifacts and fix bench.c diff against core for MinGW
timing.
SunMD5 would segfault at OMP_NUM_THREADS=1 after Dhiru's recent
clean-ups.
OpenMP: argon2 still used omp_t and scaling at single thread.
Drop some spurious OMP_SCALE stuff from OpenCL RAR format.
timer.[hc]: Code style fixes.
Loader bugfix for testdb cost ranges.
keystore format was freeing stuff in done() that was still pointed to
by the salt db. Change to mem_alloc_tiny (the alternative would be
using dynamic salt).
Add shared CPU autotune code.
Add optional autotune for all applicable formats.
NETLM format: Enable tuning for non-OMP builds. Add correct max keys
per crypt and scaling.
OMP autotune: Use threads == 1 for non-OMP.
Tweaks for MKPC tuning.
Tweaked MKPC and then OMP_SCALE for wpapsk-pmk (core i7)
Tweaks for MKPC tuning. We shouldn't go below MIN_KEYS_PER_CRYPT.
Fix for generic legacy builds.
OMP autotune: Cosmetics
WPAPSK: Tune MKPC and OMP_SCALE for core i7M, incl. non-SIMD.
Ignore any preset OMP_SCALE (ie. always autotune) if we're not an
intel arch. See #3091
Autotune: Tweaks/bug fixes.
KeePass and MySQL formats: Tune MKPC and then OMP_SCALE. See #3091
sha256crypt format: Tune MKPC and then OMP_SCALE. See #3091
sha512crypt format: Tune MKPC and then OMP_SCALE. See #3091
raw-MD5 format: Tune MKPC and then OMP_SCALE (including for non-SIMD).
See #3091
NT format: Tune MKPC and then OMP_SCALE (including for non-SIMD), see
#3091
mscash2: tune MPKC and OMP_SCALE for core i7 with and without SIMD,
see #3091
mscash: tune MPKC and OMP_SCALE for core i7 , see #3091
pkzip: tune MPKC and OMP_SCALE for core i7 , see #3091
phpass format: Tune MKPC and OMP. See #3091
SunMD5: Tune MKPC & OMP, see #3091
Revert omp_autotune() from crypt-md5 format. It's not ready for it.
Revert formats that currently crashes on --tune=auto, see #3091
AzureAD: Tune MKPC and OMP. See #3091
Autotune bugfix, null pointer dereference. Closes #3100.
Minor tweaks to autotune.
Argon2: tune MKPC then OMP_SCALE. #3091
Argon2: Avoid reading past buffer.
One of the Travis builds lacked --enable-werror
OpenCL: Add shared "CTX version" of MD5. Closes #3105.
RIPEMD formats: Tune MKPC and then OMP_SCALE for core i7
raw-sha1-ng: Tune MKPC and OMP_SCALE
HDAA bugfix for --enable-openmp-for-fast-formats
raw-md5-flat bugfix for --enable-experimental-code
raw-md5-flat: Tune MKPC and then OMP_SCALE.
CRC32 format: Tuned MKPC and OMP
HAS-160 format: Tune MKPC and OMP
Tiger format: Tune MKPC and OMP, and enable OpenMP for normal builds.
HDAA format: Tune MKPC and OMP, and enable OpenMP for normal builds.
PST format: Tune MKPC and OMP
32-bit bot-build have some problems with HDAA now that I can't
reproduce. Trying to decrease mkpc.
HDAA: Reverting all changes until I got it straight with the build
bots.
omp_autotune(): Remove some obsolete code.
Autotune bugfix and tweaks
chap format: Tune MKPC and OMP.
Clearquest: Tune MKPC and OMP
citrix NS10: Tune MKPC and OMP
DMD5: Tune MKPC and OMP
Dragonfly formats: Tune MKPC and OMP
EPI and EPIServer formats: Tune MKPC and OMP
Fortigate, tune MKPC and OMP
GOST: Tune MKPC and OMP
hmac-MD5/SHA1/SHA2 formats: Tune MKPC and OMP
HSRP format: Tune MKPC and OMP
IKE format: Tune MKPC and OMP
known_hosts format: Tune MKPC and OMP
krb5tgs: Tune MKPC and OMP
MDC-2 format: Tune MKPC and OMP
Money format: Tune MKPC and OMP
Mongodb format: Tune MKPC and OMP
Mozilla format: Tune MKPC and OMP
krb5pa-md5 format: Tune MKPC and OMP
Mssql12: Tune MKPC and OMP
Mysqlna format: Tune MKPC and OMP
Stribog formats: Tune MKPC and OMP
Pomelo format: Tune MKPC and OMP
Oracle12c format: Tune MKPC and OMP
Lotus85 format: Tune MKPC and OMP
krb5-3/17/18 formats: Tune MKPC and OMP
Krb5asrep format: Tune MKPC and OMP
SSH-ng format: Set to always auto-tune MKPC/OMP. The needs are way too
different between cost 1 and 2. Perhaps they should be two different
formats. See #3091
Ecryptfs format: Tune MKPC and OMP
BKS format: Tune MKPC and OMP
KDE KWallet format: Tune MKPC and OMP. This format needs cost
functions added (and a re-tune). It's probably best ran at
--tune=auto due to big difference between costs.
ZipMonster format: Tune MKPC and OMP
ZIP format: Tune MKPC and OMP
Whirlpool formats: Tune MKPC and OMP.
VNC format: Tune MKPC and OMP
VDI format: Tune MKPC and OMP
TCP-MD5 format: Tune MKPC and OMP
Xmpp-scram format: Tune MKPC and OMP
SSPR format: Tune MKPC and OMP
SNMP format: Tune MKPC and OMP
VTP format: Tune MKPC and OMP
Truecrypt formats: Tune MKPC and OMP
Snefru formats: Tune MKPC and OMP
Skein formats: Tune MKPC and OMP
Raw-sha3 format: Tune MKPC and OMP
Sha1crypt format: Tune MKPC and OMP
SAP-G format: Tune MKPC and OMP
Salted-SHA1 format: Tune MKPC and OMP
raw-SHA384: Tune MKPC and OMP
Raw-SHA224 format: Tune MKPC and OMP
raw-Keccak format: Tune MKPC and OMP
RAR5 format: Tune MKPC and OMP
RACF format: Tune MKPC and OMP
PWSafe format: Tune MKPC and OMP
Postgres format: Tune MKPC and OMP
Pgpsda format: Tune MKPC and OMP
PFX format: Tune MKPC and OMP
PDF format: Tune MKPC and OMP
PBKDF2-HMAC-SHA512 format: Tune MKPC and OMP
OpenVMS format: Tune MKPC and OMP
PBKDF2-HMAC-MD5: Tune MKPC and OMP
Panama: Tune MKPC and OMP
Padlock format: Tune MKPC and OMP
Oracle format: Tune MKPC and OMP
OldOffice format: Tune MKPC and OMP
O5logon format: Tune MKPC and OMP
O10gLogon format: Tune MKPC and OMP
Notes format: Tune MKPC and OMP
MD2 format: Tune MKPC and OMP
ODF format: Tune MKPC and OMP
Lastpass format: Tune MKPC and OMP
KRB5PA-SHA1 format: Tune MKPC and OMP
Keyring format: Tune MKPC and OMP
iTunes format: Tune MKPC and OMP
GELI format: Tune MKPC and OMP
Ethereum format: Tune MKPC and OMP, for slowest salt. Using faster
salts in a real run, --tune=auto might speed things up considerably.
EncFS format: Tune MKPC and OMP
EIGRP format: Tune MKPC and OMP
DPAPImk format: Tune MKPC and OMP
Django-scrypt format: Tune MKPC and OMP
Dashlane format: Tune MKPC and OMP
CloudKeychain: Tune MKPC and OMP
Blackberry ES10 format: Tune MKPC and OMP
Bitcoin format: Tune MKPC and OMP
axcrypt format: Tune MKPC and OMP
FDE format: Tune MKPC and OMP
AIX-SMD5 format: Tune MKPC and OMP
XSHA512 format: Tune MKPC and OMP
NETHALFLM format: Tune MKPC and OMP
NETLMv2 format: Tune MKPC and OMP
7z format: Tune MKPC and OMP
Strip format: Tune MKPC and OMP
ssha512 format: Tune MKPC and OMP
SL3 format: Tune MKPC and OMP
Ensure HMAC formats don't get precedence over eg. MSCash ones (the
former are very promiscuous since they don't really have a tag)
Common mscash code, fix warning message to reflect actual format.
Unicode fix for early use of conversions, eg. in valid().
RAR3 formats: Add self-test for #2899
Whitespace fixes after bfacbbfd (upstream has whitespace violations)
#2899
Further unrar tweaks: Drop a check we did that upstream doesn't, and
fix a cosmetic bug testing an unsigned variable for -1
Bugfix for 32-bit SSE4.1 and SSSE3 detection. Closes #3119.
SSPR OpenCL format: Optimizations, bug fixes. Run 32/64-bit code in
the inner loop instead of 8-bit PoC CTX-style. Add MD5 salt type.
Use a looped kernel. More than 12x boost - closes #3118.
Add CPU detection for SSE4.2, partly because it was trivial now and
partly because the CRC32 format actually uses it.
Enhancement for --show=types option vs. pot file truncated hashes. Now
shows full hash as 'canonHash' and truncated one as 'truncHash'.
Also adds a json '"truncated":true' when applicable.
Cosmetic fix for SSPR OpenCL algorithm_name.
Bugfix for scrypt format when converting Perl format hashes to
canonical. Spotted by chance when looking at #3127.
Add "Constant Buffer size" to --list=opencl-devices.
Revert Jumbo's old BENCHMARK_LENGTH -1000 hack (it predates Git
history), and instead *always* smash passwords when benchmarking -
and in a much better way for OpenCL formats in particular. They may
otherwise show an inflated benchmark speed due to way less thread
divergence than in real use.
Nick a hashcat workaround for some nvidia bug.
OpenCL: Much faster AES code. It can do tens of GB/s on a Titan X and
is needed for KeePass format.
Lotus5-opencl missed sourcing opencl_misc.h
More fixes after recent OpenCL commits, after build-bots' complaints.
I tested all formats on a few systems and they did not even warn.
Keepass OpenCL format. This includes new shared OpenCL code for
Twofish and ChaCha20 and uses the new fast AES code (which is the
heavy part).
Disable keepass-opencl from Travis Ci bot check. I'm pretty convinced
it fails there due to silly driver bugs.
Tighten self-test check for lacking FMT_HUGE_INPUT
GELI format lacked FMT_HUGE_INPUT.
Fix benchmark speed reporting of very fast formats (eg. LM-opencl w/
mask). This bug was introduced at core merge 844df7388 because the
replaced int64 "add32to64()" function assumed unsigned whereas the
new code did not.
DES-opencl and LM-opencl: Add an implicit LUT3 that was missing. Also
source omp.h in files that need it.
Office OpenCL: Drop a redundant AES_set_decrypt_key(). See #3142.
Many formats: Drop silly redundant memsets and useless error checking
when calling AES set_key.
Fix for recent LUT3 substitution. This bug had no impact because the
macro is normally not used.
truth.pl: Add some tweaks and usage blurb bits. Even I did not
remember how to use it.
Keyring-OpenCL: Do everything on GPU-side (AES and MD5 was CPU-side).
Closes #3147.
ZIP-opencl: Do everything on GPU-side.
Drop FMT_OMP from Zip-opencl
DMG formats: Add "version" as a second cost. Loosely related to #3129.
Add shared OpenCL DES code.
DMG OpenCL: Do everything on GPU and drop OpenMP. Massive boost,
especially for v2 low-iteration-count hashes (more than 35x with
Titan X using non-OMP). Closes #3129.
Keepass-opencl fix for some less rigid devices.
Enable keepass-opencl in Travis CI.
Revert "Enable keepass-opencl in Travis CI.". It was a good change,
but not enough for ol' Travis.
Replace shared OpenCL HMAC-SHA1 with a more versatile one.
Truecrypt-OpenCL: Do all work on GPU.
PGPWDE-opencl: Do all work on GPU.
Openbsd-softraid-opencl format: Do all work on GPU.
bitlocker-opencl: Fix a buffer overrun (ASan fault).
Drop the many JUMBO_JTR clauses in formats.c. The idea had some merits
but it ended up utterly confusing.
formats.c: Fix a problem with self-test vs. certain highly-optimized
formats that simply can't have set_key() called again with same
index. Problem seen in SL3-opencl, which was segfaulting.
OpenBSD-SoftRAID OpenCL: Work around an nvidia driver bug merely by
re-ordering stuff a little. The commit also includes some no-op
changes replacing constant numbers with macros, for safety and
clarity. Closes #3154.
OpenCL AES tweaks and bugfixes, better handling of different memory
types (avoiding copies).
OpenCL AES: Use void* for set_key so callers don't need to cast.
Add a couple more min/max length variables to options struct, to keep
apart actually requested vs. calculated limits.
mask.c: Typo and brainfart combined to a minor bug.
Minor fix for incremental: Allow -min-len=0 to override a longer
default. Options checking bugfixes. It's amazing how it keeps ending
up incorrect.
Markov mode: Honor a format's minimum length (bug introduced with
recent changes).
mkv.c: Simplify expression for min length check (no net change).
TACACS-plus format: Minor fixes while preparing for OpenCL version. No
point of storing full ciphertext if we only use 8 bytes of it.
Add NVIDIA LUT3 options for OpenCL MD4/MD5 kernels. They are just for
reference, not used. Also, stop using the ones that were already
defined for RIPE-MD-160 (TrueCrypt format) because the optimizer
ends up better without it.
Ensure we're not disabling LUT3 for SHA1 or SHA2 (where it does good)
when we do so for eg. MD4 or MD5 in multi-algo formats.
Twofish, GOST and Blake256: Omit some "sensitive data wiping" that we
don't need or want in this application.
NTLMv1/MSCHAP formats: Add an atomic guard before or'ing into shared
bitmap. See #3160.
Fix a truncation vs. rejection bug introduced recently. Closes #3164
OpenCL: Add new options --lws=N and --gws=N for forcing local and/or
global work sizes. Unlike the good old environment variables
(LWS/GWS), the new options will be stored in the session file
ensuring a resumed session keeps same values.
rar2john.c: Fix buffer overflow w/ long path/file names. Closes #3114
Refactor common-opencl.[ch] to opencl_common.[ch]. Otherwise no-op.
Fix cosmetic bugs in size output from --list=opencl-devices.
Monero format: cn_slow_hash() had a 2 MB stack-variable that caused
many systems to segfault (esp. with OMP). Changed it to alloc/free
since it wont affect speed anyway. Also some minor tweaks to Monero
itself. See #3156.
Bitwarden format: Do not decrypt more than needed. See #3156. This
probably fixes the segfaults as well - we were reading past the end
of salt->blob - but I could never reproduce that segfault. The
OpenCL format had it right already.
CircleCI script: Use '#!/bin/bash -e' for catching any error.
Keepass formats: Bump MAX_CONT_SIZE to 16 MB. Some kernel rewrite was
needed for handling that. Closes #3169.
Mask mode: Never stretch a hybrid mask. Closes #3189.
Add a FMT_MASK flag, telling us the format supports internal mask.
Warn user if such format is used without mask acceleration. Closes
#3046.
OpenCL LM and DEScrypt: Add FMT_MASK flag.
cracker.c: Do not use a copy of db->fmt->params, it's volatile in
Jumbo at least after soon coming mask mode changes.
Revert "OpenCL: warn if --dev lists more OpenCL devices than fork"
OpenCL: Bail out if --dev lists more OpenCL devices than fork or MPI
nodes. Closes #3176
Tweaks for poor-mans-multiple-GPU vs. fork/MPI. See #3176.
Add --list=format-all-details output for internal mask generation. Add
format group --format=mask, eg:
Prepare a bunch of OpenCL formats for having reset() called again
during a crack (eg. after changing internal mask).
OpenCL formats bug fixes. Due to the way things are freed, we need to
use calloc() or we may get into trouble. Also drop some artefacts.
LM-opencl: Revert all recent changes until I figure out what the heck
is wrong with it (build bots fail, double free despite using
MEM_FREE macro)
doc/MASK: Document the "--test --mask" feature and some other internal
mask details.
Remove dead code and superflous zero-initializations of
globals/statics.
oldoffice-opencl format: minor tweaks.
Revert some "dead code removal" that wasn't dead code >.<
OpenCL SHA1 kernel: Bugfix for mysql-sha1 when using internal mask.
Due to double non-CTX SHA-1, initial key is thrashed and need
rebuild for each internal mask candidate. Closes #3198
Internal mask formats: Prepare for better mask mode support.
De-obfuscate some of Sayantan's code. Various fixes.
Drop many assert()'s from Sayantan's code. We've had them for years
and they never triggered. A few were replaced with proper code
(message and error).
Mask mode: Enhance mask-stretching, plus other significant
enhancements and bug fixes. We can now stretch a mask like "?dword"
and iterate lengths (eg. --min-len=5), for zero or more digits
prepended to "word".
Mask mode, fix session resume.
Update best64 rules from upstream (which is hashcat). Closes #3202.
Shared OpenCL pbkdf2-hmac-sha1 format. Allow not defining OUTLEN
(salt->outlen will be used instead) as long as you instead define
MAX_OUTLEN to whatever the biggest length is.
OpenCL PBKDF2-HMAC-SHA256: Add support for multi-limb output (ie.
output length beyond 32). Closes #3172.
Add "hashcat logic" flag when sourcing base64.conf, and fix a bug in
rules.c for handling that. Closes #3208.
Ansible CPU format: Use "skip bytes" correctly. 2x boost just like
that. See #3171, #3172, #3211. GPU format fix coming soon.
Add "skip bytes" functionality to OpenCL PBKDF2-HMAC-SHA256, for a 2x
boost in Ansible format. See #3171, #3172, #3210.
New Ansible kernel with on-board HMAC-SHA256 for the last 5% boost.
Now we're close to optimal. See #3171, #3172, #3210.
Add mask info to the "Proceeding with..." messages printed when
resuming.
Mask mode: Allow stretching a mask like PASS?dWORD --> PASS?d?dWORD.
We will find the first range and repeat it.
Benchmark tweaks: Show GPU utilization even with 1-second benchmarks,
and add a "mask accel" notice inside the algo name brackets when
applicable. Also move the note that we are benchmarking with UTF-8
or a codepage into the brackets.
bench.c: Move the "GPU util" figure from benchmark to the first speed
output line, to cut a little on line lengths.
More tweaks for benchmark output: When benchmarking with a codepage,
include its name in output. Also fix generic legacy build.
KRB5-ASREP CPU format: Bug fixes. The magic spell "// XXX" is proven
ineffective, it actually does not fix things. See #3213.
OpenCL shared AES code: Bugfix for (unused as of now) AES_cbc_encrypt,
and add CTS mode functions. This in preparation for KRB5-ASREP
format enhancements. See #3213.
OpenCL shared HMAC-SHA1 code: Bug fix for a use-case we don't have
yet. This in preparation for KRB5-ASREP format enhancements. See
#3213.
KRB5-ASREP CPU format: Don't produce 32 bits of key when we only need
16 (2x boost for etype 17). And fix a cosmetic bug.
memory.[ch] and opencl_misc.h: Drop most of the ridiculous number of
"dump_stuff()" functions and add macro shortcuts for dumping an
array or variable:
KRB5 AS-REP OpenCL format: Do everything on GPU (2x boost) and drop
OMP. Don't produce 32 bits of key when we only need 16 (another 2x
boost for etype 17). And fix a couple of bugs. Closes #3213.
NVIDIA bug workaround for krb5-asrep-opencl. An alternative
workaround is to use --force-vector=2, See #3214.
rar2john was using dump_stuff() stuff without sourcing memory.h
KeePass OpenCL format has its own memcmp_pmc() and can't use the
shared one.
There were artefacts left from older "GPU util" reports when
benchmarking, producing a wierd output with several-formats --test.
Also, do the sensor readings a bit earlier so we don't get lowered
figures.
Some quick fixes until I understand WTH is wrong with Windows builds.
Ethereum-presale-opencl: *Use* the PBKDF2 kernel instead of bloody
copying it! Closes #3215.
macOS fixes after changing the PBKDF2-SHA256 kernel.
Ethereum Presale formats: Exploit the fact they did not use a proper
salt for PBKDF2. Huge boost when attacking many salts.
Bug fix for Ethereum Presale no-salt-exploit.
Add a little safety around Presale no-salt-exploit stuff. Some oddness
with self-tests (I think) could trigger problems.
Allow SAP B and G formats to crack "half hashes" taken from
RFC_READ_TABLE. To enable this, set john.conf "SAPhalfHashes = Y".
Fix a misplaced line (after using patch -F3) in fvde-opencl.
zip2john bug fix for certain files. See john-users ML:
http://www.openwall.com/lists/john-users/2018/03/26/15
JtR normally does not apply rules to an empty word. Hashcat does, so
this commit makes us do so too if "hashcat logic" is turned on.
Mask mode: Start iterating from given mask's length if no --min-len
was given. Also fix a bug where we sometimes failed resetting the
format although GPU-side mask changed.
Add current device's "internal mask target" to
--list=format-all-details.
Fix a problem with !OS_TIMER systems where sig_timer_emu_tick() was
called before we had any handler in place for it. Closes #3226.
bt.c: Do not use alarm(3) because it may clash with our other uses of
timers. Adjust the figure for where we print a warning about many
loaded hashes. See #3226.
Fix a tpyo in bt_hash_type_*.c
Mask mode: When iterating but no min-len given, do not consider a
default mask's length for min-len.
Cosmetic bug fix: After recent changes, status lines would sometimes
include a "current mask length" even though not iterating over
length.
krb5pa-sha1-opencl: Do everything on GPU (similar to
krb5asrep-aes-opencl). This rendered a 50% boost and GPU util now
99%. See #3216.
KRB5PA-SHA1 formats: Revert shrinking of a few buffers. I really can't
see why but ASan tells me it's needed (single-block AES so 16 bytes
should do, but 32 is needed).
Drop a shared pbkdf2 macro that should be local to formats. Drop some
redundant artefact from PBKDF2-HMAC-SHA512 OpenCL formats.
OpenCL HMAC-SHA256 bugfix (copy/paste bug from SHA-1, never surfaced).
OpenCL GELI format: Do all work on GPU-side. This commit also adds
shared OpenCL code for HMAC-SHA512. About 3x boost non-OMP and GPU
util now 100%. See #3216.
GELI-opencl, fix algo name after post-processing moved to GPU-side.
zip-opencl: Avoid a warning on some platforms.
GELI-opencl: Work around an AMD bug.
Shared HMAC-SHA-2 OpenCL code: Fix bugs that never surfaced yet
(alternative code path, still not tested at all).
PEM format: Cosmetic (code) bug fix.
OpenCL PEM format: Do all work (3DES/AES and ASN.1 decoding) on
GPU-side. Boost is in the order of 10x and GPU utilization went from
N/A to 100%. See #3216.
Minor completion of PEM formats' algorithm name.
ODF format: Post-process on GPU (Blowfish, SHA-1) and join with
ODF-AES so we only have one format just as for CPU (cost added).
See #3216.
Rename ssh-ng format to just ssh, and sshng2john.py to ssh2john.py.
Closes #3231.
Documentation fix after renaming ssh-ng format. See #3231.
Have autoconf check for function instead of trusting OpenSSL version
number. Closes #3163.
SSH format: Tweak the "cost" stuff so we can tell 3DES from AES.
Closes #3229.
SSH format: Drop a sub-percent optimization and instead optimize the
generic function and stop initializing large arrays to zero right
before filling them with other data.
OMP/MKPC auto-tune bugfix. See #3229
mask.c: Avoid dupe output with fork/MPI.
unicode.h bugfix (not used right now).
Correction of hex representation of a new line character in doc/RULES.
This little "bug" has been with us all the way since 2012.
Keystore-opencl: Move work from set_salt to get_salt. Do not
re-transfer keys when not changed. Use packed key transfer (GPU-side
mask still needed) and bump max password length to max. Bump GPU
salt size, there was never any reason to cripple the format in that
regard. We (now) only transfer actual used size. The OpenCL 1.2 spec
mandates a minimum size of 64 KB so that is what we currently go
for. We could also opt for dynamically switching to global memory if
(and only when) a larger size is needed.
Shared OpenCL code for HMAC-SHA256 fixes.
PEM formats: Add 2nd cost "cipher".
Assorted OpenCL macOS tweaks/bug workarounds. This makes PEM-opencl
work with the Intel(R) HD Graphics 630, and oldoffice-opencl with
AMD Radeon Pro 560 Compute Engine (and the latter fix may help other
formats too).
Adjust core count (which in turn affects speed index) for Intel GPUs.
Closes #3238.
Assume an unknown AMD is a GCN, since most others should have died
from age by now. This is a temporary workaround for #3237.
Correction of 2nd cost description for PEM formats. Closes #3236.
Fix some bogosities in blockchain CPU format.
Blockchain OpenCL: Move CPU post-processing to GPU. Some 13x boost and
GPU utilization (with single-thread CPU) up from 5% to 99%. See
#3216.
KeePass formats: Add 3rd cost "algo" for testing purposes.
OpenCL shared AES: Clean up, separate basic AES from cipher modes and
OpenCL memory type handling. Introduce alternative code (the one we
used prior to 1a0704f) for use by buggy OpenCL runtimes in some
cases. See #3235.
OpenCL: Improve shared debug stuff.
OpenCL: macOS+AMD bug workaround for TwoFish on GPU. See #3235.
Work around a macOS runtime bug for AMD GPU. See #3235.
Revert the disabling of bitselect for OSX. There was regression
(sha256crypt format now failed w/ CPU). Narrowing it to only
disabling bitselect in swaps did not help.
Add support for knowing core count of nvidia Volta. This is untested.
Move the AES-XTS code from Truecrypt kernel to the shared AES code.
Reduce transfer size a little for md5crypt-opencl.
Fix a few stupid ass bugs sneaking in while I looked the other
direction.
Truecrypt OpenCL: Bugfix after recent moves of code.
OpenCL: Move check_pkcs_pad() from DMG kernel to opencl_misc.h, and
drop the copies in agile and pem kernels.
Keychain-opencl: Post-process on GPU. See #3216.
Shared OpenCL: Fix a compiler warning. See #3239.
STRIP OpenCL: Post-process on GPU. See #3216.
Lastpass OpenCL formats: Post-process on GPU. See #3216.
STRIP and Lastpass OpenCL: Don't re-transfer same key data.
Allow using custom mask placeholders along with --test
OpenCL: Ensure --force-scalar always equals --force-vector=1.
Change phpass-opencl from hard-coded vector width 8, to variable width
and use whatever the device announces as preferred width. Also bump
max. length from 15 to 39 and get rid of ALL use of 8-bit data types
in the kernel (NOTE: test vectors changed so boost is even better
than the looks of it). See #3216.
A couple of issues found when researching candidates for #3242: Drop
"Blowfish" from encfs formats' algo name. It was incorrect. Drop old
now unused 'any_cracked' variable from keyring-opencl.
phpass-opencl: Packed key transfer.
Fix an ASan warning seen in WPAPSK-opencl (benign, read beyond stack
buf).
Revert "phpass-opencl: Packed key transfer". It was prematurely pushed
upstream.
Bug workaround for shared SHA1-CTX for macOS w/ AMD GPU. This makes a
few more formats pass self-test, at least PGPdisk, OpenBSD-SoftRAID,
krb5pa-sha1 and krb5asrep-aes. See #3235.
Add 2nd cost "algorithm" for PGPdisk, for benchmarking purposes.
Revert shrinking a buffer in pgpdisk (CPU). It was needed due to a
stoopid function using more than requested of it.
EncFS OpenCL: Post-process on GPU (AES-CFB, HMAC-SHA1, checksum).
Addresses #3242.
PGPdisk OpenCL: Post-process on GPU (AES/TwoFish/CAST). Addresses
#3242.
PGPdisk-opencl: Separate kernels per salt, for better optimizations.
PGPSDA OpenCL format: Post-process (CAST) on GPU. See 3242.
Ethereum OpenCL format: Post-process (Keccak) on GPU. See #3242.
Ethereum-presale OpenCL: I was confused and introduced a bug in recent
commit. GLOBAL_SALT_NO_INIT means the PBKDF2 salt is __global but
not the "salt" struct!
RAR5 OpenCL: Post-process on GPU. Closes #3242.
7z-opencl: Correct case in algo name.
Shared OpenCL MD5: Avoid using "volatile" driver bug workaround unless
needed. The Intel(R) HD Graphics 630 took a huge performance hit
while it worked fine without it (the workaround is needed for AMD
Radeon Pro).
Jim decided to put a test vector with "1 iteration" in
pbkdf2-hmac-md5. That's OK but it shouldn't have been the first one.
Benchmarks were off and even worse, auto-tune was f*cked too.
Drop the pull-request template (I see no need for it) and trim the
issue template down a bit. The more text, the less chance Joe Blow
will read it.
Add/remove/tweak workarounds for macOS OpenCL runtime/driver bugs. See
#3235.
De-optimized OpenCL kernel to some extent for office 2013, works on
macOS now (and shouldn't really affect better devices/drivers). The
runtime optimizers are so buggy it's a mystery they work at all. See
#3235.
More of add/remove/tweak workarounds for macOS OpenCL runtime/driver
bugs. See #3235.
Change uint in host code to uint32_t. See #3246
More of add/remove/tweak workarounds for macOS OpenCL runtime/driver
bugs. See #3235. Also drop/rework a dangerous (in terms of
potential bugs) nvidia optimization and replace with a safe one (for
any arch).
Finally found the problem with macOS/AMD crashing while building
md5crypt OpenCL kernel. The check for support for amd_bitalign was
flawed and macOS never supports proprietary stuff. See #3235.
OpenCL: Re-implement more optimizations for aligned buffer in shared
MD4/MD5/SHA1/SHA2 code (and fix a bug). See af150a18.
Fixes for MINGW OpenCL builds, kudos to BotPass. See #3246.
Fix warning message when running OpenCL format with CPU
post-processing and OpenMP is disabled. Closes #3248.
opencl_common.c: The buffer for build options were allocated as
PATH_BUFFER_SIZE instead of a more logical LINE_BUFFER_SIZE. The
former is only 256 bytes on some systems (POSIX has it as 256).
Closes #3251.
Revert a Makefile change (#3246) that broke MinGW buids on build bot.
Re-apply the Makefile fix but now also fix the ever-broken CircleCi
script. Closes #3246.
A couple more MinGW fixes from #3246 (from BotPass' 2nd patch).
bcrypt-opencl: Enforce "CPU kernel" for OSX with Intel HD Graphics.
Closes #3245.
Keystore-opencl: Do not allow a GWS larger than 'count'. Closes #3254,
see also #3223.
OpenCL Lotus5, oldoffice and o5logon: Use new scheme of LWS=NULL for
less-than-full batches instead of rounding GWS up to LWS multiple.
See #3223.
OpenCL Office: Use new scheme of LWS=NULL for less-than-full batches
instead of rounding GWS up to LWS multiple. See #3223.
OpenCL GELI: Use new scheme of LWS=NULL for less-than-full batches
instead of rounding GWS up to LWS multiple. See #3223.
OpenCL Keyring: Use new scheme of LWS=NULL for less-than-full batches
instead of rounding GWS up to LWS multiple. See #3223.
OpenCL KRB5PA-MD5: Use new scheme of LWS=NULL for less-than-full
batches instead of rounding GWS up to LWS multiple. See #3223.
OpenCL NTLMv2: Use new scheme of LWS=NULL for less-than-full batches
instead of rounding GWS up to LWS multiple. See #3223.
Minor cleanups in a few OpenCL formats.
OpenCL PGPdisk: Use new scheme of LWS=NULL for less-than-full batches
instead of rounding GWS up to LWS multiple. See #3223.
OpenCL PGPSDA and PGPWDE formats: Use new scheme of LWS=NULL for
less-than-full batches instead of rounding GWS up to LWS multiple.
See #3223.
OpenCL shared check_pkcs_pad() was slightly too promiscuous; it let
anything with a trailing null through (possible false positives, so
no sweat).
A couple of minor FORMAT_NAME vs. FORMAT_LABEL fixes.
Debug function tweaks, and minor fixes in int128.h. This is a no-op.
cprepair: Avoid a conflict with memory.h
Many OpenCL formats: Use new scheme of LWS=NULL for less-than-full
batches instead of rounding GWS up to LWS multiple. See #3223.
GPU mask: Decrease verbosity needed for seeing auto-tune mask
multiplier.
The "spinning wheel" cursor sometimes left an artifact after use.
Bitlocker formats: Drop the fake test vectors that messed with
reported benchmark speed, and set a better autotune target that will
actually make the format perform good (although a bit unresponsive)
IRL.
Stop piggy-backing arguments and drop the notion of "max crypt_all
time" from OpenCL autotune, it was an artifact. Closes #3278.
wpapcap2john: Handle QoS packets with four addresses. Closes #3282.
Internal mask: Fix a cosmetic bug with MaskLengthIterStatus=Y where
we'd output the old length instead of the new one, and incorrect
ETA/progress.
Mitigate a benchmark regression introduced in e5b031e. See #3289.
Autoconf: Add a way to check if -Wno-foo is supported. This has to be
implemented by checking if -Wfoo is supported because the "no-"
forms will soft-fail.
OpenCL PBKDF2-SHA1: Support longer candidates.
OpenCL DMG format: Support longer candidates. Test vector needed!
dynamic.conf clean-up. Sort entries and update the "synopsis". Closes
#3346.
dynamic.conf clean-up. Change a few ($p,$s) to ($p.$s). See #3346.
Define out (unless -DDEBUG) three very slow test vectors from DMG
formats. See #3344.
Ethereum bugfix. There was a race condition with new_keys variable,
it must be reset outside the parallel section. Closes #3344.
WPAPSK and -PMK formats: Add support for PMKID. Closes #3356.
Avoid a problem with some internal-mask formats reading stale data in
get_key(). Addresses #3358.
wpapcap2john: Support reading TZSP encapsulated files directly. Closes
#3282.
WPAPSK/PMK formats: Drop some duplicated code. Closes #3359.
WPA formats: Add a missing salt_hash() function, greatly speeding up
loading of many hashes.
wpapcap2john: Add support for getting PMKID hashes. Closes #3364.
Meta data tweaks for wpapcap2john output.
Usage blurb fixes for wpapcap2john
wpapcap2john: Tweaks for edge cases and lack of (or late) ESSID clues.
wpapcap2john: Support reading pcap-ng format. Closes #3371.
Brainfart fix in wpapcap2john. Not sure why some compilers accepted
it.
wpapcap2john: Handle mac filtering of addr3 and addr4, and fix some
edge- cases where BSSID was possibly picked from wrong field. Closes
#3373.
wpapcap2john: Replace some repeated code with a more robust function.
mask.c bugfix, see #3381.
OpenCL: Avoid anonymous unions. Some buggy AMD/clang runtime seems to
have problem with it. Closes #3387.
AC: Ignore PERL_UNICODE=SDA for plugin dependency check. Closes #3380.
Avoid calling init() for --list=(...) options with ZTEX formats. See
#3379.
AC: Find OpenSSL on macOS Homebrew without any special options. To
achieve this I had to disable pkg-config by default, because it's
broken. Actually I can't remember having seen a non-broken
pkg-config in my entire life so it's probably a good thing in most
cases but it might break some other system so you'd have to add
--enable-pkg-config to the configure options. This hopefully
addresses #2347.
There's something wrong with our scatter intrinsics (FLAT_OUT option)
for AVX512 and the MIC, we just disable using them for now. See
#2273.
simd-instrinsics.c: Code style, no-op.
Bug fix for our 'vscatter' pseudo-intrinsics, and re-enable it
(currently affects AVX512 and MIC). Fixes #2273 properly.
Drop john.conf boolean option WordlistMemoryMap and replace it with a
numeric option WordlistMemoryMapMaxSize defaulting to one terabyte.
Multibit format: Add FMT_UTF8 flag, and disable a test vector that is
encoding-specific (it will fail for any encoding not having this
character). Closes #3393.
listconf.c: OpenSSL deprectated SSLeay functions for version
enumeration. Handle both situations. Closes #3396.
Ensure we show AVX512 "level" (eg. AVX512F, AVX512BW) in algorithm
names.
Alignment bug fix for VS build of argon2_core.h, found by coincidence.
Fix comments in john.conf - eg. "there" vs. "their" and over-long
lines.
Travis CI: Include -list=build-info (CircleCI already got it).
We go out of our way to safely fetch a silly run-time version figure
from OpenSSL despite them being complete bastards, renaming the very
function that could otherwise have been used to work around their
crazy decisions. Closes #3402.
Fix incremental mode's ETA calculation when CharCount (in john.conf)
is lower than actual number of characters available. See #3404.
Change our vswapxx pseudo-intrinsics so they just return the result,
without changing input. This sometimes allow optimizations. Neither
our OpenCL macros nor the johnswap.h CPU macros modify the input.
pseudo-intrinsics.h: Cosmetics
Enable AVX-512 for bitslice DES in simplest possible way. Closes
#2274. See also #3399.
AVX-512 adds rotate instructions. Using them makes for a terrific
boost (25-50%) for all hash functions! See #3399.
05272574c broke AMD NEON, this fixes it (and more).
getopt.c: Do not consider an abbreviated option to be ambiguous when
the first alternative is a prefix of all others. See #3404.
Internal: Command-line override of CharCount,
--incremental-charcount=N. See #3404.
Pseudo-intrinsics: Alternative vswap32() for AVX-512F and others
having non-emulated vcmov and vroti.
Only use the alternative s0/s1 functions for SHA-512 if we emulate
vroti (this is another 20% boost for AVX-512).
SIMD code, cosmetic changes/future logic.
Alternative SHA-2 sigma functions for OpenCL. The ones for SHA-256
tested 2% faster on nvidia. The ones for SHA-512 are slower because
we have native rotates.
zip2john: Try old pkzip function when "strong encryption" clause
fails. See #3411.
Optimize vroti16 for AVX2 (used in MD5). We've had this optimization
for SSSE3 up to AVX but missed it for AVX2 until now.
john.c: Tweak the "Use the --show option..." message for formats that
have a prepare() function (suggesting to use --format as well).
Closes #3412.
SHA-2 Sigma/sigma alternatives for SIMD and OpenCL code. 3% boost for
AVX2.
SHA-1 optimization with ternarylogic, another 5% boost for AVX-512.
Add a vternarylogic emulator for AVX2 (only for debugging).
SHA-2 SIMD and OpenCL shared code: Add yet another set of alternative
sigma functions. These use vternarylogic or LOP3.LUT. This was again
a regression for nvidia so not used there, but it made another 10%
boost for AVX-512 and a compound boost over last month of 70-77% for
SHA-2. See #3399.
Support correct speed calculation on nvidia Turing (untested).
AC: Change positive output of HT test to read "maybe". Closes #3418.
README.md: Change from travis-ci.org to travis-ci.com
--loopback mode: Add a notice about what permutation rules are in use.
pseudo-intrinsics.h: Fix a bug affecting eg. ppc64, introduced in
05272574. See #3428.
rar2john: Fix a bug where we would pick a zero-byte file as target
despite a comment saying we wouldn't. Closes #3431.
Dynamic: Change an erratic unsigned long to uintptr_t. See #3122.
Add a self-test for salt_hash() returning zero with zero-size salt.
Autoconf: Fix for OpenCL detection problem with macOS Mojave. Closes
#3429.
OpenCL cloudkeychain: Drop an unused variable.
OpenCL: Disable kernel binary caching for macOS - some bug of theirs
make it problematic. Closes #3434.
OpenCL DMG & krb5-sha1 formats: Do not use bitslice AES for macOS. See
#3435.
OMP auto-tune fix for sha256crypt et al, who uses a multiplier in
init(). See #3436.
Pseudo intrinsics: Drop union members that are not used.
sha2crypt CPU formats: review OMP tune after fixing the bug in
23bff737.
Autoconf: Change -Wno-stringop-truncation to
-Wno-error=stringop-truncation and add -Wno-error=format-overflow.
Update doc/INSTALL-UBUNTU, kudos to @junquera. Closes #3439.
Bump SIMD max. salt length in HMAC-SHA256 format to accomodate for
some JWT tokens. Also see #2318. Closes #3443.
Bug fix for previous commit. See #3443.
Rules dupe suppression was saying it removed "!! hashcat logic ON/OFF"
duplicates. I'm not 100% sure it actually had any ill effect but for
peace of mind I changed the code so it doesn't remove them for sure.
Suppress over-detailed logging of dupe rule suppression unless
verbosity is bumped to the max.
Add a rules subdirectory under run and put more hashcat rule files in
there. We already had best64, which was merely renamed.
Shared Unicode stuff: Add strlen32() for future use.
RAR formats: Add a padding check for very small files, to mitigate
false positives due to CRC32 collisions. Closes #3451.
rar2john: Bump file name buffer size to ensure it can hold worst-case
UTF-8 as well.
zip2john: Fix a few potentially uninitialized variables after a42fd75
#3447
Update CREDITS-jumbo and CHANGES-jumbo.git files
Update Unicode stuff from 7.0.0 to 11.0.0. A bug was also fixed in the
script I use to process data, so some dupe entries were pruned.
RAR formats: Change the logic for method 0x30 padding check so we get
early rejection for large files if they have any padding at all.
Add a build #warning when Electrum is not built because of missing
zlib. Closes #3456.
It seems that MESA defines cl_amd_media_ops but then doesn't support
it. That must be the dumbest bug ever. Closes #3454.
RAR bugfix after recent changes (we had false positives).
zip2john: Add another warning, when needed, about the assumption that
all files have the same password. Also mutes some erroneous partial
diagnostic output. Closes #3464.
Debug stuff and workarounds for #3450, #2457. General audit of shared
OpenCL code, for uninitialized variables and unified error messages.
Do not blindly trust OpenCL drivers' compliance.
Refactor john-mpi.[ch] to john_mpi.[ch] and move the #if HAVE_MPI to
the header. Closes #3463.
zip2john tweaks. See discussion in #3462.
zip2john: Fix a silly bug and a memory leak introduced by previous
commit.
Fix a bug where loopback mode would interfere with --max-len option.
pp.c: Sync with upstream as of bffda8c (Thu Jul 5 11:53:15 2018
+0200). No significant changes.
Update .gitignore
Fast subsets cracking mode, with full Unicode 11.0.0 support.
Add a debugging verbosity level, --verbosity=6 and have "plaintext"
format print its candidates at debug verbosity.
Single mode: Split on upper-case initials when loading words.
Legacy build fix.
Another legacy build fix.
Colorize output for cracked administrator passwords.
Rules: Add WN rule command, which is like TN except it toggles shift
instead of merely case. That is, it does what TN does but it also
toggles eg. 1 <-> !, 2 <-> @ and 3 <-> #.
Enhance the default loopback ruleset: Use the new ShiftToggle instead
of the alphabet-only NT toggler. Also add three really basic rules,
suitable for loopback.
OpenCL: Numerical error codes were sometimes printed twice because
get_error_name() already adds it to its output string.
OpenCL: Print node number on error.
New WN rule can't be used with -c rule rejection so could produce a
humongous number of duplicates for a case insensitive format (eg.
foo and FOO). This had me figure out a canonical way to fix that
and similar problems without using a rule flag. It's effective on
most rules that use conv_* arrays.
Add "toor" and "sa" as admin names (exact match except for case).
Tweak the handling of --max-len=N option vs. rules, for a huge
performance boost in many situations. See #3467, #3468.
--rules=NT: Add rule reject flags and length reject commands, for some
boost in general and when using --max-len=N option in particular.
Expose min_length constant in rules (#3471)
OpenCL: Use a min. KPC better optimal for Single mode. See #3467.
Ensure the capping of min. KPC doesn't roll over to negative. See
#3467
Ensure a large salt count doesn't result in too much memory use. The
default limit is set to 4 GB but it's a john.conf setting.
Wrap opencl_common.h in #if HAVE_OPENCL so we can source it even for
non-OpenCL builds.
Drop #ifdef guards around '#include "opencl_common.h"' now that the
header itself is wrapped.
Single mode: Fix bugs with --max-len handling.
Minor fixes for warning messages.
Fix bugs in human_prefix() and have it return a tiny-alloced string.
The latter meant I also had to move it to misc.c.
Add rule constants for min_length-1 and min_length+1. See #3471
Editorconfig: Give up on using length 8 tabs for single.c
Change single mode's key buffer's index and offset type to 32-bit for
OpenCL ansd ZTEX builds. 16-bit is not enough for them. Also improve
the way we try to adopt to the buffer size limit: First decrease
max. length (if larger than 16). See #3467.
Rules logging tweaks and bug fixes.
Tweaks for 32-bit single key buffer size/index.
7z2john.pl: Update from upstream.
rar2john: Avoid compressed files shorter than 4 bytes, to avoid false
positives. See #3477
rar2john: Avoid compressed files shorter than 4 bytes, to avoid false
positives. The previous commit was incorrect. See #3477
rar2john: Minor enhancement in file choice - we now pick the file with
smallest *packed* size of all files that have a larger *unpacked*
size than the minimum (which depends on method - for stored files we
can use 1-byte files because there is reliable padding but for
compressed files we need at least four bytes for avoiding false
positives from CRC-32 collisions in case both early rejection and
actual uncompress happens to pass (seen once, with 1-byte compressed
file in #3477). If we're seeing two files with same packed size we
pick the one with smallest unpacked size (as long as it's larger
than minimum).
Single mode bugfix for when we had to decrease max_length in order to
fit in max. size buffers. We need options.eff_maxlength to be
updated in order not to read past buffer later. See #3467
Bugfix: --max-cand option wasn't working with Single mode.
OpenCL: Tweak kernel binary caching and fix some weird bugs with it.
We now make/use cached binaries for anything except: - nvidia unless
on macOS (nvidia has their own caching but not on macOS) - CPU on
macOS (it's somehow b0rken in their runtime).
rar2john: More minor tweaks for picking "best" file from archive in
terms of performance, data size and immunity against false
positives.
Temporary security fix. See #3482 and #3484
Rename common-gpu.[ch] to gpu_common.[ch].
rules.c (almost no-op): Move stuff around in rules.c so they appear
under correct comment labels such as "Crack rules", "Added in Jumbo"
and "Hashcat specific". Also update doc/RULES a little.
rules.c (no-op): Add most of codepage-specific stuff to new header
files to get it cleaner and easier to overview or compare to upstrem
john proper.
Add new early-reject rules, see #3468
Single mode: Reset max. length and min. KPC to original values when
done, in case we're running batch mode.
Change .editorconfig for a few core files where I officially give up
maintaining a tab width of 8.
Single mode tweaks for better OpenCL performance.
Single mode: If we're running forked, divide the max. buffer size so
we don't end up eating more memory than was intended.
Bugfix for toys unable to provide fork.
Warn about too few candidate passwords. See #3386
The 'bench_running' timer flag has long been mis-used for other
things.
Add min/max length limits (if given) to the "Proceeding with..."
message that goes to screen when session is resumed. Also enable
that message for batch mode, even if not resuming.
cracker.c: Don't mute KPC warnings when iterating mask. Also fix an
MPI logic bug in single.c.
Bugfix in OldOffice-opencl after 9cc4e0193.
Fix bugs in Jumbo-specific part of ldr_split_string() (and improve it
to boot!), and fix a performance bug with list_add_global_unique().
Closes #3494.
Our shared enc_isupper/lower functions were stupidly slow. Fix them
and add enc_isdigit(). Using this, vastly improve the Jumbo-specific
pass in ldr_split_string() but make it optional (should have been
from the point of introduction).
Reduce pot sync log messages, only show them for mother process. Also
drop some old debug info, the pot sync functionality is well tested
now.
Turn off self_test_running flag earlier in case of --skip-self-tests.
Drop the separate GET_NEXT_MULTIPLE_VW macro and have
GET_NEXT_MULTIPLE vector-aware instead.
Comment tpyo in rules.c
Single mode: Dynamically increase SINGLE_WORDS_PAIR_MAX if we have a
large key_count, currently using log2(key_count).
Add john.conf option RelaxKPCWarningCheck, defaulting to true. If set,
we only warn if count is less than (min_kpc - min_kpc / num_salts).
This means we don't warn at all for single-salt/unsalted. For 10
salts, we allow 10% less than min_keys without a warning, for 100
salts we allow 1% and so on. See #3386
Update docs with warnings about MPI. Also fix some over-long lines
and miss-spellings of the terrific word "automagic" ;-) Closes
#3493.
Update docs with information on single mode operation with GPU. Closes
#3504
Change the default for RelaxKPCWarningCheck to false, but mention the
setting with the warning output (the 10th/last line, and only for
main process). See #3386.
Single mode on GPU prioritizes speed over resumability. Add a user
setting to change that. See #3467.
Bug fix in the "marie -> mary" rule stemming from john proper. See
https://www.openwall.com/lists/john-users/2018/12/06/1
Single mode with OpenCL/ZTEX: Log SinglePrioResume setting.
OpenCL "speed index" function: When resorting to using vector width as
a factor, use sizeof(long) instead of sizeof(int). See #3502
Revise the workaround and debug stuff for OpenCL + MPI race condition.
We now only ever do it for MPI and only when actually running more
than one process. Also, we don't create any lock file - instead we
lock the kernel source file for writing (although we don't touch
it).
Prince mode: Ensure "last" buffer for rules_apply is aligned.
Print LWS/GWS info at normal verbosity, just not for benchmarks.
Optionally agree on LWS and GWS for whole MPI cluster.
OpenCL: Optionally synthesize -lws -gws to session file if applicable.
Rules: Add a hack for recognizing Hashcat's '-' command even if not in
"hashcat logic" mode..
Add some rules optimizations (mostly rejection flags/commands).
Add optimization flags to KoreLogic rules.
Stacked rules. New option --rules-stack=(SECTION[,..]|:rule[;..]) adds
a second pass of rules, applied after normal processing.
Document the important difference between --stdout=LENGTH and instead
using --stdout --max-len=LENGTH.
Change john.o optimization from -O0 to -O1 due to this:
Refactor FMT_UTF8 --> FMT_ENC. This is a no-op change, binary should
stay identical. See #3509.
Use the new FMT_UTF8 flag to ensure some format gets correct input
encoding. Closes #3509
Update .gitignore with some common test/temp-files patterns.
Introduce a few UTF-8-32 functions in unicode.c, and use them in the
Subsets mode. See #3510.
Halve the memory use for Single mode buffers, for OpenMP builds
without OpenCL support. We should make the choice at runtime
instead! See #3467
Mute stringop-truncation warnings from gcc. We believe they're all
false positives. We do NOT mute them for ASan or memdbg builds so
when we want to see them for auditing code, they'll be there.
Closes #3499
Replace some strncpy's where we require padding, with a function that
does the same but shouldn't trigger gcc warnings - and that has a
name telling a reviewer it's deliberate. See #3499, #3127
Single mode: - Bugfix: params.h was using HAVE_OPENMP where _OPENMP is
correct. - Let ZTEX-builds (non-OpenCL at that) use 16-bit index and
32-bit offsets just like OpenMP, for a usable 32K KPC and roughly
half the memory footprint compared to OpenCL which has 32-bit
indeces as well.
--list=build-info: Show effective limits for Single mode.
Fix "Proceeding with..." messages for lengths when hybrid mask is in
use.
Add compiler directives for suppressing some gcc format-overflow false
positives. See #3521
OpenCL: Drop some obsolete bug workarounds. See #3525
UTF-8 to UTF-16 conversions in shared code and OpenCL kernels: Drop a
few redundant checks that apparently wasn't optimizaed away.
Add a shared function for converting UTF-8 to UTF-8-32.
Self-test: Add a few sanity checks for format flags.
SAP H format: Drop an erroneous FMT_ENC flag as well as a
re-implementation of fmt_default_split().
SAP H format really expects UTF-8 so we set that flag (with it's new
meaning as of recent changes) to get warnings if target encoding is
something else.
Update CREDITS-jumbo and CHANGES-jumbo.git
Fix undefined behavior, similar to eefe9047
Change nice(20) to nice(19), see #3513
Portability fix for idle.c
All perl scripts: Use perl from PATH instead of hard-coded
/usr/bin/perl
Cosmetic fixes to -list=build-info
Cosmetic changes to single mode warning texts.
Add a free() in cracker.c to aid in finding real leaks. Closes #3543
cracker.c: Change last commit so it's like upstream john proper
instead. The free was removed by Jim in de7b7c63 back in 2013 as he
changed the alloc to mem_alloc_tiny for unclear reasons. Then at
some point that was reverted by a core merge without the free
getting its way back.
ETA/Progress fixes (some were b0rken after --rules-stack).
Drop an accidentally committed debug line.
Tweak the human_prefix function for more correct output. Drop a
similar function in opencl_common.c and use shared one.
Single mode: Call crk_done() after we're finished. Closes #3554
WPAPSK salt_hash() improvement: Use the last four bytes of MAC address
instead of first four. Since the first three are vendor-id, they are
much less unique.
Add run/oui.txt as of 2018-12-26 11:04Z and a Makefile target for
manually updating it. See #3567
--stress-test option: Avoid printing warning more than once.
--stress-test option: Add stats.
All perl scripts: Drop '-w' when using 'env perl' and instead ensure
all scripts have 'use warning;'
Single mode "proceeding with" message showed wordlist rules intead of
single rules. Closes #3571.
pass_gen.pl: Stop using OpenSSL stuff where not needed.
Improve Single mode restore w/ --rules-stack. Closes #3541.
rules.h: Add missing "external" to a variable declaration.
single.c: Fix a hard-to-see typo introduced in 5be3ed4908
rules.c bugfix: Word pair rules with implicit '+' would not update
length so could erroneously fail min/max length checks.
Update misc.c
Slight change of logic for automagically increasing
SingleWordsPairMax.
unit-tests target: Fix backwards dependencies. (#3586)
AC: Do not enable unit tests when --disable-native-tests is used.
Closes #3601
UTF-8 tweaks for WPAPSK formats. Remove a ridiculous hard-coded test
in formats.c that complained about the change. Closes #3593.
WPAPSK-PMK formats: Bail out if user clearly has misunderstood the
format. Closes #3585.
Add a --single-retest-guess=BOOL option, overriding john.conf
equivalent. See #3594.
Fix an academic memory leak (only happens at exit) in single.c. See
#3594
Add a limit for recursion depth with SingleRetestGuessed. The default
limit is 10000 but can be overridden in john.conf. Closes #3594.
Bugfix in leet format's valid(). Closes #3584
Re-print the single mode warning about disabled recursion at session
end. (#3604)
unique: Add support for large buffers/hash tables, and other tweaks.
unique: Improve options parsing (any option can now come before or
after the output filename).
Unify hccap2john output format with wpapcap2john (don't dash the
MACs).
Add a safe-guard against logins/plaintexts that are printed to the
screen with some weird encoding upsets your terminal.
Fix Progress/ETA bug introduced with stacked rules.
Fix a division by zero in unique.c
cracker.c: Detect when a reset() call lowered min. kpc, adjust
warnings accordingly (#3674)
Fix for "make clean" on eg. OS X w/ proper gcc after unit-tests
changes. Closes #3675.
No-op re-order of some john.conf sections before core merge.
axcrypt2 OpenCL kernel: Drop unused variable.
Decrease compiler optimization level for unicode_range.c and add a
dependency on it for subsets.o. Closes #3636
unicode_range.c: Work around brain-dead clang claiming to be
compatible with gcc despite it isn't. Closes #3691
Avoid printing device list errors more than once under --fork
OpenCL auto-tune tweaks. Add backward GWS runs.
Revision of x86-sse.h and x86-64.h after core merge. Also drop some
obsolete stuff from DES_bs_b.c, see #3696
Change auto-tune password length, as well as length of default mask
for "-test -mask", to 7.
Update CHANGES-jumbo.git and CREDITS-jumbo
cprepair: Add -P option, don't output unprintable ASCII (and with -n
also suppress any invalid UTF-8). Also some minor bug fixes.
Bugfix after adding VERB_DEBUG. Closes #3730
Minor fixes while working with #3712
Bugfixes for hybrid mask vs. eff_maxlength. Closes #3712
Cosmetic fixes, #3718
If default (john.conf) mask is used, print it. Closes #3728.
More hybrid mask length fixes. Closes #3731
Print a warning when -verb:1 suppresses -stdout candidates. Closes
#3729
Print a notice of default input encoding if != ASCII and --pipe.
Closes #3717
AC: Fix intel 32-bit issues. Closes, I hope, #3678
Mask mode: This change closes #3735, found by lucky hip shot. I hope
it doesn't end up with regression in other cases - testing needed.
Show default input encoding for wordlist mode as well, see #3717
Make us sending host's sizeof(size_t) to OpenCL less confusing.
Work around idiot Beignet driver defining cl_amd_media_ops despite not
supporting it. Closes #3750.
Send -D__BEIGNET__ or -D__POCL__ to OpenCL runtime compiler when we
suspect platform is one of those, for easier future bug workarounds
in kernels, just like we do with Mesa. See #3750.
Mask mode bug fixes. Reverts previous bugfix, which wasn't complete.
Instead adds a correct fix for hybrid mode, correcting a change I
did in c1d7a2f for incrementing lengths (which we never do in hybrid
mode).
Do not disable self-tests when running "-test -mask". Instead do a
normal non-mask self-test, then reset format and benchmark with
mask. Closes #3249
AC: Do not auto-enable rexgen if library found. See #3753.
Tweaks for mask-benchmark w/ proper self-tests. See #3249
Some mask mode fixes for non-mask self-tests followed by mask
benchmarks. Problems seen with raw-md4-opencl followed by
raw-md5-opencl using -test -mask -form:raw*opencl
Revert "Some mask mode fixes for non-mask self-tests followed by mask
benchmarks." This reverts commit
b2aba18f4ad7cfb86a9093e14df48527ef97d329.
Rename --nolog option to --no-log. The old name will continue to work
for some time but is deprecated.
Tweaks to ldr_split_line. See discussion at
https://www.openwall.com/lists/john-dev/2019/04/07/1
HDAA: Drop b0rken OpenMP support, since it was poor anyway. Closes
#3107.
7z formats: Use atoi() instead of atou() if CRC field is negative,
then cast to unsigned int. Also change atou declaration to
"unsigned int" as opposed to just "unsigned". Closes #2998.
hccap2john.c: Drop an unused function
Add a warning about self-tests currently being disabled with -test
-mask.
Revert part of 4b6929031ad. See discussion at
https://github.com/openwall/john/commit/4b6929031
Revert "Many OpenCL formats: Use new scheme of LWS=NULL for
less-than-full batches" This reverts commit
0d3ea928cbdb2c2a861c0ecd3c00fc2113213387.
Jumbo changes according to recent core changes ("NEON"->"ASIMD" for
aarch64). Also test for __aarch64__ in case it doesn't already
define __ARM_NEON.
OMP tune, a bunch of formats. See #3091
Various updates to install instructions. See #3513, #3753
Update relbench
Fix copyright blurb in showformats.[ch]
Fix a type for SHA-512 using 128/128 ASIMD: "4x" should be "2x".
Change RAR3 formats to benchmark length 5, just like hashcat. See
#3697
Mask mode: For -test -mask, give format a mask corresponding to its
requested benchmark_length. See #3697.
Major bugfix for -test -mask. That functionality wasn't added to the
newly merged code path. See #3697.
Final (hopefully) fixes to mask-mode benchmark after merge.
Mask-mode benchmark: Add/replace benchmark_comment with "(length n)"
if a custom mask is being specified. Also separate used mask from
requested mask (so we can see whether mask is default or not).
OMP_SCALE & MKPC tuning, many formats, Closes #3091
More doc updates for regex / librexgen.
Update CHANGES-jumbo.git and CREDITS-jumbo
Add the john.conf [Debug] section for legacy benchmarks.
mask.c: Export a function for evaluating mask_add_len from a mask
without calling mask_init(). Use said function when benchmarking
with mask, for getting a proper (length n) message. See #3780.
Add cmp_all() to auto-tune, and have all formats calling OpenCL
functions from cmp_all profile it. See #3779.
Autoconf: Add -fno-strict-aliasing to NEON and ASIMD builds. This
pacifies numerous compiler warnings from DES_bs_b.c
Fix some GPU device number reporting problems. Closes #3639
If building BE, print a notice that OpenVMS format is disabled. Closes
#1474
Fix the last few OpenCL formats that didn't set GWS to next LWS
multiple larger than count. Closes #3489.
Fix a silly bug in new autotune code. We were trying to call binary
with a "ciphertext" that was already a binary. Closes #3788.
Cosmetic bugfix for node/fork OpenCL.
Add multi-word rules, and include them in "jumbo" rule-set. Closes
#3789
Un-comment a number of config options, so they're seen with eg.
--list=parameters:options:opencl (see #3598)
Revert all core parts of 15163f4. We need to regression test the
changes better before releasing it. See #3517, #3468. We'll
revisit this after 1.9.0-Jumbo-1 release.
Mute some diagnostics from yescrypt, at least for now. Also pacify a
strange warning from clang stopping us from doing sanity checks,
WTF?
Disable monero format for BE builds. See #3513
Fix salt hash size in drupal7
BF-opencl: Workaround for Sayantan's strange keyboard. Oh, and a
salt_hash() fix that was missed until now for that reason.
nsec3 format salt_hash fix (was using ancient fixed salt hash size)
Update CHANGES-jumbo.git and CREDITS-jumbo
params.h tweaks for future Jumbo
Fix some algorithm names that were incorrect. See #3513
Lots of lgorithm_name fixes, and mute another yescrypt build warning
(notice). See €3513
A few more algorithm_name fixes. See #3513
Work around some weird problem with dynamic cmopiler format, #3796
SIPDump and eapmd5tojohn: source <getopt.h> instead of declaring
extern optind. See #3799
Fix a -Wdiscarded-qualifiers in opencl_common.c for SYSTEMWIDE
Revise INSTALL-UBUNTU. Add OMP fall-back.
--show=format[-all]-details fixes for new benchmark_length
Minor bugfix for special many-salts benchmark --test=-1
Don't suggest setting RelaxKPCWarningCheck when it's already set. Also
make message a little shorter, avoiding a line wrap decision.
7z formats: Move the compile-time TRUST_PADDING macro to a john.conf
option, so user can decide. Have it default to true, since we've
only had a single report of false negative and that was an archive
of dubious origin. Closes #3806.
Disable the generic crypt(3) format on CircleCI, it seems to always
fail now. Closes #3867
Relbench: Avoid division by zero, closes #3878
RACF: Adjust OMP scale after testing on super, see #3091
Re-tune krb5-db and o5logon for super. See #3091
Avoid inconsistent messages from -test -mask, closes #3875
Update CREDITS-jumbo and CHANGES-jumbo.git
loader.c: Only sort salts for real db's. See #3091.
OMP auto-tune: Print any messages to stdout instead of stderr.
formats.c: Add a missing space in error message.
Fix a logic bug in self-tests.
7z formats: Add support for "deflate" compression, kudos to philsmd.
SL3 and salted-sha1 opencl formats: Revert to using LWS=NULL when
count is lower than GWS. I just can't find whatever bug is triggered
by not doing this. Closes #3880.
Mute warnings from gcc 9 and from new OpenCL headers.
CRC32C: Report AVX if applicable Stribog: Report AVX if applicable
Pomelo: Report AVX/AVX2 if applicable
Drop raw-sha1-ng format. It's obsolete. See #3881
Drop raw-sha256-ng format. It's obsolete. See #3881
Drop raw-sha512-ng format. It's obsolete. See #3881
Drop Alain's good old NT format. It's finally obsolete. #3881
Drop Pomelo format, it's obsolete and probably not used anywhere. See
#3881
External mode: Fix a problem with UTF-32 -> UTF-8 length, so we behave
like the comments in eg. dumb32.conf says we do.
Suppress "Many salts" benchmarks where appropriate. Closes #3795.
Update CHANGES-jumbo-git and CREDITS-jumbo. See #1911.
Just demonstrating why even I should always go through bot checks :-/
Bail out with message if running legacy benchmarks with --mask.
Fix legacy builds, see #3875
Avoid a problem casting size_t to negative and then to off_t (#3904)
Bugfix (again) for UTF-32 vs. UTF-8 length issues with external mode.
This needs to be fully reworked post release of 1.9.0-Jumbo-1, it's
still messy and we've got catch-22's.
john.c: Avoid printing many of same error message under MPI.
Add the debug code for #3795 as a config option.
Move bench debug code to correct position
Fix and complete one/many salts debugging
Unsplit test vectors that were split through use of backslashes inside
the string constant. See #3896.
Fix one/many vs. raw benchmark output for a number of formats (#3906)
Repurpose and refactor aix-smd5 to md5crypt-long. Closes #3872.
Drop doc/BUGS
Move NEWS from GitHub wiki to doc/NEWS
Check OpenCL headers version and bail out if 1.2 is not supported. See
#3918.
Update CHANGES-jumbo.git and CREDITS-jumbo, see #1911
Re-unify raw-md4 and raw_md5 formats, fixing bugs in the former.
Closes #3916.
Fold long lines in doc/NEWS
Ensure we never benchmark less than two salts for "Many salts".
(#3922)
Save the script used for #3795 under unused
Save my template bisect script under unused
Update CHANGES-jumbo.git and CREDITS-jumbo, see #1911
Fix salt alignment in a bunch of formats, see #3932
Better error message when some rule is missing in a list, eg.
--rules=one,two. Closes #3935.
Fix non-SIMD blake2 aliasing violations leading to failures. Closes
#3079, See also #3932.
Disable STRIP & Enpass formats on S/390. Bod knows why they fail.
(#3940)
Comment out some unused stuff from ed25519-donna code
memory.c: Move the dump_stuff* debug functions out of #if SIMD...
blocks, it was breaking "make debug" on non-SIMD targets.
Minor fixes to doc/INSTALL and doc/INSTALL-FEDORA
Rename CHANGES-jumbo.git to CHANGES-JUMBO and update it. The older
CHANGES-jumbo contained information already in other files (but
shorter, more like our new NEWS file). Closes #1911.

JimF (1545):
configure: removed many function checks (for #910)
phpass: non-OMP builds were no SIMD, fix #916
configure: Added arm-NEON instruction detection logic, #911
change execute bits
configure: removed many size checks per #910
bleeding-jumbo version. Set to 1.8.0-jumbo-1+bleeding-jumbo
bleeding version: changed per magnum
configure: added LARGEFILE_SUPPORT to many 32 bit systems which were
missing it
configure: LARGEFILE_SUPPORT, added a check for 32 bit systems
configure: broken case statement
wrap all include limits.h which were not prior wrapped
wrap all include locale.h which were not prior wrapped
haval: failure to build after HAVE_TYPES_H code added
sph hashes: failure to build after HAVE_TYPES_H code added
configure: header wrappers for termios.h and sys/params.h
autoconf: updated logic for _LARGEFILE64_SOURCE, added -DEBUG to ASan
added -BSD to 32 bit freebsd ASFLAGS
autoconf: Removed the header includes that were not needing wrapped
MODES: document. Added Markov/Mask. Fixes #904
base64_conv: fixed length is get_len where mime has trailing =
pass_gen: added sapH
New POC format, sapH, still very slow
pass_gen: some debugging stuff left in sapH, removed it
sapH: added OMP, still only oSSL
sapH: added cost and did some small speedups reusing buffers better.
pass_gen.pl: added SIP hash
sip: added new test vectors made with pass_gen.pl
SIP: changed to use proper binary, vs the cracked way.
loader: fixes #930 dynamic hex not being removed from .pot load
Makefile.in some defines needed. Problem showed up in #933
cygwin: Fixed #932 fseeko link fail GetFileSizeEx
SIP: Fixes #923 Format now actually works
SIP: a bit faster, and smaller salt. Preload CTX
SIP: wrong buffer size used
listconf: format-tests. If nothing can be output, then do not output
loader: incresed number of parms being loaded from file, for scrypt
scrypt: ScryptKDF.pm data was NOT loadable from a file. #938
scrypt: fixed 938
scrypt: changed ScryptKDF signature to be a single field
truecrypt: fixed unified format. Fix #941
rsvp: fix #937 Caching had to be for each type
rsvp: use array for new-keys, and made more extensible
rsvp: depending upon clearkeys does not work for self test code
pass_gen: added RSVP hash
dyna_salt: Fix salt_smash_check. Fix #920
Bugs in split and FMT_SPLIT_UNIFIES_CASE fixed
self-test, always call clear_keys before adding new keys
gost: needed split-unifies-case
Added FMT_SPLIT_UNIFIES_CASE to these are formats with hex hashes
places ishex() and other helper functions into common.[ch]
moved include from .h to .c after 4770e4c
blackberry-es10: added UC only validation of hash
HDAA: added proper valid
IKE: improved valid to only accept lc hex
LUKS: improved valid to only accept lc hex
PDF: improved valid to only handle lower case hex
rawsha512_opencl: fixed split non-case issue
base64_convert: added upcase/locase to length of hex. Reformatted .h
file
removed execute bits
HDAA: fixed dupe salt detect logic. fix #951
HDAA: stop silly memory usage, and free things up, during salt()
autoconf: added a couple echo statements for plug processing
autoconf: added probe and check for perl before usage
formats.c: salt dupe logic working for dyna_salts also
kwallet: fixed salt dupe problem (#953)
formats.c: some helpful commentted out code for tracking down salt
dupe problems
base64: reduced memset overhead. Only clear bytes when needed
dynamic_21: removed this format hash totally
Build: hopeful fix for aes.a always built, #957
pfx: added comment about salt
build: fixed circular autoconfig-stamp-h problem, got auto-autoheader
working again
dynamic: disable a lot of dynamic hashes
formats: allow OMP_SCALE modification at runtime, in john.conf
OMP_auto_scale: I had not left the multiplier at 1.0, my bad.
blockchain: OMP_SCALE 2.3x increase on AMD, please check on Intel
crc32: OMP_SCALE 42% increase on AMD, please check on Intel
crc32: scale not set on last commit
EPI: added OMP, and OMP scaling
Fortigate: better handling of OMP_SCALING
gost: OMP_SCALE tuning
dahua: OMP_SCALE tuning
hmacSHA2: OMP scaling
mongodb: OMP scaling
mssql12: OMP scaling
mysqlna: OMP scaling
postgres: OMP scaling
racf: OMP scaling
sapB: OMP scaling
ssh_ng: OMP scaling
omp_scaling: added comments on a couple formats
sapH: changed OMP scaling computation for later in SIMD
oldoffice: OMP Scaling
VMS: OMP scaling
tcp_md5: OMP SCALING
gost: OMP_SCALE, was wrong scale
mss1l12: wrong OMP_SCALE used in ad8faae
mysqlna: wrong OMPSCALE used in 2221cbb
postgres: wrong OMPSCALE used in 3524196
IPB2: changed how OMP_SCALE is built in init, and adjusted scale a bit
EPI: forgot to add FMT_OMP to flags
sapB: valid() fix #959
sapG: valid() fix #960
base64_convert: fix #968
base64_convert: pure formatting difference, no code change
mediawiki: fix #961
added element to gitignore after fixing makefile
formats.c: handle possible floating point rounding issue
unicode: overflow, fix #963
zip format: enhanced valid, fix #966
7z: fixed valid() bug: fix #962
base64_convert: handle to_len. Fix #965
configure: plugin_deps.pl skip warning about autoconfig.h fix #970
plugin_deps.pl: autoconfig.h was not output if not there. File needed
closed also
base64_conv/lastpass_sniffed: last buffer overread problems fixed.
Fix #964
base64_conv: finished up mods. Now all converts honor to_len
encfs: fix bug #971
HDAA: fix #972
pkzip: fix #973
pdf: fix #974
office: valid fix #975
KRB4: bug fix (realm buffer too small), and valid() fix #976
pbkdf2-hmac-sha512: prepare bug: fix #977
KRB4: removed a warning
pbkdf2-hmac-sha512: fix #977
office and opencl: created a office_common set of functions
office-common: removed execute bit
office-common: comment and eol at end of file. NO code change
encfs and opencl: created an encfs_common set of functions
md5ns: Converted to thin dynamic format. OMP/SIMD benfits
md5ns: warning of unused variable
cryptmd5: created an cryptmd5_common set of functions. Added {smd5} to
GPU, but not working
luks: Here is a version that is twice as fast, and does not have ASAN
errors
LUKS: added SIMD code
md5ns: changed so that native hashes get written to .pot file
md5ns: improved ALGORITHM text
bcrypt / opencl: created a BF_common set of functions / data
dragonfly: OMP_SCALE adjustments
sha1crypt / opencl: added sha1crypt_common functions and data
dyna_salt memory leaks, reported on #980'
memdbg: added 4 new information getters for memory blocks
dyna_salt: Updated. Changed dyna_salt_create to actually do something,
in memdbg mode
cuda_cryptmd5: fix #984
dyna_salt: removed redundant code
pass_gen.pl added dyna types: 1013 1016 1400 1401 1501 1502 1503 1504
dynamic: larger hashes. Fixed max PLAINTEXT length, as found by test
suite
dynamic_2010/2011: fix #987
dynamic flat hashes. Same issue as fixed in 3494a53
cryptsha512: was not cleaning its salt buffer
dynamic: flat SIMD buffer cleaning bug fixed
ssh-ng: add #debug compile switch to new type2 bcrypt hash. Fixes
-test time to execute
zip: retuned OMP_SCALE, and -test wallclock is much better, and c/s
are same
rawsha256-cuda needed a wrap
cryptsha256: added tests into common code. Fixed a couple of failure
to zero out salt issues
pass_gen: a couple fixes after last change adding all the dyna, to get
-tstall to work properly again
cp737 encoding fix for greek lower final epsilon. Fix #993 fix #994
cp737 lower. There is a LOW_ONLY field. That is what should have been
used, and now is
additional fix needed after d33e727
rar: propre fix for #1000 and #1001 ASAN read issues
rar: removed debugging line
removed comments no longer required, and set allocation back to what
it was
autoconf: check buildability of asan. fix #1006
list=build-info: output memdbg, DEBUG and ASAN status
rawmd5u: fixed overflow bug, found by ASan
small edits listing user number on hash
mscash1: changed to allow standard OMP_SCALE adjustments
mscash2: changed to allow OMP_SCALE, improved performace a bit
pass_gen: allow unicode input and base64 output, by splitting out
unicode input as a new function
dynamic: better base64 handling. Added peoplesoft hash
pass_gen: added dyna_1032, peoplesoft hash
dynamic: fix to get phpass working. It uses CryptBS layout
mediawiki: thin dynamic, now store hashes in the native format into
the .pot file
phpass: changed thin format to store native hash in .pot file
mediawiki: small clean up after .pot output format change
phpass: cut/paste coding bug
PHPS: thin format now outputs raw original hashes
base64_conv: problems handing NULL data, for crypt conversions
rar: ASan bug, #1010
wordlist: unfreed memory block in -pipe mode
bench_cost: got dyna_salt remove working properly
dynamic: now fully handles base-64 of MIME, Crypt and CryptBS types.
Fix #1007
dyna_1033: changed expression shown on screen output
dynamic_1033: hide this format. It is only a fake testing format
dynamic documentation: #874. There may still updates to be made
IKE: fixed salt-dupe failure problem, #953
SSH: added dynamic salt. Removed salt-dupe problems. #953
PFX: dyna_salt. removed salt-dupe problem. #953
dyna_salt.h: needed a #define wrapper
pkzip: converted to dyna_salt. Removes dupe-salt problem. #953
pkzip.h: had some code left for an earlier tried method, that was not
needed
relbench: [handle the new speed for cost] message ignored. Fix #1013
PRINCE: make sure to disable in john.c if no GMP
ecryptfs: error, valid not getting only the $1$ signature
ecryptfs: completed fix #1017
dyna_salt warning correction. Fix #1021
removed DOS line endings
prince: removed warning, AND better handle this in non-memdbg and
memdbg modes
pass_gen: added 2 new pbkdf2-sha1, fixed line wrap problem in base64
code
pass_gen: changes for rsvp processing
pass_gen: added aix-smd5, and some -mode=xx to allow certain formats
to share salts
wowsrp: This format was broken. It only handled even 64 byte binary,
but for modular math, this will NOT be the case
pass_gen: added sha1crypt, tiger, whirlpool. Modified pp_pbkdf2 to
also do pbkdf1
pass_gen.pl: pbkdf1 caused bug in pbkdf2. Fixed
chap: enhanced valid
pass_gen.pl: added, hsrp known-hosts chap and dynamic_1010
wowsrp: small changes. There should have been cases still not
correctly finding values, even though they did not show in the TS.
Lack of memset for nonGMP, the todo length was wrong on GMP, and
likely would have caused ASan overread errors.
pass_gen.pl: added blackberry-es10, citrix-ns10 and clipperz-srp
hashes
clipperz: Fixed this SRP format. Fix #1028
wowsrp and clipperz: added split and proper canonization code. Fix
#1027
dahua: it is a raw format, but we were treating it salted in tests
added dahua. Some cleanup on clipperz-srp
pass_gen.pl: added fortigate, lp and lastpass
lastpass_sniffed: salt-dupe code was broken. #1031
lastpass_sniffed: Wrong (WIP) code left in non SIMD section
scrypt: salt-dupe problems. #1031
truecrypt: #1031. Only a comment, since this format does not have
duplicate salts.
Added hashes for: rawmd2, mdc2, mongodb, mysqlna, o5logon, postgres.
Added get_username() but not heavily used yet
pass_gen.pl: added pst format
pass_gen.pl: added raw-blake2
luks: fixed dupe salt problem (dyna salt). #953
added keccak (512-256), siemens_s7, skein (256-512, BUT they are not
compatible), ssha512 and tcp-md5
prince: portability stuff
pass_gen.pl: fixed small bug found in dupe-salt script running
mozilla: fixed dupe salt problem. #1031
pass_gen.pl: some changes needed help in the salt-dupe finding project
SKEY: fixed salt dupe bug. #1031
pass_gen.pl: added strip format
pass_gen.pl: ns-md5 was nto working any more. Fixed
wpapsk: salt dupe removal fix, remove binary from salt. #1031
pass_gen.pl: code changes to allow some formats to use the same salt
values
pass_gen.pl: added stub functions for ALL current JtR formats not yet
handled
Salt Dupe removal code broke format due to salt hashing
dynamic_fmt: big bug in NON SIMD builds. Found from warning messages
on a MIPS-64 build
dynamic: changed location of min-plaintext-length
sha1crypt_common.c: Error compiling on BE systems
hmacSHA384/512: Fixed failure on 64 bit BE systems
formats.c: added some additional debugging information when we have
hash/binary failures
krb5-18: BE64 port, and some simplification
dynamic_17: fixed be issue on mips64 build: #1032
unicode.c: E_md4hash fixes on BE allowing unaligned access, mips64be
EPI: fixed core on unaligned systems (salt hash accessed 4 byte align)
md5ns: fixed core on unaligned systems
truecrypt: fixed BE problems with this format
cloudkeychain: BE failures fixed
LUKS: BE fixes
EFS: fixed BE problems
added strrev function to configure and supporting code
mpz_int128: removed recursion from in128tostr and about 4x faster
PRINCE: problems when building using GMP
configure: ARCH_ALLOWS_UNALIGNED moved to static headers. Fix #1034
pass_gen: comments only
scrypt: corrected pointer alias issues causing scrypt to fail on
MIPS64. #1032
formats.c: Added some debugging code, to help in porting to BE, or
finding other errors
pp.c: 32 bit issue, and GMP issue fixed
removed spurious file. This header is in escrypt, and somehow an old
version was put into src root
sybase-prob (feal8), fixed on 64 bit BE, #1032
another spurious header from escrypt folder
formats.c: inadvertant code removed in 131064f
formats.c: re-enabled extra debugging for get_hash failures
office_2007: salt dupe logic. We decrypt now, vs encrypt.
pass_gen: phase1 of rewrite, to unify output. #1039
Makefile.legacy: added a couple newer objects
pass_gen.pl, updated to allow Lophtcrack type hashes to work with
unified output
pass_gen.pl: added bitcoin
dynamic: some length problems in the preloads. x86 shorter than SIMD
Dynamic: changes made to thin formats. Set plaintext length(if thin
sets it to 0). Also, salt_compare function was missing
mediawiki: upgraded thin format for better linkage to dynamic
dynamic.conf: comment about dynamic_1033 missing
pass_gen: dynamic_1033 was missing
md5-NS: upgraded thin format for better linkage to dynamic
formspring: upgraded thin format for better linkage to dynamic
asaMD5: upgraded thin format for better linkage to dynamic. NOTE,
broke before. plain-len was set to 32, but max should be only 12
osc: upgraded thin format for better linkage to dynamic.
pass_gen.pl: dynamic_17 was totally busted, trying to set specific
salts
phpass: upgraded thin format for better linkage to dynamic.
pixMD5: upgraded thin format for better linkage to dynamic.
pass_gen.pl: recent change, the unified output, broke PHPS
PHPS: upgraded thin format for better linkage to dynamic.
options/listconf: added asAN and unified version string. Fix #1005
crypt-descrypt: for length-13, we never disable, since they are in ST
code
added UID to crack outputs (optional). Issue #517
wpapcap2john: placed bssid into uid field, we had the connecting mac
in that field before
hmailserver: converted to dynamic_61 thin format. Now has OMP, and
SIMD usage
sapG: improved OMP scaling (slight, only 10% or so improvement)
XSHA512: improved OMP scaling
logger: helps with -fork multi process screen overwrites. DOES NOT
fix, just makes better
changed _asAN to _asan for JtR version string
dynamic: FLAT and not-sse2safe salted formats extended length of salt
and passwords
john.c: in cygwin, some aborts leave tty input in unstable state.
CYGWIN only
cygwin: -fork updates. Also improved logger.c LOCK_DEBUG logging
cygwin: removed prior jtr stty echo at exit.
logger.c: added fcntl locking (ONLY for cygwin at this time), vs flock
pp: mute some warnings
dynamic_1505: was crashing on travis for clang builds
dynamic_1505: input length fix, (again)
dynamic_1505: converted to flat format only. Non flat could only have
11 byte password, with 12 byte salt. Just too small
john_bashcompletion: Update to handle new usage screen that does not
list formats
options: remove format list from normal usage string
options: usage string slightly changed
pass_gen: added agilekeychain
pass_gen: agilekeychain code was not properly saved. a few changed
pass_gen: added blockchain
blockchain: improved detection and eliminated FMT_NOT_EXACT
blockchain: first check was looking over too much data.
blockchain: Now handles the V2 hashes. We may want to work more on
this, and use native mime hashes, etc
blockchain-opencl: Added v2/iteration changes to opencl version
cryptsha512: changed comment to match actual code
cryptsha256: same comment problem as seen on cryptsha512
cryptsha256: got SIMD code working
memory: added dbg funtions for 8 byte SIMD not doing byte swapping,
i.e. SHA512, but flat buffer
cryptsha256: some tweaks done when porting code to cryptsha512
cryptsha512: added SIMD. Also moved test vectors to common code
cryptsha512: bug in non-OMP builds
cryptsha512: error, any 2 limb hash was broken. All passwords over 15
bytes were failing
cryptsha256 and 512: fixed for 32 bit cygwin OMP builds (worked around
compiler bug)
cryptsha: removed debugging code. These formats are working fine now
cryptsha512: added more test vectors, and found bug for length 32 and
48 hashes
hmac-SHA256/224: added SIMD
hmacSHA256/224 some small fixes, found when porting SIMD to sha512
algorithms
hmacSHA512: added SIMD
hmac-sha512/384 would not compile in non-SIMD mode without this change
hmac-SHA384: added SIMD. Some debug code still commented out, for now
hmac-sha256/224, use PAD_SIZE for the prep_ipad. It is the correct
size
hmacSHA512: removed some DOS line endings. Switched to using PAD_SIZE
for size of prep_[io]pad
hmac-SHA2 stuff: Removed debugging commented out code. Changed
OMP_SCALE for sha512 formats, SIMD
xsha512: added SIMD
removed DOS line endings
hmacSHA384: bug fix and a couple changes trying to find the OMP bug
#1063. Still a problem
ssha512: added SIMD
ssha512: error building/running NON SIMD
hmac-md5: change to prior commit. #1067
configure: removed memdbg-ex from configure. That mode was written as
a last resort, hail marry attempt to find memory bugs. It does not
work for all formats, and should not be used that way.
XSHA512: inc needed added to pragma for non-SIMD. Not sure why it did
not complain on SIMD builds, but I added it there also
XSHA512: fixed bug for passwords under 4 bytes, in SIMD code. Key was
not cleaned properly
base64-conv: fix for input text length being more than actual
available input text. Fixes #1071. A new -l test added also
base64-conv: some fixes for last commit
base64-conv: some fixes for last commits
base64-conv: switched from strlen to strnlen
drupal7: Added SIMD logic
drupal7: minor text editing
office_2007: SIMD code added
office-2007: removed the crypt buffer, was not really needed
office-2007. Changed interface to non MMX function to simplify
crypt_all code. Same type logic will be used for 2010 and 2013
office2010/2013 added SIMD. Debugging code still there, commented out
office2010/2013 debugging stuff removed
office simd formats. Some simplifications
office: lengthened plaintext length and removed a couple of warnings
office: added max length password test cases
ecryptfs: added SIMD (debugging code still there, commented out)
ecryptfs: cleaned up comments
pwsafe: Added SIMD code. 4x improvement
keyring: added SIMD instructions
SAP-H: added SIMD logic
sse-intrinsic: SHA formats, added SSEi_FLAT_RELOAD_SWAPLAST flag. Fix
#1082
Sybase-ASE: added SIMD logic
blackberry-es10: added SIMD instructions
pass_gen.pl: added ability to do shorter salts for sha256crypt
cryptsha256: handle shorter salts on SIMD code.
pass_gen: special code got left in
sha512crypt: added SIMD ability to handle shorter salts
cryptsha2: added code to help easily build withing SIMD (for testing)
net-[md5|sha1]: Salt align problems on clang. #1081
cryptsha2: mute warnings. Fixes #1080
sybase-ase: unify case, and improve valid. Fixes #1087
dynamic: SHA384/SHA512 added SIMD instructions
(magnum:) Re-applied Jim's "bcrypt / opencl: created a BF_common set
of functions / data" (but updated to current core). Original commit
8c0a72f.
siemens-7 had 2 $ in the hash.
siemens: only validate a 1. Since we now have split, a 0 should not
be valid any more
dynamic: in a debug build, we do NOT disable any dyna format. #956
dynamic: calls dynamic_FIX_SALT_TO_HEX if hash is dyna on --show=left
fixes #986
MMX_COEF_SHA[256][512] changed to SIMD_COEF_[32][64]. Also changed
PARA for SHA2 functions
cryptsha[256][512] a little cleanup of MMX name tags, also goes with
#1099
dynamic:sha384. Some typo corrupton
SIMD: #1099. Switched from (SIMD_COEF_32>>1) to SIMD_COEF32_BITS.
Added that define to x86-sse.h and x86-64.h
SIMD: #1099. Changed define name of MMX_TYPE to SIMD_TYPE_STR
after const added to count, gcc at times in the pragma omp
blockchain: fixed promiscuous valid issue once we change to strtokm
django_scrypt: issue seen when switching from strtok to strtokm
SKEY: do not use strtokm at this time.
gpg: change to work with strtokm, skipping over prepended delimiter
kwallet: fix for promiscuous valid when switching to strtokm
mozilla: fix to skip prepended delimiter, strtokm
ssh-ng: fix to work properly with strtokm
strip: Fix to work with strtokm
memdbg: Try to maintain 16 byte alignments, since we are using allocs
now for crypt/input buffers
dynamic: Regression problems (32 bit and memdbg) in dynamic after
3b6727f
dragonfly: we missed a done
dragonfly: we missed a done
net-md5/sha1. Quasi thin format. We have to call dynamic.methods.done
by hand here, since we overloaded it
memory.c: alignment versions of mem_alloc and mem_calloc
dynamic: redone, to use the aligment versions in memory.c
dynamic: redone, to use the aligment versions in memory.c, prior patch
was incomplete
dynamic: redone, to use the aligment versions in memory.c, prior 2
patches were incomplete
dynamic: redone, to use the aligment versions in memory.c, prior
patches were incomplete
mssql12: buffer alignment with new mem_calloc for SIMD code
many formats. Fixed 32 bit builds for SIMD after moving to calloc
many formats. Fixed 32 bit builds for SIMD after moving to calloc
many formats. Fixed 32 bit builds for SIMD after moving to calloc
memdbg: got this working with new mem_aligned code. Also got VC ported
over
memdbg issues and a memory leak found in VC port
cygwin. Do not add _XOPEN_SOUR=600 define for _posix_memalign. It
causes tons of warnings, and cygwin works without it
memdbg.h missing from these 2. Also a memory leak found and fixed once
memdbg was there, in office
raw-sha512-ng: fixes crash in 32 bit builds, alignment
VC port, without memdbg with new _malloc_aligned
VC port, _malloc_aligned. Hopefully last fixes
VC portability issue (_malloc_align)
misc.[ch]: added new strtokm function, and a #define to switch all
strtok to use it
Mute warnings about different parameter types in function declaration
vs definition
memdbg: mute warning, size_t vs long param issue.
VC compiling in jumbo.h
plugin.c: added a comment about very suspect looking code
config.c: switched to using strtokm
markov: use strtokm and now start and end can be empty, with just the
: chars
raw2dyna switched to using strtokm
raw2dyna: revert strtokm change
markov: level is now an optional param
Some SHA512 formats were getting failures on VC debugging builds
memory.c: bug in non-aligned arched for alter_endianity_w64.
mask_ext: added missing memdbg.h include
dynamic: binary align to 8 bytes
cygwin build problem fixed. #1250
dynamic: fix #1208 warning about pointer bool conversion.
regen-lost-salts problem. Fix #1154
dynamic format honors --disable-omp-for-fast-formats. Fix #1334
dynamic disable OMP was not right. It always was disabling. Now it is
controlled by configure, and can be turned on
-stress-test problems for thin dynamic formats. Fixes #1135
required changed to get MSVC to build again with SIMD
dynamic: work to get SIMD_PARA working for dyna with multiple hash
types, where the para do not match
dynamic: fix problem where including dyna headers could turn off OMP
in john.c
dynamic PARA problems fixed core crash for PARA=4 md4. #1127
rar2john. Removed warnings seen on 32 bit builds
dynamic. After 3e0b41d 32 bit builds where we had MD5 asm were failing
at link. #1334. NOTE, dyna 1401 and 1503 core and I do not know why,
yet
MSVC issues with OpenMP build.
dynamic: honor --disable-omp-for-fast was broken.
dynamic: removed MD5_Go code. #1298
changes needed to at least compile on my sparc
pufferfish. jumbo.h required for VC to build (no snprintf)
has-160: fixed BE failure
dominosec8: ported to work for BE systems. #1345
dominosec8: memdbg found a memory leak
stribog: memory leak
PO: removed MD5_go logic, replaced it with oSSL
dynamic: Dos line endings
md5_go: removed this module. Fixes #1347
strcasestr: added to autoconf for systems without this function. Fix
1366
small fixes to b383434
has160: required memdbg.h being added
many source files missing memdbg.h
pomelo: after adding memdbg.h, the format was crashing in memdbg_on
builds
memdbg: allow greater than 16 byte alignment. Fix 1200 Never align
better than requested Fix 1195
aix_ssha: This would not build on non x86 systems
memdbg: added memory.h include to the memdbg header
memdbg: improved test code in john.c by adding the memdbg checks on
exit
hmacSHA384: fixed core on non-aligned 32 bit systems
XSHA512: would not build on non x86 systems
memdbg: bug fixes in EXTRA checks, after recent changes
XSHA512: fixed failures in non SSE builds
dynamic: updated todo comments with items which have been completed
memdbg: the dereference of uint32 data for fence post checking is no
longer done, so remove those unused defines
sse-intrinsics: wrap the sha256 and sha512 in #define logic
x86-64 non-SIMD build help. #1370
x86-64 added -mno-mmx to the ignored list. #1370
john.c: setvbuf portability issues. Likely there are other
portability issues using that function
final status line in --wordlist mode did not contain percentage. Fix
#1372
markov: fix core if force run where level is too small
PHPS: address sanitizer found bug. This format requires 3 byte salt
(legacy code build). Fix #1261
dynamic: removed some older todo comments. Allow better debugging
within VC
dynamic_1506: remove the StartInX86Mode flag
memdbg: mute warnings seen on 32 bit compilers from recent changes
pseudo_intrinsics: pure SSE2 could not be built
oracle12: Fixes to make work on BE system
Some changes needed to get current MinGW64 to compile
testparas.pl: perform the testing longer.
testparas.pl: added seconds param, and extra information to final
table
Mingw64: strip needs to use the proper cross compiler strip
django-scrypt: if N too large, the kdf aborts, but we were not
trapping it. Fixes 1413. This probably should be in valid also
pbkdf2-hmac-sha1: stack overflow possibile: Fix #1411 and #1412
pbkdf2-hmac-md5: added proper valid() Fix #1388
configure: removed warning messages about Expect not found
scrypt lib code: validation checking. Fix #1385
ssh: Improved valid, checking whether we can get the salt properly or
not
vtp: buffer overwrite. Fix #1391
vtp: domain_name length check in valid. Also, fixed overwrite problem
where we had an array of pointers, and not an array of chars.
gpg: improvement to valid(). Fix #1417
gpg: Handle a default algorithm. Fix #1418
keepass: fixed valid(). Fix #1419
luks: improved valid. Fix #1386
base64_conv: handle binary or whole files with the utility. Fix #1423
crc32c: changed test vector to be proper for ripper12345 starting
from ripper
crc32: added crc32c to the format. Fix #1422
crc32c: improved performance of non-SSE4.2 code. crc32, reduced
complexity of crc32c setup code
base64_conv: mute warnings
crc32: Unified all CRC32 / CRC-32C function into crc32.[ch]. This DOES
change the core files (crc32.[ch]), but was given the go ahead to do
this. Fix #1379
pass_gen.pl: Fixed dynamic parsing that uses a negative salt length.
Added dynamic_1017
pufferfish: added proper valid checks. Fix #1390
oldoffice: Improved valid to fix ASAN found buffer read overflow. Fix
#1410
office: improved valid. ASAN buffer read overflow. Fix #1409
wbb3: Segment fault. Fix #1434
opencl_pkbdf2_sha1: Same fix as done to core. Fix #1411 Fix #1412
opencl_gpg: Same fix as done to core format. Fix #1417
oldoffice-opencl: same fix as on core. Fix #1410
Add support for more NTP hash types. Partly reverts 4556eb4
django: buffer overflow. Fix #1408
clipperz: buffer overflow. #1407
MinGW64 warnings. MinGW64 can no longer handle %I64 modifier for long
long
MinGW64. %I64 reverted.
bitmap-perf-test: attempt to correct MinGW64 build on CirclCI
MinGW64 warnings. and modification to all %ll* to LL* and %zu to Zu
within printfs. #1439
opencl-rawmd4: fix warnings for sprintf parms #1441
MinGW64 warnings muted. #1439
--list=format-all-details, added more details to A $ format line
MinGW install doc. Missing package
Small debugging change to the build script to see Makefile
CircleCI debug take 2
CircleCI removed debugging for now
pbkdf2-hmac-md5: attempt to quiet CircleCI until we figure out problem
Missed another ctx reference
MD[45].[ch]: make the structures appear closer in binary layout to
oSSL
md4.c: fix is a global cut/replace screw up
configure.ac: fixed oSSL search for cross compile
CircleCI-MinGW.sh: no longer requires OPENSSL_LIBS after fixes to
configure
dynamic-thin: Enhanced so a temp dyna script can be PART of the thin
format file
dynamic_thin updates. A couple fixes and warning muting
thin-dynamic: made changes to allow native test hashes in test script
dynamic: added 2 new flags, for pre-compute in sha1/sha256
dynamic.conf: added missing comments, and set coldfusion salt-len to
64
pass_gen.pl: updated with 3 dynamic formats from dynamic.conf
configure.ac: OpenSSL issues between no-pkg-config and cross compile,
etc. #1451
NETLMv2: Buffer overflow. #1405 #1406
django: fixed core dump. Fix #1397
NETNTLM buffer overflow. Fix #1405 Fix #1406
uint_xx cleanup: Fix #1457
MIN/MAX code cleanup. Fix #1456
SKEY: proper valid. Fix #1396
salted_sha1: Improved valid. Fix #1395
pomelo: improved valid() Fix #1389
dynamic: #1453. Added all hash types to the crypt() and crypt()
optimizations
dynamic: some optimization of types md5(md5(....)...))
dynamic_1501 optimization
dynamic: Added true dynamic expression building format
updated copyright notifies in dynamic_compiler
pfx: fixed memory leak
pfx: fixed memory leak fully. Fix #1246
dynamic_compiler. Remove the @ chars from expression. added memdbg.
Added a testing main() function
gpg: mem leak. fixed #1245
gpg: missed a big-num memory leak
pass_gen.pl: updates to get_token function, to match what is being
done in the dynamic_compiler code
hmacMD5: fixed core. Fix #1472
dynamic_compiler. Some rename, and moved a function into
dynamic_compiler_plug.c. #1477
renamed dynamic_compiler_plug.c to dynamic_compiler.c. Fix #1477
dynamic_compiler: real working. Still much work to do, but many
hashes ARE fully working
dynamic_compiler: error, md4/md5 salt-as-hash were getting 40 byte
length for the salt
pbkdf2-hmac-sha1: buffer overflow in prepare. Fix #1478
dynamic_compiler: Handles more expressions, still more work to do
dynamic_compiler: added gost, ripemd, tiger and whirlpool types
dynamic_compiler: had to add MGF_INPUT_xx_BYTE for hashes not 16 byte
long
pass_gen: fixed a bug in gost processing for dynamics
dynamic_compiler: added unicode. initial gost tables properly. logic
for salt length
dynamic: unified $salt/$pass to be $s/$p
dynamic_compiler: added todo list, changed salt logic. Some pure
whitespace editing
pass_gen: removed all _64e hashes and replaced with _64c. _64c will
use crypt alphabet
-list=build-info: lists SIMD information
opencl and cuda wrapper defines not present
load_one_format (john.c). Do not lower case format name IF it is a
dynamic= hash. They are case sensative
pass_gen: fixed some errors in constant validation checking. Removed
all md5u() types. Now utf16() must be used instead. It gets same
results, but removes this ambiguity
dynamic_compiler: many fixes and enhancements
dyna_compiler: static added to many functions. Some md5u() stuff was
still left and removed
dyna_compiler: removed or commented out unused or not yet used static
functions. Fixed a couple bugs in ripemd256
dynamic: normalized unicode() -> utf16() for dynamic expression
strings
dynamic: fixed wrong comments. Fixed bug in dyna_85. Fix #1488
dyna-big-crypt: removed spurious comment (not implemented hash)
dynamic_compiler: Starting work to hook in the compiled dyna back into
existing dyna hashes
dyna-compiler. SALT_AS_HEX was not properly building test strings.
f6aef52
dyna-comp: got the padding functions working properly
dynamic: Fixed problem loading test strings (example was dyna-29) if
the array of test strings had any types not loaded, then all the
rest were not being used. Now we properly pack them into the array,
and use them
dyna-comp: fixed 2nd-salt not working
dynamic: bigcrypt-md4 was broken. Fixes #1479
dynamic: got uc() and lc() working properly in both the format and
compiler
dyna-preloads: incorrect comments fixed
dyna-big-crypt: Fixed issues in many types. Wrong length for
md5-overwrite for outputs other than hex. Key clean problems
switching between BE/LE formats (or 32bit to 64 bit). Issues
mentioned in #1463 and #1491
dyna-compiler. Fixed mem leaks and SHA512 was not working (mentioned
in #1463)
dynamic-preloads: comments about flags used
dynamic: Fixed big problem caused by new self-describing thin dynamic
which is a LATE loading format. They get loaded and initialized
AFTER john has called init(), and the working set of data for the
dyna format was mangled. This patch keeps it. Also, looking at
buffer over flows for dyna-39 Asan problems (#1489 #1490)
dyna-compiler: we have only consts from 1 to 8, not 1 to 9 Always
output max key-length, so that we get 110 bytes. hexify constants
(convert : into \x3a)
dyna-compiler. 2 script output issues. Buffer overflow on
convert_old_to_new. #1490
ishex() and other hex stuff from common.c Changed to only work with
even number of characters. #1494
ishex() additional fixes. #1494
dynamic_big_crypt.c: this file has been REMOVED, and is now
autogenerated by ./configure. #1491
dyna-big-crypt: some cosmetic changes to last checkin
dynamic_big_crypt: Fixes build problems
dyna-big-crypt: still build problems on clang and cirleci
dyna-big-crypt: echo some debugging, to try to figure out why they can
not compile
dyna-big-crypt: hopefully this will fix circleCI build. I really do
not know why it can not build/run dynamic_big_crypt_chopper.c file
dyna-big-crypt: last change to try building early, was not building a
new dynamic_big_crypt.c at all
dyna-big-crypt: changes to the .c and .sh to hopefully at least get
Travis functional again
dynamic: added haval256_3 and haval128_4 hash types to dynamic
dynamic: haval added to compiler, and some other bugs fixed
dynamic: modifications to get dynamic-big-crypt.c building properly
even on cross compiled systems.
PHPS2_fmt_plug.c: chmod to 640
2 more source files with wrong mode (set to 640)
dyna-compiler: Now ALL internal formats that can work with
dyna-compiler, DO properly work
dynamic: LARGE change. Added all HAVAL hashes (15 varient) Converted
large hash type linkage code into #define macros (in all but 2 spots
in dynamic.h) Removed deprecated *_base16 flat hash functions
dynamic: some more define macro repetative code reduction for large
hashes
dynamic: haval fully integrated, and fully working. Found numerous
other areas where I could use macros to reduce source size using
macros.
dynamic_big_crypt.c: produce this file in Makefile #1491. Still work
to do. The chopper file will be ported to Perl
dyna-preloads.c quiet 2 unused var warnings. Added new format type:
-format=dynamic-all That type will test all dynamic, including any
disabled dynamic formats
dynamic_big_crypt_chopper: ported to perl. Changed make process some
dynamic-big-crypt-gen: changed how script is executed in makefile.
removed a comment left in from debugging development
dynamic_big_crypt.c generation, changed commenting
Dynamic: Added MD2, Panama and Skein hash algorithms
dynacomptest target added (builds the thin test engine for dynamic
compiler this tool is a decent parser test engine, and I also use it
to create dynamic large hash test strings
dynamic_compiler: added lc($p) and uc($p) syntax
dynamic: added lc() and uc(). Better format label
dyna_compiler format: label string had last byte missing
dyna-compiler: space pad string pasting macros. Added lexical error
handling for mixing p, uc(p) and lc(p) (and u)
Compile fix for nt2/rawmd4 for 1032054 for any non SIMD build
dyna-compiler: Fixed upper case hex hashing in inner functions like
md5(MD5())'
some plugged hash files unplugged. Fix #1525
base64 length for valid usage. Returns -1*len if string not pure
base64. last change had bug in the check for pure string logic
dyna-compiler: added symple function exponentation such as
md5($s.$p)^4 which is md5(md5(md5(md5($s.$p))))
silence a couple warnings
dyna-compiler: set BENCHMARK_LENGTH properly
dynamic_compiler_fmt: was not showing proper label if expression ended
with exponent
pix/mdc2. Fixed benchmark length. Fix #1536
fixed salted dyna hashes listing no salt len. Fix #1535
dynamic salt length. Needed to be negative in this one
configure: target for dynacomptest needed CPPFLAGS
dynamic: bare hashes with but no additional salt work if user in
field 1
sse-intrinsics: recent changes in 9783278 totally broke my VC builds
md4.c: undid some changes in abe2cdb. #1526 references this also
dynamic: fix salt crash problem. Fix #1545
dyna-compiler: handle both and (and , , )
pufferfish: fixed bug in valid. Fix #1546
sapH: fixed bug where there were spaces in the hash. Fix #1547
base64_convert: bug in new return -len for non pure strings. Fix #1551
dynamic: salt buffer read of invalid data. Fix #1554
wow-srp: handle odd length hex and better validation. Fix #1553
openssl-enc: valid() problem. Fix #1550
BE issues (missing johnswap.h) and problems building with HAVE_SHA256
false, but using oSSL
Fixed crash on !ALLOW_UNALIGNED systems. Change required when dyna
flags went from 32 to 64 bit integers
dynamic problems on BE due to recent optimizations
dynamic a couple tweeks for big crypt building
removed link for pwsafe2john from legacy makefile
dynamic problems under BE systems with the set_input2_len32 function
dynamic: had to add set length_32 with clearing back into the command
list, crashes on SSE 64 bit (but not on my AVX2 64 bit??)
dynamic_compiler. magnum fixed $u handling on raw hashes. Fix #1541
dyna-compiler: change prepare to always call expr_normalize
dyna-compiler: rolled back 1c9f842
dyna-compiler: corrected prepare always normalizes hash
dyna-compiler: removed commentted out code
dyna-compiler: prepare adds dyna= signature to all valid raw hashes
dynamic: increased buffer count for MIC
dynamic_types.h: auto scale size of arrays based upon with of
SIMD_COEF
sha3: fixed Asan overflow in input string. Fix #1492. Whenever using
Keccak functions we need to round up to next even by 8 offset
dyna-compiler: some salt_as_hash types were missed
dynamic: big crypt 64 bit SIMD hashes had key cleaning problems. Fix
#1563
pass-gen: dynamic expression was not handling upper case hashes
properly
dynacomptest removed from default target. It still can be made, but
must be explictly requested. (request from @magnum)
dyna-big-crypt: 64 bit SIMD cleaning for more cases
Added -format=dynamic-all to tests for the CI builds
dyna-compiler: Computing max length of input password was not taking
into account hash type, or length of sub hashes.
dyna-compiler: improved test shell. fixed a couple bugs turned up by
the test shell
dyna-compiler documentation. VERY thin, but it is a start
wrong file attributes
dynamic_big_crypt.c in unused was way out of date
dyna-compiler: Track length of both input buffers independantly, to
compute max input length allowed. Also, distinguish between 64bit
SIMD, 32bit SIMD and non-SIMD in length computations, because they
each have a different max length allowed
100% white space cleanup. no code change
dyna-compiler: added a library of pre-built scripts. It is sparse ATM,
but I will be able to add formats which the compiler does not
optimize well
dyna-compiler: added a ,nolib flag to the expression to force NOT
using the lib scripts
dyna-comp: added debug dumping of scripts read in from the compiler
lib
dyna-compiler-test.sh: switched to ksh. Ran on my cygwin before, but
when I tried on ubuntu, it was no go
dyna-compiler: Added some hashes to the optimized lib. Fixed a couple
bugs
dynamic: Added dup flags, Tiger and TIGER
dyna-preloads: Removed some depricated flags
dyna-parser: added TIGER flags, fixed bug in MD5 flags
dyna-compiler: additional optimizations. Speed same or better for
almost all dyna types
dynamic was not building properly unless building SIMD
dyna-compiler: Had some bugs for RIPEMD128 and the HAVAL hashes in
picking right key-hex and salt-hex length
dyna-compiler: pretty print the script in ,debug mode
fixed trailing whitespace problems. #1567
dyna-compiler: Fixed ASan error, when we walked backwards past our
buffer
simd build problems under VC
dyna-comp-test: changed from /bin/ksh to /bin/bash. Use local .pot
file so the logic will work properly
dyna-compiler: added O=# flag to control optimization
dynamic: renamed some flags. Fixed bug where pass to offset other than
32 was failing
dynamic: added a specific comment at each point where we need to edit
the dynamic files when adding a new digest type into the code
added a .editorconfig file (see editorconfig.org). This is just a
start. We may want to change this
.editorconfig. LOL, Saved before I updated Notepad++ with the plugin
and had no trailing lf
dyna-compiler: added first -O2 optimization (post script creation
pinhole optimizations) Currently only 1 optimization, but there will
be more (and the 1 is a pretty good one). Optimization is
MGF_KEYS_INPUT, and will only be done if the script allows it
adjusted file attributes
dyna-compiler: added O=3. This optimization level tries to build a
script in intermixed SIMD. It is not perfect yet, but does work
dyna-comp-test.sh had rm commented out for some debugging
dyna-compiler. Better mixed SIMD code. Parse more complex expressions
properly
dyna-big-hash: added 4 temp vars. had to adjust simd code also. This
is early WIP code. Right now, there is no way to use these vars,
just write to them.
crypt: failing to build right, and coring on legacy build. Fix #1471
Removed all FMT_MAIN_VERSION defines. Fix #1185
stray source got inserted in last update
pkzip/zip: switched internal code to use strtokm and ishexlc. Cleaned
up a bunch of crap because of using unsigned chars all over the
place. Fix #1123
more formats changing mem_calloc_tiny to calloc/free. #1110
more formats changing mem_calloc_tiny to calloc/free. #1110
more formats changing mem_calloc_tiny to calloc/free. Fix #1110
64 bit raw sha formats were not aligned properly for 32 bit builds
x86-sse.S: changes from last core merge which needed to be mirrored
in our jumbo specific code
raw-sha384: fix buffer overwrite. Fix #1577
depricate john.local.conf. added new include syntax and a new
john-local.conf file can be made, both in the $JOHN directory and in
the local directory. #1495
.gitignore updated with john-local.conf found anywhere in the tree
dynamic: MGF_SET_INP2LEN32 was not working since adding the @dynamic=
hash type. Fix #1579
more work deprecating out john.local.conf file. #1495
I had C on the mind, and used wrong include type for john.conf
mssql05: buffer overflow (ASan error) found with jtrts
putty: buffer overwrite. #1582
files would not compile in non-SIMD builds
bug in non-SIMD builds
non-SIMD compile failure
dyna-big-crypt: fix crypt_only code. Fix #1585
trip: would not build in non-SIMD mode" ;
removed last traces of kwallet2john.c
dynamic was failing for any MD5_X2==1 build, i.e. many non-SIMD
added non-SIMD build to Circle-CI. #1598
added non-SIMD build to Circle-CI. #1598 (try 2)
added non-SIMD build to Circle-CI. #1598 (try 3, likely to fail,
since sudo could not run)
added non-SIMD build to Circle-CI. Fix #1598
added non-SIMD build to Circle-CI.
circle-CI. Added 32 bit-any and 32 bit-sse2 build/test
CircleCI. I think the script was not properly exiting upon errors for
many cases
configure: if fmt_externs.h or fmt_registers.h fail, then bail and
reset makefile back to the stub. #1590
changed link for windows pre-build
dynamic: problems building on non LE systems
build on sparc failing. ar -s by itself was not valid. But -s can be
combined with other options (looking at gnu ar)
dynamic: commented out a slow hack, as it appears to no longer be
needed
make process had problems under Solaris
mask.c: Added ?W which is ?w with case switched for all characters.
#1612
mask: updated document to match new behavior
mask: ETA was 1/x the correct time in -fork=x mode
dynamic: base64 input was not properly validating in all cases. Fix
#1625
dynamic: fix problem where salted dyna format requires saltlength to
be set by the designer of the script, but it is not set. Fixes #1611
pass_gen: output error message if a NON supported or mistyped hash
name is tried. Fixes #1639
pass_gen: if testing just 1 format, do not output the ^D message.
config: Could not .include [section] which did not have a colon char,
such as [Options]
HAVE_BIO_NEW: disable some items if that function is not available:
#616
Fixed busted Makefile.in from last commit
Makefile.in: extra space left when moving PROJ stuff out of main
asignment
pseudo_intrinsic.h: failed to build with MSVC after 3884f8f
recovery.c: created config var to protect restore files. Default is
off. Fix #1635
external: The error file was using the global file name, not the file
name for the external object. Fix #1650
dynamic_compiler: bug, first character of constants was not being
picked up
dyna_compiler: fixed core if an empty constant value provided in the
expression
dyna_compiler: Building test strings before validating the hash fits
in our SIMD buffers could cause a crash
loader.c: ldr_in_pot var useful for more than just builds with
HAVE_CRYPT
base64_convert.c: some stack overwrite conditions fixed
has-160: rename the fmt_main structure so it is found after raw-sha1
Merge of raw-sha1 and nsldap, and start of common raw-sha1 code for
GPU
non-thin phpass-md5. This needs LOTS of work, but will compile/run
phass-MD5 thick: Rewrote. Now with SIMD and OMP. #1672
phpass: scrubbed thin format stuff. Will rename fat file when I know
things ae happy.
phpass-MD5: made format label, and output string compatible with older
thin version
dmg2john.c: Removed headers (ossl/evp and hmac, and gladman). These
were not needed, code not in this file
cq: busted cmp_all
added new file, just a header, to easily do hmac-sha1. For removing
gladman code. #1686
hmac_sha1.h: added digest length, so that a shorter than 20 byte
buffer can be used
all gladman code REMOVED. The only thing it was there for was
hmac-sha1. We now have that function of our own making. #1686
Opps, missed this for gladman code removal. It was done just was not
in last git commit
failures on travis? Does not have problems in cygwin, but hopefully
this fixes the problem
hmac_sha1: new code was failing on 32 bit builds
bitcoin: was not building on my sparc box
luks2john: removed oSSL BIO_base64 junk. #1686
Luk2john was not building correctly
Legacy build: luks2john
hmac_sha1: port for VC
openbsd-softraid: removed evp_hmac_sha1, replaced with hmac_sha1
changed name of hmac_sha1.[ch] to hmac_sha.[ch] to make it more
generic and so I can add more sha* hash types
2 files missed in header name change
fixed some warnings in certain builds. Also added wpapsk-opencl to
self_test_full_body function check
hmac_sha: added sha256 and sha512 hmac
encfs: removed oSSL hmac-sha1, replaced with JtR code. #1686 still
have AES to work on to complete
rawSHA1-ng: added new common code, including {SHA} handling
7z, recent changes needed fixed for VC to compile
raw-sha1-linkedin: updated to use common interface and {SHA} signature
into .pot file. #1613
formats: added some commented out code to help find out why a source
would be different
salted-sha1: created common code for use in CPU/GPU code to keep
validation code the same
attributes
dmg: replaced oSSL hmac-sha1 with our own code
.pot: allow multiple .pot files to remove already cracked items. Fix
#1623. Also document john-local.conf and removed references to
john.local.conf
encfs_common: Obviously chainedIV is not being tested. We need to add
a test vector for that type
encfs: right or wrong, this sets the logic back to original. The h[]
array is not preloaded in the ChainedIV now. Not sure if that is
right or wrong way
new single mode rules found
hmac_sha: if a system did not have SHA256/512 in openCL it would fail
to build
single rules: improvements to the recent group of new rules
luks: fixed non-inline processing. Was reading 0 bytes from file. Fix
#1696
single: added configuration for guessed_keys->count extra work.
Default is to do this work (like core). but we can now override it.
#1706
single: added logging of two configuration set items
.pot extra load. Ported to mingw and msvc
MSVC, .pot reload. Changed to a do{}while
agilekeychain-opencl: added test vectors: #1637
added test vectors to bbes10, luks and sha3-512. #1637
pass_gen: simplified the large hash dynamic macros. Will be adding
more soon so wanted it simpler
dynamic: added 4 SHA3 hashes and 2 Keccak hashes
dynamic: Moved disabled dynamic formats over to their own conf file
dyna_compiler: Bug in keccak-512 outer function
pass_gen: added sha3 and keccak dynamic formats, and added these
hashes to the expression parser
pass_gen: added MD2 to the dynamic hash types
dynamic: lowercase for -list=subformats. #1717
created error_msg() function. #1714
fixed usage of pexit to error_msg. Fix #1714
missed file in last commit (pexit to error_msg change)
dyna-compiler: invalid parsing. using *_b64 in function search. Should
have been *_64
dynamic: fixed issues found with fuzzer, base-64 encoding and re-crypt
problems
pre-built dyna-big-crypt.c: base64-recrypt and keccak fixes
dynamic: normalized case of all hash functions. Fix #1717
pass-gen: normalized case of hash names of unused dynamic expression
hashes
mem_align. Fixed globally, and no performance hit, Uses proper define
macro
formspring: force valid to honor the 2 byte salt.
several formats needed format flag bits set
added FMT_SPLIT_UNIFY_CASE
format.c. Calls to free() changed to MEM_FREE(). VC was crashing,
since all allocs are done using the _aligned_malloc, thus the native
free() can not be used
formats: make fmt_case_unify tests happen against every test case
removed deprecated code. This was only there for VC, and now we handle
this differently in memory.[ch] for VC
PHPS/PHPS2: fixed to properly unify case in split
formats.c: Added additional logic in the unify-case function which
will be required to properly handle compiled dynamics
formats.c: eliminate false positive failure to unify case happening in
mysql
dyna-compiler: for now, disable FMT_SPLIT_CASE. In the end, this
format may need to be setup to handle split_case, but until I figure
it out, this allows it to pass -test-full
nuked clan (nk) input hash case bug (#1472)
fixed split-case bugs. Some for #1742
dynamic_big_crypt: better handle larger SIMD alignment issues
fixed split-case bugs. Some for #1742
split case bugs. #1742. added upcase hex to common
revert 56d5b15
common.c: Added some common defines for types. Added a length variant
to the ishex*() functions. Added u and l variants to hexlen
IPB2, fixed bug. We can not treat itoa16 as a string. Fixes #1766
Start using the common defines for HEXCHARS, base-64, etc in common.h
dynamic: removed deprecated, unused internal function. Fix #1768
recent calloc change (9e100b4) boned VC builds
fixed new common hexlen function. DMD5 format, properly ignore case.
#1742
dynamic: sph_ripemd spelling error
krb: adjusted for case/split issues
added a --show=invalid command. #1773
some tweaks to --show=invalid and dox.
dynamic_IS_VALID now preloads on first call. subsquent calls are
instantaneous
dynamic loading. Improved the isValid function to FULLY cache, and
only do the real work 1 time
enabled display of count of valid and invalid hashes for a
--show:invalid usage
several formats: corrected many split/case issues. #1742
numerous formats. Fix salt-case bugs. #1742
rawsha512-ng. New problems on my VC builds. THis code moved into
psuedo-intrinsics, but was left in this file also.
configure: changed != xno to = xyes for some display results (crypt,
mmap)
many formats. Fixes for split-case bug. #1742
many formats: fixed salt-case bug. #1742
enhanced check for FMT_SPLIT_CASE problems. There still are formats
left to be found but this patch finds a large class that can be
found automatically
split-case bug. Last push had issues in opencl-o5logon format
simd-intrinsics: removed non-portable debugging crap
fixed numerous compiler warnings from recent split-case improvments.
#1785
memory leaks fixed in new -test-full code (dyna salts)
mssql-* fixed split/case bugs. These changes must have been missed
with committing all the files last week
split-case bugs: The last of the known bugs are fixed. Also 2 new
methods added for finding these, but they still need more work to
get right
travis-CI and CircleCI. Changed from -test to -test-full. Not 100%
sure this was done right, we will see
-test-full fixed memory leak in salt for a test
some -test-full missed on circle. Add a john-local.conf to have no
formats disabled
some changes in handling of Disabled:Formats, to make easier better CI
testing
problems with travis.yml, not sure what the problem is, possibly echo
can not be used ???
jumbo.h: we had a VERY busted header wrapper. OMG, failure to set
the define, lol. I think this was my F-up
add jumbo magic define, so we KNOW when code is being built jumbo or
not. This allows better merging of john master code, whichc we do
not control
merged -test and -test-full into 1 function. Removed flag for
-test-full. It was not needed. -test-full is now a required numeric
param that tells the level to test. formats.c reworked, to make a
simpler merge from master branch, and it documents differences
between master branch and bleeding. #1792 and #1795
jumbo.h. Recent proper header wrapping was causing problems with VC
builds
4th split-case bug test, full generic. But has some bugs and
whitelisting to do. Only runs at -test-full=1 level
rar (fixed split-case bug). bcrypt, white-listed split-case check 4,
#1742
EPI, chap, openssl-enc. split-case problems. #1742
wbb3, putty, lotus5-opencl. split-case problems. #1742
revert changes from 399217f
last of the split-case bugs. Fix #1742
split-case test-4 is now to be run at level 0
fixes and code clean up for inline vs _inline for _MSC_VER builds
formats.c: memory leak in -test-full mode, found with memdbg
foramts.c: fixed asan read problem, and memory leak for -test-full
mode
keystore. remove memdbg warning by switching to tiny_memory
allocation
asn1 changed mode to 644
pem: remove salt clean warning.
asn1_plug: include required for VC build
PEM: core crash found by fake CI on my sparc system
rawSHA1. Fixed BE problems. #1861
nt, raw-md5, raw-md4: Fixed BE problems. #1861
nt: BE problem. #1861
Keccak: BE problems: #1861
dyna-big-crypt: put SIMD wrapper around a couple functions. #1874
Azure AD added to pass_gen.pl
AzureAD format added. (CPU only)
AzureAD execute permissions
Azure AD: removed FMT_OMP_BAD. this one is not bad
luks: BE issue. #1861
pass_gen.pl: start to normalize the -loops param
rollback changes from da7d26a
pass_gen.pl normalized adjustable loop counts for all formats, using
-loop= value
pass_gen.pl: -loops= default for django was wrong. Changed it to 10k
pass_gen. Help screen for dynamic was not always being displayed
dyna-compiler. Auto-Escape constants with colon char in them
dyna-compiler. Handle ) char in constant strings
dyna-compiler. Allow @ char in constants
bcrypt performancce improvement on AVX/AVX2 systems. Fix #1199
john.c: correctly handle * char for dynamic= format: Code by
@magnumripper. #1747
add config var to disable runtime-CPUID checks
revert john.c changes to CPU_detect code location
reverted other CPUID-ignore code. Left as commented out
revert ignore-CPUID logic
asa-md5: handle salts from 1 to 4 bytes, not fixed at only 4. Fix
#1887
john.conf: removed left over traces of the IgnoreCPUID stuff
dynamic-self describing documetation update
hmac-SHA256: New larger salt logic was busted for salts of varied
sizes
hmac-SHA256: changed the SIMD salt structure
added onlyhex salt type for dynamic. This will use salt dictionary
with only low case hex
dynamic_generic_expressions: Got working with re-gen salts logic.
#1463
makefile.in: memdbg.o this one should not have been added
hmac-SHA256: Added JWT hashes to format. #1904
hmac-SHA256: a little more safety in the JWT convert logic.
hmac-SHA256: still more validation checking in split.
rawsha1-linkedin: binary function not declared static
vdi added to pass_gen.pl (still have 128 bit to do)
aes-xts: moved to its own file, to make it easier to use by multiple
formats
wrong create bits
VirtualBox .VDI encrypted disk format
VDI: added aes-128-xts code and vectors
VDI: compile problems on non SIMD systems.
vdi2john: new conversion program for Virtualbox encrypted disks
made AES-XTS into more generic function. Now there are params for
128/256 bit AES, and a param to do decryption vs encryption
VDI: Ported properly to BE systems.
base64: hex2raw conversion was null terminating???. Caused buffer
overflows. Raw data should never had this done to it.
verbose message removed \n char. Fixes #1958
dynamic (many formats), fixed problems with OMP runs
some porting issues for MSVC
dynamic: Fixed threading problem.
dyna: fixed other OMP failures
revert a7af331
fix build problem for CircleCI (mingw in general) after 0e235c7
last patch would not compile. malloc vs mem_all0c_tiny use different
params :(
jumbo.c: removed memory.o dependancies
Many formats. Removed undefined shifting of signed ints. #1957
postgres: failure to load with user names of variable lengths. Problem
found with Test Suite
postgres. Longer user name added to self test vectors. Without the
salt cleaning, the ST will fail
john.c: avoid loading test db in -skip-self-test mode. Fix #1967
bt.c: switched setitimer to getitimer. Fix #1966
pass_gen.pl. Added QNX hashes
qnx: cpu, non-SIMD format. #1970
change mode bits
qnx: added fmt_split_case, founnd by the CI
qnx: moved split to common code
qnx: removed split, and valid() fail hashes with upper case
qnx. Bug in valid, and added max length sha512 hash that works
currently
sha512: added QNX hashing bug to generic sha512 source
Fixed numerous warnings on my sparc system. Possible uninitialized,
missing headers, etc
qnx: improved speed of sha512 (for 128%pwlen==0 passwords). Also fixed
memory leaks in get_salt/valid
base64_convert: major overhaul. Now buffers adhere to max size
requirements, INCLUDING null padding. NO extra bytes needed
opencl_rawmd5: ASAN overflow fix. Fixes #1979
pass_gen.pl Added special code to get SHA512-qnx hashes to work. The
pod is in unused, and the code is currently commented out within
pass_gen.pl
Found out a local perl mod does not need execute bit. Thought it did
pass_gen.pl: fixed bug in get_salt() where a charset would not be used
unless there were 3 args. Changed qnx hashes to use get_salt with
hex-low
.editorconfig ending \n missing from the new .pm file
axcrypt: fixed asan overread bug. Fix #1987
dynamic: added McAfee master unlock password
dynanmic-expressions. Handle NULL bytes in constants. Fix #1985
fuzz: cygwin port problems fixed
fuzz: remove files upon successful fuzzing test. #1969
bench: make -test=0 deterministic in the number of times things are
run
bench: commented out debugging code was not right
fuzz: rolled back file removal code. That change was likely very wrong
thing to do
legacy generic build fixed for usage with new test_db logic
config: emit warning when a List.*** section is replaced with another.
#1988
bench.c: generic build. New ldr_* functions could not be static
stribog: #warning is not portable
config.c: warn for multiple List.* sections if -verb is > 3
gost3411-2012-sse41.h: use a john header, so systems without
inttypes.h work
stribog: warn for __GNUC__ and _MSC_VER
hmac-sha384 and 512. Salt not aligned properly. Fix #2000
dynamic-compiler.c: ASAN error. #2004
dynamic-compiler.c: Possible buffer overflow cases. #2004
qnx-sha512. avoid div by 0
raw-sha1-axcrypt: handle raw 32 byte hex hashes
gpu_sensors.h: made adjusments to compile under cygwin (win32)
hmac-SHA*: Salt alignment was wrong
formats: ST failures. provide additional help when -verb>3 is used
(failure hash, etc)
formats: bugs in new printf strings for debugging
QNX-sha512. Figured out some issues, and now all hashes should match
the buggy QNX implementation
sha2, remove execute bit
formats: better self test failure verbage under higher verbosity
settings
pass_gen: added SXC hash creation
raw-sha: common code was WAY too promiscuous in prepare/split
converting any 40 byte line into an SHA1 hash
pass_gen.pl: added VNC protocol
vnc: moved key loading into get_key. Use ECB instead of CBC mode.
About 20% improvement in speed
vtp: improved multi-salt speed tremendously
vtp: attempt to get OMP working on the CIs
VTP: Fixed OMP bug also improved speed some by not double buffer
copying
pass_gen: added VTP hash
cloudkeychain. Fixed issues found with jtrts
pass_gen: added cloudkeychain
pbkdf2_hmac_sha256.h: muted compiler warning
AzureAD: moved MD4 code into OMP section of format
wowsrp: cache first SHA1 for multi-salts
wowsrp: rolled back 3a94817. It was busted even though ST passed
hsrp: doubled speed (or slightly better)
racf: simplify encryption. Speeds it up a bit
racf: improved multi-salt speeds by caching schedule setup. #2023
SybaseASE: improved multi-salt speed about 3.5x. #2023
wbb3: improved multi-salt speed some (about 20%)
dynamic: large update. Added ability to crypt to an offset in the
buffer. Fixed several bugs
mask: problems expanding ?d inside groups. #2029
mask: replacement skipping in groups had to handle escaped [ and ]
mask: handle non set custom placeholders
mask: abort on undefined placeholders, and abort on empty groups.
#2034
mask: proper abort logic
unicode: expose utf8_to_utf16_be to the world
keystore: cache password work. Setting up for SIMD conversion
keystore: added SIMD logic
keystore: fixed ASAN error, and hopefully ST failures on CIs
keystore: fix for overwrite, hopefully fixes CIs
keystore: disable SIMD until I can figure this out
formats: change to sprintf did not match params. Warning came from
circle-CI build only?
AxCrypt-Auditing-HOWTO.md: removed UC2 and DOS eol problems. Fix #2041
configure: enable a couple of compiler warnings which were not being
enabled
keystore: removed warning, changed cmp_all logic to do the real work
for SIMD runs
remove clang warnings from john.c and cracker.c. Created new itoa
functions
pass_gen: added keystore (not 100% sure it is correct, but I think so)
hopefully fix errors on MinGW build for CircleCI
krb5tgs: mute compiler warning
pass_gen.pl: made a tweak on keystore, to make it mimic ITW hashes
better
keystore: got SIMD code corrected. buffer overwrites
keystore: hopefully working properly with PARA_SHA1 > 1
keystore. adjusted copywrite
ax-crypt: fixed ASAN overread. Fix #2042
pass_gen.pl: still a nit in keystore
editorconfig: set utf-8 to be default encoding for all edited files
gitignore. Added *.tmp to files to be ignored
keystore-opencl: Fixed bug for binary passwords. Improved performance
about 2.5x. Created common code to share with CPU version
bug in bench.c. When testing multi-salts, the salts were NOT being
allocated with approved alignment
bench.c: last checking had problems. Now simply using mem_alloc_tiny
remove -x bit from file
bench: reusing mem_alloc_aligned. Changed memory.c to handle
alignments < sizeof(void*)
ssh: mem leak. #1247
dyna_salt: The init function now returns the format that was linked
in, so we could undo if we need to
ssh: removed problem with dyna_salt leaking. Changed loader.c to call
dyna_salt_init at an earlier time (prior to calling valid)
memdbg.c: added code (commented out) in checkShapShot_possible_exit()
so that all memory in the list, even freed is shown
zip: emit 1 time warning when older hash signature seen. Fix #2061
logging: added optional date signature to start of log lines (default
is NO date signature)
memdbg: would not build under Makefile.legacy
logger: give option to log datestamp in UTC
hmacMD5/SHA256. Found bug in computation of bit count. Still does not
fix all problems
hmac-MD5/SHA256. Same bug as prior, but still does not fix things
hmac-md5: Possibly fixed.
hmac-SHA256: same corrects as provided by hmac-md5
pass_gen: hmac-md5 and hmac-sha256 now generate random length < 184
byte salts
hmac-md5 and sha256: normalized buffer defines based around PAD_SIZE
(and PAD_SIZE_W for when used as offset into ARCHWORD_32 arrays)
pass_gen: made long salts for hmac-sha224, 384 and 512
hmac_*: got long salts all working properly. Changed code so each
format is much more similar to all others. We may merge files at
some time
hmac-SHA224/256: Merged into a single format file
hmacsha224 file delete was missed
hmac-SHA384/512: merged into a single file. Some small changes to
hmac-SHA256 also
hmac-sha384: bug in non-SIMD logic.
logger: place fork# after date. Also added date logging when using
--log-stderr command line switch
memory.c: Failure allocating aligned 0 byte. Showed up on sparc
old_office: fixed memory leaks
pbkdf2_hmac_md5 and md4: These were not working on BE system. Now
they do
removed BE swapping from pbkdf2 code. Greatly simplified BE stuff
last BE change missed a few files
dyna-compiler: fixed core when using constant data under certain
situations. Fix #2067
zip: was not processing zip files with external linked files. Fixes
#2063
opencl-zip: same bug as was in the CPU version
XSHA512: stop strcpy of data past end of buffer. #2065
memory.c: return null on 0 size, and added some asserts
memory.c: cosmetic changes
john.c: In cygwin, when using -fork, the tty is screwed upon exit (no
echo). This simply fixes it for cygwin builds
cygwin: proper fix for screwed TTY after -fork mode run
SHA512 formats (cpu/opencl/cuda). Use more of the common code in
rawSHA512_common_plug.c
zip/openclzip: created common code for tests, valid and binary
phpass. Made common code for CPU, Cuda and OpenCL. #978
phpass: common code failed on non-SIMD systems
pass_gen.pl: added pbkdf2-hmac-md[45] hashes
pbkdf2-hmac-md4: common code for CPU and OpenCL. Fixed bug in opencl
and increased max salt length to 115 bytes for both CPU and GPU code
exe bits set, and cleared
opencl-pbkdf2-md4 kernel simplify code a bit
pbkdf2-hmac-md5: common code for CPU and OpenCL. #978. Saltlength set
to 115 bytes
pass_gen: increased max salt length possible for other pbkdf2-hmac
formats
editorconfig: added .cl to normal handled text file group
pbkdf2-hmac-md[45] opencl kernels. Reworked code to avoid 2nd limb
array. When adding long salt to sha1, I was not able to get it
working until I removed that 2nd array
sha1-crypt: added 115 byte max salt logic
pbkdf2-hmac-sha1: made common code for CPU/GPU. Extended salt length
to 115 bytes
pass_gen: pbkdf2_hmac_sha256 was not putting out longer length salts
properly
pbkdf2-hmac-sha256: created common code between CPU/GPU #978. Extended
salt max length to 115
sha1crypt: reverted max salt length to 64 bytes. pbkdf1-hmac-sha1
still allows 115 byte salt, this format simply validates 64 byte max
salt length
some tweaks missed on common code for pbkdf2-sha1 and sha256
pbkdf2-sha512: common code added for CPU/GPU formats. #978
mscash/mscash2. Common code changes, cuda/openCL/cpu. #978
gpg: common code created for GPU/CPU formats. A LOT of common code.
Still probably more to do
recent common code changes. Missed memdbg.h include in some files
gpg: improved performance on multi-hash for sha1/ripemd160 by
properly aligning data in 64 byte blocks. There was about a 10-20%
improvment due to stopping of buffer copying. However, this change
does not appear on the -test=x line, since none of 2 test hashes use
multi-hash length. For sha256 and sha512, it should never end up in
multi-hash mode, unless larger keys are needed
gpg/gpg-opencl. Improved sharing. Added all formats to openCL format
(reverting to CPU code). Other improvements and bug fixes
SHA512 common code. Setting wrong alignment in binary. Only affected
32 bit builds
gpg-opencl: issue warning when running and there are hashes which
would use CPU code. Added some comments
opencl SHA1 CTX model. Code moved from gpg kernel code, into a header
file so it can be used by other kernels
wrong exec bit set
gpg-opencl. Kernel code now handles > 16 byte keys. Also updated CPU
code to better match GPU code for this function
added a .git pre-commit hook file. Everyone could use this local hook,
but it has to be linked from JtR root to .git/hooks/pre-commit
before it will do anything
pre-commit hook. Edit was missed
pre-commit hook. Added additional txt file checks
pre-commit. Was getting exit 1 on certain conditions
cleaned up a couple of file problems, mode and DOS lines
pbkdf2-hmac-sha2.h Missed adding git commit -m "pbkdf2-hmac-sha2.h
Missed adding defined(OPENCL_FORMAT) in the opencl-pbkdf2-common.c
file. This was triggering warning about static code not being used.
Fixes #2070
pre-commit. Slight changes again.
pass_gen. removed -vector option, added -outformat=s option. options
can be normal, raw, user, vector. Since we have a common output
function, this was easygit add ../../run/pass_gen.pl !
pass_gen. updated usage screen (names now format to width of console).
If -vector mode, then there must be only ONE hash listed
cuda builds: include johnswap.h. Fix #2076
typo in cuda_cryptmd5_fmt_plug.c
v1 changes for external-hybrid mode
recovery. File locking problems in cygwin worked around. #2068
external:hybrid documentation
fixed problems in external_hybrid_example script
external.c: fixed a bug in hybrid external mode. Now working
some edits to doc
external-hybrid. Changed some variables, and fixed bug in fix_state
for hybrid runs
restore testing format added.
restore-tester, got OMP working for OMP_NUM_THREADS > 8
restore-tester format. A fake format that can be used to help fix
issues in restore, or pause, making sure john misses no candidates,
and does not rerun words
hybrid-external. Handle bug found by magnum, where a filter failure
was also aborting the entire crack loop
recovery. Hack fix for cygwin, now done for all runs-over-win32
systems
external-hybrid. Got restore working 100% correctly
external-hybrid. Added logic (I hope) for utf32 processing
external-hybrid. Changes for utf32 were not right
restore_tester format. Proper porting to VC. 20ms delay for each
candidate check
restore_tester format. Proper porting to VC. 20ms delay for each
candidate check
removed this file from the fork
external-hybrid. Corrected a couple issues pointed out in #2027
wordlist: Fixed restore problem if wordlist was fully preloaded in
memory. #2082
wordlist: restore. Fixed issues between restoring mem_map and
non-mem_map builds. #2082
unused/restore_tester format. Added multi-salt format
salted hashes, proper restore for the salt, #2082
Revert "salted hashes, proper restore for the salt, #2082"
multi-salt save-restore logic. Code added to validate salts are
exactly the same upon recover as they were when the .rec file was
saved
deterministic salt order within salt sorts
dynamic salt sorting. Wrong logic before
restore_tester format: added 3rd type, salted-hashed. Also casecmp in
valid, so that multiple hashes can have same salt
salt-resume logic, using deterministic sort order salts and unique
hash salt detection
dynamic md5 salt generation was using wrong data
loader: removed comment about experimental sorting, since now we
always sort
restore-tester format: moved to TestSuite project
file added to gitignore, and .pre-commit.sh hook was incorrectly
flagging a deleted file as not having an EOF
loader. Removed sort by salt count, so that salt sorting is
deterministic
base64_convert. Problems in base64 to base64 convert if last block was
not full length. Fixes #2088
pass_gen.pl: added racf
rar5-opencl. Recent common code changes broke this format. #2093
pbkdf2-hmac-sha1: small issues not properly common code converted.
common-opencl: split() was not being called during auto-tune running.
Caused common code pbkdf2-sha1 to core
memdbg: removed tiny logic from realloc. Removed some strange code
from header
memdbg: reworked MEMDBG_realloc. Fixed #2062
wpapsk: sort salts deterministically
oldoffice: assure full salt is used in salt-sorting
oldoffice: removed redundant calls to dyna_salt_init within
salt_compare
korelogic.conf: updated Rules:ReplaceSpecial2Special go handle more
characters. Fixed some bugs. Then replaced entire rule list with 2
rules
korelogic.conf: merged more, using the rules PP
external: restore problems. #2099
external-hybrid restore: The ext-v1 record did not have proper \n
ending the record
recovery.c: changes writing .rec file for cygwin/mingw/msvc. May
relate to #1949
recovery.c. Improper mingw define used
common.h / common-opencl.h Moved the get_power_of_two macro into
common.h. Fix #2091
command line rules. Fix #2105
elite external-hybrid mode added to john.conf
updated extern:leet script.
external:case mangler (hybrid external) added to john.conf
extern-leet: Removed some conversions which were pretty rare in real
world test cracking
external-hybrid restore. Always chomp the line, not just on success
external-hybrid resume was not right
cracker.c: multi-salt restore records were often being written for
non-salted hashes
rexgen: case alphabets. Renamed to cased, so it works, now that rexgen
has removed the case option internally
single: fixed memory leak if externs are used
regex: port issues for VC
leet external-hybrid. Some additional max candidate checks
john.conf: external-leet, more adjustment to total work
dynamic: improved performance for single mode work. Does use more
memory, but its at least 2x faster.
mask.c: vc and mingw can not handle %hhu
Changes required to incorporate PasswordPro/HashCat rules
rules: rules_count was not counting rules properly, nor doing dupe
removal in HC mode
Rules Hashcat. Added documentation
exe bit removal
dynamic: allow valid() to not fail on salts with embedded null bytes
(which can not have the $HEX$ removed from the salt string)
hash-cat-rules. Add some warnings about the git add
doc/RULES-HashCat HashCat ON logic
symlink: remove warnings about undefined execv function
new hashcat rules, changed HashCat into hashcat (text strings users
will see)
external. Allow enumeration of external hybrid words
config: recent change leaving trailing space on read lines impacted
parameters. They were not being found properly
rules: Changed HashCat into hashcat.
rules: hashcat logic. Proper handling of code in rules_reject. Only
skips the - reject code, and does all other
Rules: Added ONM which omits a range of characters
rules: added eC and e?C which are extended title case rule
make debug was failing to link (missing assert)
rule x rule stacking (perl script). Also john config processing in
perl module. #2122
jtrconf.pm: removed experimental warning, by dereferencing the arrays
jtr_rulez.pm: Moved this common module here, was in test. I plan on
using this for other john utils, so wanted it in a general location
jtrconf.pm: needed hard copy, or we were pulling back the reference
later
perl config code, better default basepath
rulestack perl script. Improves finding the other modules
RULES-hashcat. pure white space change
sha2.h: updated for older oSSL, so that include of just sha2.h was
enough. gpg_common and other code just includes that header
added HC p command. Added Onm command Fixed numerous bugs in new HC
type rules. Fixed E and added 'e' command. Handle spaces properly
interspersed in rules as valid character data.
unicode.c Would not compile if UNICODE_NO_OPTIONS was used
rules.c: removed undocumented McXyz handling in c and C rule
operations
rules.c McXyy change for c was not correctly done
config: in HC mode, we were NOT processing [ leading rules. We were
silently ignoring them but not using them
dynamic big crypt: Wrong years in copywrite notice
POC for generic code to handle VERY LARGE non-hash types
keepass was crashing after we set LINE_BUFFER_SIZE to small value.
This is a hack fix, but gets things working for now
super long hashes now truncated in the .pot file
korelogic 1 line leet line had some issues
gost: sse4.1. changed code so it builds in 32 bit mode with or
without -O2
potcheck.pl. Right now, just a skeleton script. #2161
potcheck.pl: -validate and -longline_fix should be working now
loader: increased file line buffer, to handle max sized value, AND the
password
potcheck.pl: line buffer should have been 1k, not 4. Also, lines are
trimmed to 256 bytes, not max size, BUT max size is used for
-validate switch
potcheck.pl. Constant changes does at request of Magnum. This should
now be done for -long and -validate switches
loader.c: revert commit 7856266
base64 (and common) changed int into size_t where needed
configure: added potcheck.pl logic to configure script. It will abort
if there are any LONG lines in ../run/john.pot
base64_convert.[ch] More work on size_t. commmon.[ch] reverted
base64: changed int into size_t
fuzz.c: returned buffer size to 0x30000. Fix #2166
fuzz.c: permissions
rar2john. Fix for 31-32 bit size, and FIXME comment about getting 64
bit length buffers
rar2john: Handle > 32 bit lengths. Fix #2170
added .log message directive code into rules scripts. #2140
common.ch: removed unused base64 functions. From comment in #2132
added .log processing to prince and single modes
radius2john better handling of very long salts
radius2john.pl: long salt was WRONG dynamic type
radius large salt documented
base64_convert.c: pure white space changes.
dynamic.conf: added mongodb, salted, MiTM
pkcs12: added SIMD logic. #2176
pfx: added SIMD sha256. improved validation. Added hmac-algo to
formats cost
pfx-ng. Hopefully fixed problems with SIMD crashes for SHA256
pfx-ng. disable SIMD for SHA256 until the problem is found
palshop: improved performance
pfx-ng: added SIMD for sha512 and corrected SIMD for sha256
scam: added SIMD code. Fix #2186
bks: non-simd was failing
rar2john: size_t can not be used for 32 bit builds. Must be a 64 bit
value
scram: adjusted header include order, so that we can turn off SIMD for
speed testing
pkcs12: would not build properly on non-SIMD systems (sparc)
XSHA512: was still returning binary align warning for sparc-32. Now
no warning returned
rawSHA512_common: quiet silly compiler warning
o5logon: fixed crash on requires alignment systems
phpass: fixed core on requires align CPU
pbkdf2-hmac-sha1. Fixed failure on BE systems
gost.h: some builds were having macro redefine problems for
bswap_32/64 macros. Now gost.h uses johnswap.h macros instead of
trying to recreate them
.pot hash trim. Added $ for any format with binary_size>0. #2188
pfx_ng can ONLY handle 30 byte passwords, at this time
pfxng. Some debugging code slipped in on last commit
krb5tgs: fixed already cracked hash removal logic. Fix #2188
hmac-sha: added hmac-sha224 and hmac-sha384 to the easy jtr interface
pfx-ng: added non-simd sha224 and sha384
pfx-ng: bumped PLAINTEXT_LENGTH to 48, which seems to be the max that
openssl can generate
SSHA512: Fixed ASAN buffer overflow bug
zipmonster format: added SIMD logic. Could still be improved some
zipmonster: fixed crash in some SIMD builds
radius changes in dynamic conf, due to very large salt changes
zipmonster: 25% improvement in speed for SIMD code
zipmonster: another 25% improvement in speed for SIMD code
zipmonster: small improvements in ossl, a bit in SIMD, and removed
original commented out SIMD hex-upper code
zipmonster: some changes when I was trying to track down the SIMD
core problem was left in. Now removed
testing code was inadvertantly pushed
chopped hash .pot support added to certain questionable formats. #2117
.pot chopped file valid() processing moved into common code in
loader.c
additional work normalizing FORMAT_TAG type defines
Additional normalization of FORMAT_TAG defines. #2196
Additional normalization of FORMAT_TAG defines. #2196
Additional normalization of FORMAT_TAG defines. #2196
Additional normalization of FORMAT_TAG defines. #2196
Bugs in last normalization push. #2196
Additional normalization of FORMAT_TAG defines. #2196
Additional normalization of FORMAT_TAG defines. #2196 (all completed)
loader.c: auto-pot chop logic. One condition was failing. Needed
shorter length
regex 1.4 integration, and full restore logic
rar2john: improved performance quite a bit for large rar files
line endings
common: change hexlen*() functions to all be size_t
rpp: reset refs, so that rpp can be run more than 1 time (needed for
rulez-toolz projects
improved XSHA512. Part of changes made tracking down core on sparc
systems
cisco-asa: added a short salt
wrong format tag length used
atoll for systems without atoll. #2220
Makefile.in: added jumbo.o to genmkvpwd for non-atoll systems. #2220
pass_gen.pl: added zipmonster, asamd5, mongodb_scram, has160, fgt,
iwork, palshop, snefru hashes
pass_gen: added mdc2, efs and keyring hashes
memory.c: fixed crash in argon in memdbg mode. #2226
argon: some changes to build properly on certain systems
memdbg.h: fix build problems for mingw on circleCI
loader changes needed for -show to work properly. chopped pot issues,
and chopped pot with BIN_HASH data also.
mscash: wrong length used for signature check. #2225
off by one error in strnzcpyn() found with jtrts.pl, when adding
palshop and eigrp hashes
radmin: avoid buffer overread (asan) bug
argon2: merged 2 formats into 1. Put tags on extern functions, and
made many others static. #2229
argon2i: removed the older format file
oracle-9i sniffed hash (new format)
oracle9i. This one is actually CASE SENSITVEgit add
oracle9i_fmt_plug.c even though oracle is not. This is due to the
password being encrypted. I am not 100% sure it is case sensative,
OR if the encryption is alway the lc of the password. We need more
research on this onegit add oracle9i_fmt_plug.c
oracle9i-sniffed. Used asan to find some bugs causing CIs to fail in
-test-full. Did not core on cygwin
oracle9i: fixed bus error on Sparc. Hopefully this will fix clang
crash on TravisCI
oracle9i: removed const from iv (causing core on clang build), and
simplified sha1 key building function
oracle9i (o3logon). Added OMP, fixed overflow in prepare. Changed
format label to 03logon
oracle format: Some straggler FORMAT_TAG normalization
whirlpool. Fixed buffer write-overflow error in split. (found with
ASAN) #2237
whirlpool. Improved valid, to keep certain non whirlpool hashes from
passing. #2237
hexlen?() functions, added a return if the string was solid hex or
not, for validations
oldoffice: remove warnings caused by hexlen change
o3logon: change buffer size to right size, and added SHA1 to algorithm
name
hexlen?() functions had off by 1 bug detecting extra bytes.
pem: bug in valid, which recent changes to hexlen function made show
up
pem: re-add proper validation
validation enhanced on several formats (some cores and ASAN errors).
#2239
validation enhanced salted-sha1. #2239
validation overflows and cores. keepass and o3login. #2239
formats.c --test-full=0 was too agressive on salt-unifies. It was
even calling the code for formats with salt being fmt_salt_default.
That is now fixed
dynamic: added new dynamic string type: utf16-be with function
DynamicFunc__setmode_unicodeBE
configure: fail-abort if --enable-foobar but foobar can not be
loaded/used/found. #2241
salted-sha1 ASAN overflow. #2246
winzip: better valid, and split to canonize the magic field
salted_sha1: better validation, and fixed ASAN problems (salt buffer
overwrite)
wbb3: fixed overflow error caused by sub par valid function
wbb3: valid was not quite right. The salt is used as is, and not
converted back to raw from hex
base64_convert.h: adjusted header comment about negative return, since
all returns are not size_t so the negative logic is no more
salted-sha1: More work to fix overflows. #2246
winzip: common split code for both opencl and CPU. #2245
dynamic_1590 created. This added to handle IBM AS/400 salted sha1
hashes
keepass: improved valid, to avoid buffer overwrite. #2249
pass_gen.pl changed episerver to use ../run/pass_gen.pl[1] (the
unicode ready buffer). Added eigrp hash
keepass: revert valid change, to get CIs working again
keepass: removed non-inline file code within valid. It was causing
crash problems. #2249
as400-ssha1 thin dynamic format
as400-sha1: fixed compile warnings, and warning about not fully
cleaning the binary buffer
local changes should not have been committed
pass_gen.pl: commit 4223342 was incomplete and broke the usage page
unrarcmd: we add num items, but were only clearing 1. If more than 1
item added, undefined data would be present
pass_gen: Removed Basename lib requirement
pass_gen.pl: Removed Term::ReadKey as a required module to print the
usage screen. If found it will be used, but the script does not carp
if the module is not found. #2251
pass_gen: removed String::CRC32 and wrote my own pp crc32 function.
#2251
fuzz: Some constants changed to sizeof. Output a completed after each
format test during --fuzz run
o3logon: adjusted code to make --fuzz work with this format
o3logon: reworked changes to valid for fuzzing, as per @magnumripper
suggestions
o3logon: fixed bug in last commit
mdc2 is not always available. It now has a 1 time check
hdaa: patched to fix ASAN read error in new short format
SRP formats had resource leaks for non GMP builds
HDAA: better fix for memory overread ASAN for the new short hashes
recent changes with work around for invalid UTF-8 during valid,
changed to not error(), but to print a warning and ignore the
hashes. error() call in valid is a bad-thing (tm) to do, especially
exiting when no format specified, when jtr is searching for proper
format to match the hash
Corrected if condition boolean logic when fuzzing
HDAA: added split to canonize the shorter hashes (trailing or no
trailing $ char
wbb3: created a dynamic format compatible with wbb3. Can be much
faster. No OMP (usually), but good with fork
dynamic: removed speed hit to several formats caused by changes needed
for dynamic_1592. Added a new flag and only dyna_1592 uses it at
this time, so it is the only format that takes the hit
legacy generic build was not working
prince: changes needed to match john.c, so that legacy builds work
pass_gen: removed requirement of Digest::MD5. Handle interface change
introduced in v2.00 for Crypt::ECB. Fix #2266
gpg2john: allow multi-part message blobs (i.e. large file support).
#2109 #2218
gpg2john: each file processed gets its own large enough hash buffer
allocated. Prior code could crash on a multiple files run
gpg: full large file support. #2109 #2218
gpg: bugs found in -test-full=0 using ASAN
pass_gen: added as400-ssha1 and dynamic_1590
logger. Recent changes were not VC compatible
dynamic.conf. A tweak to 1598 and comments.
dynamic: work to improve utf8 handling
logger: Still issues with VC
gpg2john: buffer overflows fixed. gp fixed if bad file name given.
changed code so both -d and -S can be used on same run
Handle almost all of GPG. Still missing twofish hash, but added:
SHA224/384 hashes, crypts: Camellia-128,192,256
bench.c: message buffer not large enough. Bug when more gpg crypt
types added
gpg: added twofish. Now gpg format (cpu) handles ALL types
gpg: after testing all type and all max bit sizes, these sizes are
adequate for the big num variables to avoid overflow
bench: better fix for cost message buffer overflows
twofish: fixed new cfb mode to not output more bytes than requested
gpg2john: better error handling. #2255
gpg2john: fix hang problem in bz2 code. #2255
gpg2john: added warn_exit calls when truncated compressed files are
seen
misc.c: fixed a speelling error in comment (pure no code change)
rules: now multiple rulesets can be specified on command line
pbkdf2-hmac-sha1: fix ASAN buffer read overflow
TravisCI: try to hook in libASAN into one of the build steps
TravisCI: try to hook in libASAN into one of the build steps, take 2
Travis. Trying to find the right package to install
rpp.c: rule dupe removal code was broken for new multi rule list
handling
as400-ssha, commenting the hash format properly
o3logon: a couple functions needed static, and max buffer length was
too small
New format: oracle 10g sniffed protocol
oracle: added OMP support
oracle: ASAN problem fixed. Needed buffer large enough for UTF-16
data
o10glogon: adjustments to OMP_SCALE
wpapcap2john: fixed ASAN (and crash) problem, and found memory leak
zip: when there were multiple hits in the same SIMD block, later hits
would not get properly found. #2281
dynamic_big_crypt: Was not using openSSL version of Whirlpool if it
was present
leet: added compile time usage of openssl whirlpool if available. It
usually is faster than the SPH
pass_gen: added leet hash
leet: added additional test hashes
leet: added SIMD code for the SHA512 part. About 1.3x faster
leet: the non-SIMD had a syntax error in it.
pass_gen: removed errant comma added to list of formats handled
leet: trying to pacify the CI failure. I can not replicate the
problem, so sort of shooting in the dark
leet: that was problem found in travis-ci. Fixed in a documented way
now
ssha512: fixed ASAN bug in 32 bit linux builds
#2363 sed s/ARCH_WORD_32/uint32_t/g In all source, other than core
john files
Porting issues for VC
salt resume bug fixed. New v2 salt record in .rec file stores KPC and
if this changes upon resume, it is handled properly Fixes #2817
argon2: alignment problems, caused crashes on machines requiring
alignment
enpass: Alighnment problems
fvde. Alignment problems and failure on BE systems
itunes-backup Alignment problems and failure on BE systems
Fix leet format on BE systems
BE buffer out of bounds warning when building BE systems
sha2 generic. Fixed stict pointer warning when building on PPC64
mscash1: memory access (crossing 16 bit and 32 bit pointer access) on
some BE systems was causing failures of 0 and 1 byte passwords.
Using proper union fixed problem
formats.c: make the testing candidates stir the long candidates a bit
better. When getkey and setkey do not match, print out what was
returned
raw-MD5: enhanced format so that SIMD works on a BE machine. #2888
raw-MD4: enhanced format so that SIMD works on a BE machine. #2888
raw-SHA1: enhanced format so that SIMD works on a BE machine. #2888
(small change for raw-md5)
raw-SHA24/256: enhanced format so that SIMD works on a BE machine.
#2888
raw-SHA384/512: enhanced format so that SIMD works on a BE machine.
#2888
raw-MD4/5: enhanced format self tests to make sure all byte
boundaries are handled in key loading. #2888
pbkdf2_hmac_sha1.h: ixed this core file to run properly on BE
machines. #2888 MANY formats will be fixed by this.
raw-MD%u: fixed this format to run properly on BE SIMD machines.
#2888 (changes to misc.[ch] also)
raw-SHA1-linkedin: fixed this format to run properly on BE SIMD
machines. #2888
BitCoin: fixed this format to run properly on BE SIMD machines.
#2888
BKS and Blackberry-ES10: fixed formats to run properly on BE SIMD
machines. #2888
zopmonster: fixed format to run properly on BE SIMD machines. #2888
dynamic, keyring, keystore, leet: fixed formats to run properly on BE
SIMD machines. #2888 (Note, dynamic was simply forced to not be
SIMD for BE systems)
dynamic: Missed some dyna files. #2888 SIMD BE porting
cryptmd5, cryptsha256, cryptsha512, and simd-intrinsics. Updated SIMD
code to work fr BE. #2888. Flat intrinsics needed fixing
leet: Port for #2888 moved into simd-intrisics.c flat loading, where
it should have been. removed from the format crypt_all
more changes to simd-intrinsics.c (BE port). Also ports for
blackberry, and citrix. #2888
episerver: port to BE SIMD #2888. Tested for all encodings
ecryptfs: port to BE SIMD #2888.
IPB2: port to BE SIMD #2888.
BKS: port to BE SIMD #2888.
hmac-*: port to BE SIMD #2888.
xsha xsha512: port to BE SIMD #2888.
sl3 ssha512: port to BE SIMD #2888.
salted-sha1 raw-sha*-ng: port to BE SIMD #2888.
Fix alignment problem in "dynamic"
phpass: salt alignment problem
android FDE: salt alignment problem
HDAA: salt alignment problem
dynamic (hmail server). salt alignment bug
Fix alignment problem in sha256crypt format
sha512crypt. Fixed alignment problem
Fix alignment problem in panama format
oracle11: Ported to BE #2888 Fixed alignment problem #2868
mysql-sha1: Ported to BE #2888
mssql mssql05 : BE porting #2888
mssql12 : BE porting #2888
pwsafe : BE porting #2888
RAKP : BE porting #2888
mscash2 : BE porting #2888
"mschapv2 and netntlm : BE porting #2888 (Hard format!)
mschapv2 and netntlm : Alignment fixing caused bug in compiling
non-SIMD code.
phpassMD5 : BE porting #2888
sapB, sapG, sapH, sunMD5, HDAA. Ported to BE SIMD #2888. All of
these formats ignore SIMD, and revert to oSSL code if built on BE
systems
SybaseASE : BE porting #2888
rar : BE porting #2888
office (all 3 variants) : BE porting #2888
office: Bug in cbfc4d4 fixed. Bug was when SIMD_COEF_32 was > 4
fixed mixed DOS eol. Fix #2919
NT2 : port SIMD to BE. #2888. Tiny code clarifications to raw-md5u,
since we do not BE change the GETPOS macros. Changed to the word
version which are BE independant
wpapsk: BE porting. Disable SIMD building on BE. #2888
7zip: BE porting. Disable SIMD building on BE. #2888
sapB, sapG, sapH, unalignment requirements met. #2868
added encoding and utf8 tests to Travis CI
Drupal7 : port to BE SIMD. #2888
HACKING.md Added additional information in sources.list generation,
along with a site to auto-generate
pass_gen.pl : added sapG algorithm
sapG : Now working for BE-SIMD builds. #2922
pass_gen.pl : added sapB algorithm
sapB : Now working for BE-SIMD builds. #2922
strnzcpy, using dynamic size for copy. #2928
oracle11 : ST failed after 09ccc79 for non SIMD builds. saved_key was
not allocated, but a single flat variable, in non-SIMD builds
added strnzcpylwrn to misc.ch. Same as strnzcpylwr but returns length,
not pointer to the buffer
Use strnzcpy and strnzcpyn in more places #2928
configure/arch.h. Enable UBSan alignment checking. Forces
ARCH_ALLOWS_UNALIGNED=0. Fixes #2908
HDAA: Salt alignment problems on 32 bit builds
configure : avoid any opencl_*.o and copying kernels unless building
for OpenCL. Fixes #2939
argon2. Normallized buffer usage, bringing more into standard usage
Makefile.legacy. Added a gomp enabled cygwin-x86-any target (for
testing non-SIMD builds)
Simd helper code #2915 GETPOS and set/get key logic (#2949)
Added common code for get_hash (#2953)
Damn. DOS linefeeds did make it in. Removed here
configure: Added a FULLY working, unified UBSan. alignment sanitizer
now works for all CPUs supported
formats.c : error exposed by UBSan. memcpy was getting passed NULL
for orig_salt in certain cases
configure : Add PowerPC64 building (#2942)
makefile.legacy, cygwin-x86-anyomp fixed
base64_decode replaced with base64_convert (#2969)
configure: Reworked the summary section
citrix_NS10. Removed ASAN problem from OMP builds
Couple of formats where salt alignment not right
rar: disable for CPU requirement alignment
base64. Whitespace change (eol)
powerpc: Simd Port fixes. Simd working for 64 and 32 bit AltiVec on
power
ppc configure port. Should be fully working now
configure: Added new --enable-ubsantrap. Like UBSan, but crashes on
any problems
rar disabled on aligned required systems, warning emit reversed
configure. A bad version got in. Fixed
rar: quite format not used warnings during configure run
Powerpc CPUID checking logic added to configure. #2861
Prior commit omitted calling autoconf before checking it in.
ppc configure fixed
ppc_cpuid. Added copyright. Changed logic getting auxv data (on
stack). Using caps2 for testing for 2_07git add ppc_cpuid.c
ppc_cpuid.c Make this work on non-linux PPC systems (for configure).
Simply return tha all needed flags are there
phpass. Salt align bug on non-simd 32 bit. #2956
ppc_cpuid.c would core dump on non linux systems if run with no
command line options
BE non-SIMD re-porting for XSHA512 and zipmonster
bks: BE Port #2888
BE report for hmacMD5 mssql12 mschapv2 netntlm ssha512. #2888
Autoconf: Add --disable-simd option. This will not disable any default
SIMD features enabled in the compiler but will also not enable any
more of them. And most importantly, it will define JOHN_NO_SIMD
macro which in turn will force using no-SIMD code paths in JtR.
ppc_cpuid : cleaned up error message shown when built on non-Linux
system
fmt_split_case issue dyna_compiler and --test-full=1 (#2997)
Port of wpapsk to use proper pbkdf2_hmac-sha1.h file. The great side
effect is this fixes the BE problem, and it is faster (#3005)
non-intel SIMD fixes. #3010 (#3011)
sapH, Port to BE SIMD code. #2922
HDAA. Ported SIMD to BE (ugly format). #2922
mute VC warnings
pkzip. Add warning for builds without zlib. #3033
Argon2. Disable SIMD logic in --disable-simd builds. #3044
pomelo. Disable SIMD in --disable-simd builds. #3044
scrypt. Disable SIMD in --disable-simd builds. #3044
pass_gen. Increased pbkdf2-hmac-sha1 to 179 byte salt. Started on
bitlocker (more to do)
expanded pbkdf2-hmac-sha1 opencl to 179 bytes, and kernel is unlimite…
(#3052)
pass_gen. Increased pbkdf2 hashes to allow salts up to 179 bytes
pass_gen.pl added msmoney format
x86-64.h. moved define of NT_X86_64 to inside prior JOHN_NO_SIMD
block
3limb salt handling for all 32 bit opencl pbkdf2-hmac-* #3035
PO format. changed MD5_word to uint32_t. #3103
dynamic. Changed MD5_word into uint32_t. #3103
Star/Libre Office. Handle their buggy SHA1 logic (optional)
updated spelling error, removed testing code
Merge StarOffice stuff into LibreOffice
required changes to get VC to build again
logger.c has exe bit set per 679ae3c
Removed ALL memdbg code
updated the unused pre-built version of this file to its proper state
fixed dynamic overflows in single mode
dynamic. Perform a full-clean if m_count is less than max keys
dam exe bit set
do not force require full clean if m_count is MIN_KEYS size. also
added comment for later
dynamic_types: fix non-SIMD compile error caused by c31b66d
Added dynamic-compiler RDP format when script builds incorrectly
(#3568)
fgetl and fgetll both handled lines with NULL incorrectly. fgetll also
memory leak on long lines with NULL
Changes to common.[ch] and misc.[ch] Jumbo.[ch] triggered by code from
unit-tests project.
sap_pse require small change in valid after changes to misc.c
first version of unit testing code. Some changes needed in common.c/…
(#3580)
fixed bullet-proof code to not core on 32 bit builds
using void* in arithmetic is not valid, even though gcc extension
allows it (#3608)
uncommented all john.conf Option section params. There were a couple
source changes required to keep the default behaviors
default wordlistrules back to empty rule behavior

Dhiru Kholia (532):


Add jtrTestSuite as a submodule
Update MinGW stuff
Drop a couple of old formats from the unused/ folder
blatant attempt to increase my patch count
Support TGS-REP hash extraction, based on Kerberoast
Don't ignore non-inlined keepass hashes without giving a reason
Use sane inlining defaults in keepass2john
Update olefile to 0.41, add ACCDB support
Add support for cracking Inno Setup hashes
Revert "Add support for cracking Inno Setup hashes"
Add sample Inno Setup hash
Add support for md5($p.$s.md5($p.$s)) scheme
Add support for cracking HSRPv2 hashes
Add some HSRPv2 test vectors
A blast from the past!
Make SSH format actually crack Superfish key
Give credit where it is due
clean up /doc, #1
Stop wasting time in maintaining the legacy build system
Revert "Stop wasting time in maintaining the legacy build system"
Stop wasting time in maintaining the legacy build system
Emit a scary message when Makefile.legacy is used
Respect PEP8 a bit
Recommend PGPCrack-NG for cracking symmetrically encrypted PGP files
Add support for Notes/Domino 8+ H-hashes
Add support for SHA3 hashes (unify with Keccak stuff)
Fix the build failure caused by the recent SHA3 patch
Add support for hmac_pbkdf2_md5 hashes, v2
Add credit for SHA3 stuff
Remove unused function from the SHA3 format
Fix description in dominosec8 format
Add support for HAS-160 hashes
Add HMAC-GOST (currently broken for unknown reasons)
Add a test vector for HMAC-GOST
Add support for POMELO hashes
Add non-SSE implementation of POMELO as backup
Add support for Pufferfish hashes
Add support for Stribog hashes, v6 (SSE4.1 enabled)
Tweak README.MinGW a bit
HMAC MD5 cleanup, fixes #1324
Fix ASan crash in the new Keccak code
Add support for new Oracle Database 12c password hashes
Add support for Oracle 12c "H" hashes
Port truecrypt_volume2john.c to Python
Add support for keyfiles in TrueCrypt format, #1
Add support for keyfiles in TrueCrypt format, #2
truecrypt_volume2john.c is dead now
Create index on aes.a library, MinGW fix #1
Stop overwriting AR variable, MinGW fix #2
Simplify linking for luks2john.c, MinGW fix #3
Fix uaf_encode.c compilation, MinGW fix #4
Fix sshng2john.py, fixes #1374
Restore a new, robust version of krbpa2john.py utility
Remove broken krbpa2john stuff from pcap2john.py
Generate new hash format in krbpa2john.py
Make krbpa2john.py a bit more robust
Restore salt extraction "feature" in krbpa2john.py
Unify, and cleanup keystore2john stuff
Make krbpa2john.py a bit more robust, #3
Make krbpa2john.py a bit more robust, #4
Add support for MinGW builds, with <3 from JimF!
dynamic_1016 never did md5($s,$p), it does md5($p,$s) instead!
Use CircleCI for MinGW builds instead of Travis CI
Make CI testing configuration saner
Show CircleCI build status in README.md
Add support for more NTP hash types
Fix copying stuff in MinGW builds
Suppress wine warnings in CircleCI environment
MinGW build filenames now include short commit hash
"download" badge now downloads latest MinGW build
Start cleaning up *2john tools
Add support for vBulletin > 3.8.5
Use "dynamic_2006" for vBulletin!
Fix issue #1595
Update olefile to 0.42.1 (released 2015-01-24)
Make CircleCI testing more robust
Update blockchain2john.py to handle v2 hashes, fixes #1050
Make blockchain2john.py work with Python 3 too
Simplify kirbi2john.py utility
Add a test vector in blockchain format
Remove a debugging statement from the HSRP v2 parser
Improve handling of "special" blockchain v1 wallets
Remove testing dictionary, WTF?
[ssh] advertise ability to crack PEM files
[ssh-ng] add support for EC private keys
[ssh] add a PEM test vector
Fix downloading of Windows builds
Fast PEM cracker
[pem] fix errors in pem2john.py
[pem] make the format more robust
[pem] false positives shouldn not happen now
[pem] add support for dsa keys
[pem] add a better format description
[ssh-ng] advertise support for new "OPENSSH" format private keys
[keychain] tested on OS X El Capitan
Add support for cracking files using GPG symmetric encryption
make gpg format slightly more robust
Add support for cracking Apple iWork '13 files
Add support for iWork '09 files
GPU support for cracking Apple iWork files
Add partial support for KWallet 5 files
Fix out-of-bounds write in raw-md5 format, caught by ASan
ssh format is dead, use ssh-ng format instead
Fix bogus line endings in vdi2john.pl
Advertise npdf2john a bit
Update instructions for MinGW builds
[vnc] fix cracking of short passwords, fixes #2021
Add documentation for cracking PDF files
Add documentation for cracking PST files
[iwork-opencl] Remove unused identifier, noticed by Lei Zhang
Improve VTP packet parsing a bit
Add a comment in keystore2john.py
[keepass] KeePass 2 does not support Twofish by default
Warn instead of aborting when using keyfile with KeePass 2 databases
Document known formats built using the dynamic compiler
LUKS only supports sha1 as the hash function currently
Document support for cracking JBoss AS 7.1 hashes
enfcs: warn for unsupported ciphers
Minor fixes in DYNAMIC_COMPILER_FORMATS.md
Ugly hack to get pfx2john working again after LINE_BUFFER_SIZE changes
Add support for "BKS" (BouncyCastle) format keystore files
pfx-ng format
Document the correct hash format for MongoDB hashes
Add utility to extract MongoDB hashes in JtR format
Faster way to crack MONGODB-CR system hashes
Fix a misleading indentation compiler warning
Add support for cracking MongoDB SCRAM-SHA-1 system hashes
Rename MONGODB-MiTM system hashes to MONGODB-CR network hashes
Add support for sha256 in pfx-ng format
Add support for sha512 in pfx-ng format
Add support for MD5(Palshop) hashes
Add a sha512 test vector in pfx-ng format
Add a usage note for gpg2john utility
Add support for cracking SocialEngine hashes
Add support for cracking MD5(ZipMonster) hashes
Add some more MongoDB network authentication test vectors
Add a pfx-ng test vector from CMIYC 2013 contest
Fix TravisCI failures by disabling some OpenCL formats
Fix a buffer overflow warning at rawSHA512_common_plug.c:333
Fix a unused function warning in zipmonster format
Add support for cracking Poison Ivy "hashes"
krb5pa2john: Fix for broken user extraction due to field name change.
Closes #2299.
New format for cracking leet.cc hashes
Add support for cracking FileZilla Server hashes
leet: avoid crash while processing dynamic_82 type hashes
Add dump-apex-hashes.sql script to README.apex
Add support for Enpass Password Manager (CPU + GPU)
Add support for modern KWallet databases
Add pdf2john.pl tool for extracting hashes from PDF files
Use Fedora 25 in CircleCI
HSRP: remove an old joke
Remove remaining traces of ssh2john
Fix rename-to-exe logic for the MinGW build
Fixes and improvements for iwork2john.py
Add support for Oracle PeopleSoft PS_TOKEN hashes
Fix the link to LICENSE file
Fix a typo in iwork format
Add SIMD support for cracking modern KWallet files
Fix a thinko in enpass format
phpFox v3 hashes can be cracked using dynamic_13
Add support for iTunes Backup (#2410)
iwork-opencl: move all work to GPU, v2 (#2417)
s/erros/errors (fix typos)
Add support for cracking FileVault 2 hashes
FVDE (FileVault 2) OpenCL support (#2436)
Fix error handling in luks2john.py
Remove now unnecessary BIO_ checks
Remove pdf2john.py, use pdf2john.pl instead
gpg2john.c: fix compilation error in case of missing zlib-dev
Improve salt and hash validation in EPiServer format
Support handling of modern Bitcoin Core wallet versions
Various efs2john.py enhancements
Add support for cracking Padlock databases
Initial support for Jetico BestCrypt 8.x / 9.x (#2448)
dmg2john.py: handle encrypted_blob_size with value 64 properly
Fix a minor memory leak in BestCrypt format (#2459)
Fix a minor memory leak in Padlock format
PEP 8 fixes for pcap2john.py
Fix a typo in spelling out "JWT"
Add support for cracking MS OneNote (.one) files
Add support for cracking Windows BitLocker passwords
Add support for auditing XMPP SCRAM-SHA-1 hashes
Increase PLAINTEXT_LENGTH in Bitcoin format
MSDP MD5 password hashes are also supported
Misc OpenBSD disk encryption related improvements
Fix padding checks in ssh-ng format
Add support for bcrypt PBKDF in OpenBSD-SoftRAID format
Various 1password2john.py cleanups
Add another test vector in Oracle12C format
Add another test vector in pomelo format
Add support for IPsec Authentication Header (AH) hashes
Add support for cracking FreeBSD GELI hashes
Add support for ArubaOS hashes
Add support for cracking SNMPv3 hashes
Fix ALGORITHM_NAME in BitLocker CPU format
Various bitlocker2john.c cleanups
Various BitLocker related documentation fixes
Use OS X support in Travis CI
All FreeBSD GELI versions (v0 to v7) are supported now
Be more informative when benchmarking itunes-backup format (#2527)
Fix import problems in kerberom.py
Add support for cracking Ethereum wallets (#2525)
Add support for cracking Electrum wallets
Add support for cracking MultiBit wallets
Improve and extend support for IS-IS hashes
Add support for more OSPF and IS-IS authentication algorithms
Add support for Ethereum presale wallets
Limit output bkp field length in ethereum2john.py
Partial OpenCL support for Ethereum format
Fix a harmless out-of-bounds read in ethereum format
Fix sneaky false positives in ethereum format
Fix typos in blockchain formats
Blockchain formats: Cleanup code and support My Wallet v3
OpenCL support for Ethereum presale wallets
Add a real-world Ethereum presale wallet test vector
Reduce false positives in MultiBit format
Ethereum format: Tune OMP_SCALE value
Ethereum format: Move AES decryption + Keccak to GPU
MultiBit format: Improve performance by doing delayed decryption
OpenCL support for cracking PFX files
OpenCL support for cracking FreeBSD GELI
Add support for EAP-MD5 hashes
Add support for cracking Electrum 2.8+ encrypted wallets
Electrum format: remove build hacks and add SIMD
OpenCL support for cracking Electrum 2.8+ wallets
Warn about unsupported configurations in keepass2john.c
Add support for MS Money
Add support for ChaCha20 in KeePass format
Add support for Access 2007 files using CryptoAPI
Add support for SunShop hashes (#2605)
Fix handling of GPG symmetric encryption without MDC
Reduce false positives in MultiBit format (take 2)
Add FMT_NOT_EXACT in GPG format to handle files without MDC
Fix multiple problems in sshng2john and SSH-ng format
Use Fedora 26 in CircleCI
Make uaf2john more robust in input handling
Make keepass2john.c more robust in handling input
Make dmg2john.c more robust in input handling
Make vncpcap2john.c more robust in input handling
Few enhancements for openssl2john.py
Make SIPdump more robust in handling input
Make eapmd5tojohn more robust in input handling
Make wpapcap2john more robust in input handling
Enable usage of libFuzzer with JtR
Add support for SHA-256 in openssl-enc format
Enable fuzzing of bitlocker2john using libFuzzer
Enable -fstack-protector-all for a CircleCI build
Assorted PuTTY cracking enhancements
Add WPA2-PSK-SHA256 (802.11w) support
Add support for Ethernet link type
Add support for Dashlane password manager
Few fixes for the LastPass format
Add support for LastPass CLI
Enable fuzzing of putty2john using libFuzzer
Few enhancements for the LastPass formats
Report tunable costs for ssh-ng format
Use the proper stdint.h file
Cleanup old putty2john build stuff
Report tunable costs in OpenBSD-SoftRAID format
Get rid of EVP_BytesToKey from Dashlane format
Add support for truncated Electrum hashes
Fix a whitespace error in electrum format
Report tunable costs in electrum format
Fix a typo in bestcrypt2john.py
Add support for cracking PGP WDE encrypted drives
Eliminate warnings about unused functions from secp256k1 code
GPG format supports cracking PGP Zip files too
Add support for cracking PGP Virtual Disk images
Add support for EME2-AES in PGP Disk format
Fix a problem detected by ASan in PGP WDE format
Enable fuzzing of racf2john using libFuzzer
Enable fuzzing of hccap2john using libFuzzer
OpenCL support for PGP Disk format
Show limitations of pcap2john.py explicitly
OpenCL support for PGP WDE format
OpenCL support for LastPass formats
Add support for cracking Kerberos AS-REP responses
Various enhancements for the TrueCrypt format
Minor updates for 1Password stuff
Make error messages more informative in keepass2john.c
Add more test vectors in PGP Disk format
Add support for cracking PGP SDAs (self-decrypting archives)
Generate 32-bit MinGW builds with AVX2, AVX and SSE
Add another test vector in PGP SDA format
Cleanup DMD5 format a bit
OpenCL support for cracking PGP SDAs
Make luks2john.py compatible with Python 3 too
Fix support for RAR 5.x SFX files
Remove CPU fallback from GPG OpenCL format
Relax length_id check in PDF format
Use brute-force in office2john.py to discover RC4 Encryption Header
Fix and improve valid in krb5asrep format
Fix and improve valid in krb5tgs format
Bail out for SSH1 keys in putty2john
Improve error handling in gpg2john
Fix a regression in gpg2john for multi-key armored ASCII files
Add OpenCL support for SHA-256 based S2K
Add OpenCL support for SHA-512 based S2K
Initialize Twofish correctly in GPG OpenCL format
Support etype 17 and 18 in KRB5 AS-REP format
Add support for extracting TGS-REP hashes
Update documentation to reflect removal of krb5-23 format
Fix reliability problems in KRB5 AS-REP format
Minor updates for KRB5 TGS stuff
Add support for cracking etype 17 "native" Kerberos hashes
Add support for cracking Kerberos des-cbc-md5 hashes
Add support for cracking Kerberos credential cache
Add missing null-termination in KRB5 AS-REP format
Add support for cracking Neo wallets
Minor speed improvement for krb5-3 format
Cleanup the bundled libsecp256k1 code a bit
Rename krbpa2john.py to krb2john.py
Fix parsing for WinZip AES encrypted archives
Add information about auditing Openfire
Add support for PKWARE's SecureZIP
Fix endianness issue in BitLocker format
Add varied test vectors in GPG format
Notes on testing JtR on big endian systems
Fix salt alignment in known_hosts format
Reduce false positives for GPG files lacking MDC
Disable POMELO on big-endian machines
Improve parsing of WinZip style AES encrypted archives
Further reduce false positives for GPG files lacking MDC
Disable POMELO correctly on BE machines
Fix cracking of GPG files using 64-bit symmetric encryption
Add AVX2 version of POMELO
Improve robustness and correctness of zip2john
Assorted fixes for POMELO format
Fix alignment problem in config.c
Fix alignment problem in OpenVMS format
Re-fix alignment problem in OpenVMS format
Correct casing for webEdition word
Fix alignment problems in ethereum format
Fix a typo in dynamic format
Correctness fixes for GPG symmetric mode cracking
Fix alignment problem in pkzip format
Refactor krb5asrep format to facilitate OpenCL implementation
Fix alignment problems in various OpenCL formats
Improve HACKING notes based on feedback from JimF
Add support for cracking NetIQ SSPR hashes
Treat various values as unsigned integers in 7z2john.pl
Relax CRC validation check in 7z format
Various fixes for alignment problems
Add EmulateBrokenEncoding feature
Add support for cracking TACACS+ hashes
Improve scalability in tacacs-plus format
Use strnzcpy and strnzcpyn in more places
Clear salt structure before usage
Add support for cracking WLCCP LEAP hashes
Fix salt alignment in tacacs-plus format
Add support for extracting iSCSI CHAP hashes
Rename $ to _ in UAF code to avoid compiler issues
Add support for RADIUS CHAP hashes
Fix OpenSSL API usage, and hash validation bugs in DPAPImk format
Unify all Lua scripts into a single file
OpenCL support for cracking PEM files
Add OpenCL support for cracking AS-REP hashes
Assorted fixes for tacacs-plus stuff
Fix salt alignment in phpass and ethereum formats
Fix warnings in MinGW builds (#2964)
Update licensing terms for tacacs-plus stuff (#2976)
Add a test vector with negative CRC value in 7z format
Use Fedora 27 in CircleCI
Add support for cracking DHCP OMAPI hashes
Add support for cracking BIND RNDC hashes
Add a note about PrestaShop 1.7
Fix JtR-TestSuite failure for RSVP format
Add new_keys logic for some hash types in RSVP format
Add support for cracking Apple Notes databases
Assorted code cleanups
Update README.BitLocker to reflect current state
Fix warnings by using correct data types and format specifiers
Expose kdf type as a tunable cost in ethereum format
Rename "omp_t" to "threads"
Minor cleanups for multibit format
Various fixes for ODF format
Minor cleanups for OpenBSD-SoftRAID format
Refactor OpenBSD-SoftRAID format
Assorted code cleanups, part 2
Add OpenCL support for OpenBSD-SoftRAID stuff
Cleanup bitcoin format a bit
Add support for older bitcoin wallets
Cleanup kwallet format a bit
Cleanup money format a bit
Assorted cleanups, part 3
Cleanup net-ah format a bit
Cleanup ospf format a bit
Cleanup sspr format a bit
Cleanup putty2john a bit
Add support for cracking 1Password for macOS databases
Cleanup dashlane format a bit
Cleanup EncFS format a bit
Add support for cracking MultiBit Classic .wallet files
Cleanup vtp format a bit
Cleanup Siemens-S7 format a bit
Cleanup VDI format a bit
Update copyright year
Cleanup xmpp-scram format a bit
Report tunable costs in multibit format
Rename sxc2john.py to staroffice2john.py
Rename the sxc format to staroffice
Unify common code for StarOffice format
Add varied test vectors for StarOffice format
Make staroffice2john.py slightly more flexible
Rename and refactor the ODF formats
Minor cleanups for openssl2john.py utility
Fix copyright text in gpg-opencl format
Minor cleanups for encfs2john.py utility
Remove the broken ssh2sshng.py utility
Fix license text in bitcoin2john.py utility
Fix license text in aruba2john.py utility
Fix license text in krb2john.py utility
Fix license text in htdigest2john.py utility
Fix license text in cracf2john.py utility
Add attribution text in LibreOffice format
Add OpenCL support for cracking NetIQ SSPR hashes
Document the process of cracking AuthMe hashes
Add support for cracking Bitwarden hashes
Add GPU support for cracking Bitwarden hashes
ethereum2john.py - add newline in the warning message
Add support for cracking BitShares wallets
Add documentation for RACF stuff
Add support for cracking BitShares backup files
Cleanup tacacs-plus format a bit
Cleanup bitwarden format a bit
Add support for cracking Monero wallets
Add support for AES-192-CBC in SSH-ng format
Add support for AES-256-CBC in SSH-ng format
Enhance symlink resolution feature in MinGW builds
Add support for cracking Ansible Vaults
Tune MKPC and OMP_SCALE in net-ah format
Tune MKPC and OMP_SCALE in wbb3 format
Tune MKPC and OMP_SCALE in tcp-md5 format
Tune MKPC and OMP_SCALE in sspr format
Tune MKPC and OMP_SCALE in pgpdisk format
Tune MKPC and OMP_SCALE in pgpsda format
Tune MKPC and OMP_SCALE in pgpwde format
Tune MKPC and OMP_SCALE in vtp format
Tune MKPC and OMP_SCALE in securezip format
Start using CircleCI 2.0 platform
Document cracking of TACACS+ hashes
Tune MKPC and OMP_SCALE in PEM format
Cleanup SNMP format a bit
Tune MKPC and OMP_SCALE in RSVP format
Add support for cracking Telegram (Android) passcode hashes
Add support for cracking DNS TSIG hashes
Add support for extracting HTTP Digest Authentication hashes
Cleanup the old Android FDE format a bit
Add support for more ciphers in PEM format
Calculate correct key length in PEM-OpenCL format
Add support for tunable costs in PEM formats
Cleanup space-before-comma instances
Add OpenCL support for cracking Ansible Vaults
JtR works for iWork 2018 files too
Add support for cracking Adobe AEM hashes
Add support for cracking andOTP backups
Skip the unrequired decryption of data
Add support for cracking Android Backups
OpenCL support for cracking Android Backups
Document the process of auditing Kerio Connect hashes
Python PEP 8 and other trivial fixes
Cleanup BestCrypt format a bit
Add support for cracking Signal passphrases (#3271)
Add support for cracking RADIUS authentication hashes
Add support for cracking DHCPv6 authentication
[GPG] Avoid incorrect processing of very old GPG keys
Add support for cracking DHCPv4 authentication (#3279)
Add support for cracking older BitShares wallets (#3283)
JtR supports PRiVCY wallets (#3286)
Generate less revealing hashes for Bitcoin wallets (#3290)
Fix a typo - can't trust autocomplete always (#3291)
Add support for cracking Telegram Desktop passcodes (#3295)
OpenCL support for cracking Telegram Desktop passcodes (#3296)
Bunch of trivial fixes (#3298)
Improve auditing documentation a bit (#3299)
Parsing fixes for telegram2john.py
Add support for cracking SAP's PSE files (#3303)
Some assorted trivial fixes
Add another tunable cost in PFX formats
Add support for cracking Tezos keys
Add SIMD support for cracking Tezos keys
Add OpenCL support for cracking SAP's PSE files
Add OpenCL support for cracking Tezos keys (#3317)
Add another test vector to SIP format
Fix the size of salt buffer in Tezos kernel
Fix algorithm name in Tezos CPU format
Tezos: Give credit where it's due
OpenCL support for cracking SSH keys - Initial Cut
Make GCC 8 happy in various ways
Add SIMD support for cracking Ethereum Presale wallets
Fix more GCC 8 warnings
Use Fedora Rawhide in CircleCI
Fix recent incorrect buffer resizing in charset handling code
Ignore GCC 8's -Wstringop-truncation warning
Disable -Wstringop-truncation more generally
Partial revert of commit bf2048be86 - part 1
Drop redundant memset zero padding before strncpy
DMG: Add long self-test vectors
Install zlib1g-dev package explicitly on Ubuntu (and Debian)
Add a note on cracking ZooKeeper hashes
Cleanup and enhance axcrypt2john.py utility
OpenCL support for cracking AxCrypt 1.x
Minor SSH-OpenCL tweaks
Style fixes for bitlocker2john.c
Add support for cracking AxCrypt 2.x
Add support for cracking IBM 4690 ADXCRYPT hashes
Add APFS formatted DMG self-test vectors (#3362)
Make pcap2john.py easier to deploy (#3384)
Add support for cracking APFS FVDE volumes
Add one more self-test vector in agilekeychain format
Share more code between STRIP formats
Share more code in Apple Keychain format
Share more code in Password Safe format
Share more code in 1Password Agile Keychain format
Relax parsing in pdf2john utility
Add OpenCL support for cracking 1Password Cloud Keychains
Fix up our issue template language
Enable ADXCRYPT to run on BE (e.g. mips64) machines
[ZIP] Fix processing of multiple extra fields
Add support for cracking SolarWinds Orion hashes
Fix comment styling a bit
[CHAP] Accept longer challenge strings
JtR works with Office 2019 just fine
Support Python 3 in ml2john.py utility
Add support for QAS vas_auth
[MAINT] Rename ml2john.py to mac2john.py (#3491)
Add an alternate implementation of mac2john.py script
[MAINT] Fix an informational message regarding KRB stuff
Clean-up and enhance pem2john.py
OpenCL support for cracking AxCrypt 2.x containers
Make DiskCryptor format functional on BE machines
Add support for cracking encrypted VMware VMX files

Claudio André (318):


OpenCL: AMD devices have some weird bug when using pinned buffers.
Forgotten file: see ec080119f45ffef07f7f1dd36e120ee56d5d6734
OpenCL: Updates to get_processor_family().
Inform the user if (s)he is using a recommended driver. Also, it is
possible to warn if a crappy driver version is detected.
Be more user friendly using a better README file in Github main
project page.
Change the comment of sha512crypt-opencl PLAINTEXT_LENGTH.
Cosmetical changes to OpenCL SHA256 formats: PLAINTEXT_LENGTH
Update copyright and contact information in SHA2 OpenCL.
Remove any OpenCL output when running JtR --show.
Mute a TestSuite error message caused by an OpenCL message.
Mask mode implementation in raw-sha256-opencl.
Correct mask mode behavior when GWS is supplied. We'l use the figure
as-is but we still print a message about internal generation. See
5980618088329ea3820c226887e62a4b6c779c5b.
Small tweaks (clarify a few comments and remove a TODO).
OpenCL share code with CPU formats in RAW-SHA512.
Move OpenCL auto tune code to reset() in raw-sha256.
Mute auto tune warnings on default verbosity. Closes #1146.
Try to make things clear to the OpenCL compiler.
Adjust c/s for mask mode benchmark.
This changes might produce better binary code for GCN (unfortunately,
the ancient drivers on super cannot produce a final prove).
Keep this senseless change in sha256 OpenCL in history, but remove it
from source.
Used shared code between CPU and GPU formats for raw-SHA256. (No
static method in header).
Use only mem_calloc_tiny inside shared code.
Used shared code between CPU and GPU formats for raw-SHA512. (No
static methods in header file).
Mask mode implementation in [raw/x]-sha512-opencl.
Handle the salted format for the GPU mask mode.
SHA512 OpenCL 130% performance gain on Tahiti (I see no reason for it,
but AMD does).
SHA256 OpenCL follows the SHA512 recent changes (> 1Gc/s on Tahiti).
SHA512 crypt OpenCL follows the recent pattern.
Share more code inside OpenCL driver detection.
I forgot a define for other platforms.
Refuses to run the kernel if the driver is known to be a disaster.
Optimize SHA512 crypt OpenCL for Nvidia.
Fix a possible bug in xsha512 OpenCL format.
Small tweaks.
Fix for the intermitent mask error on CPU. - see:
https://github.com/openwall/john/issues/1037#issuecomment-71936052
OpenCL raw-SHA256 and raw-SHA512: Do not compile kernel in init(). It
slows things down.
OpenCL SHA256crypt and SHA512crypt: Do not compile kernel in init().
It slows things down.
Reinitialize formats after any execution.
Add new AMD drivers to common-opencl.
Initialize OpenCL environment on init(), otherwise john's output
became a mess.
Protect macro parameters.
Fix to get the Omega driver performance using 6770.
Deprecate the 'dual' autotune_run interface.
OpenCL sha2crypt: Drop the separate crypt_all_benchmark().
Remove a duplicated initialization function call.
Improve error output when no OpenCL devices available.
Move Claudio's SHA2 file to be a '-ng' format.
Use a maskless version for raw-sha512.
Small tweaks in SHA2 OpenCL files.
Fix for sha256crypt running on AMD 15.5 driver.
Previous fix for sha256crypt is necessary for Catalyst 15.7 too.
Remove unnecessary code.
Send a sorted plaintext list to GPU in sha256crypt.
Remove the unnecessary stress applied to OpenCL device in sha256crypt.
For recent AMD drivers, select the new OpenCL sha512crypt kernel.
Fine tune the OpenCL sha512crypt kernel for GCN on super (15.7
driver). It is 2x-3x faster now.
Fine tune the OpenCL sha512crypt kernel for Nvidia sm_5x on super. It
is 50% faster now.
Fix: while testing (tuning) LWS values, it is not possible to use a
GWS value bigger than the buffer memory available.
Send a sorted plaintext list to the GPU device in OpenCL sha512crypt
Further tune the OpenCL sha512crypt kernel for AMD driver >= 15.5.
Fix: waste of memory by forked OpenCL runs. Closes #1707.
For sm_5x, vector operators does a better job in OpenCL sha512crypt
(on super).
OpenCL: Use bitalign for ror_64() in shared code in Claudio's formats.
See #1819.
Tune raw SHA2 OpenCL Claudio's formats and follow the new pattern.
Bugfix in ldr_sort_salt(). Last salt did not get hash updated.
Use lut3 when available.
Fix a Ctrl+C - Ctrl+V bug.
Seems to be better to revert to previous statemet (AMD driver still
surprises me).
Adjust Claudio's raw SHA2 formats to deal with GPU mask tune and
benchmark.
Inser a #pragma for old AMD compilers. Closes. #1834.
Tune only once in GPU mask mode.
Clean the value of a variable to avoid the error below: gws:
3072 1512Kc/s 1512695 rounds/s 2.030ms per crypt_all()+
gws: 6144 272547Kc/s 272547 rounds/s 22.542ms per
crypt_all() gws: 12288 1507Kc/s 1507300 rounds/s
8.152ms per crypt_all()
Split OpenCL SHA512crypt a little bit more.
New OpenCL SHA256crypt kernel.
Remove some duplicated code.
Tweak OpenCL SHA512crypt a little.
A few tweaks.
Use MAYBE_CONSTANT for other SHA2 GPU kernels.
Remove duplicated code.
Run indent and astyle ONLY.
Remove unnecessary code in OpenCL sha512crypt.
Update driver detection to new Crimson.
Include the last [1] WHQL certified driver for the 2nd generation of
legacy hardware [2]. [1] From now on only beta quality software will
be provided (if provided, of course). [2] Radeon™ HD 8000 – HD 8400,
HD 7000 – HD 7600, HD 6000, and HD 5000 Series.
Improve recommendations about OpenCL driver versions.
Allow to calibrate SHA512crypt kernel to any GPU. Gain seen on super:
> 3k c/s on GCN > 15k c/s on NVIDIA
Add some new configuration values to john.conf.
If exists, use the configuration saved in john.conf.
Get rid of the specific kernel for GCN (no longer recommended).
Allow to calibrate SHA256crypt kernel to any GPU. Gain seen on super:
> 10k c/s on GCN
Move drivers and definition of "recommended" to john.conf.
Fix the misformatted device identification/position message.
Remove the platform" notation in JtR.
Select the most powerful GPU as the default one.
Fix for singularis vs pluralis.
Fix a memory leak in sha[256/512]-opencl.
Fix raw-sha512 to follow the fakedb patterns.
Fix raw-sha256 to follow the fakedb patterns.
Merge AxCrypt in-memory secrets with Raw-SHA1.
Fix AxCrypt-SHA1 on non-SIMD. Closes #2008
Improve find_valid_opencl_device() detection.
Improve Raw-SHA2-opencl scalability.
Improve auto-tune controls.
Prepare MASK_KEYS_GENERATION macro to future improvements.
Fix a bug introduced in the scalability improvement.
Use shared code for NSLDAP.
Tune memory used by raw-SHA2-opencl.
Mute a compiler warning.
Shrink the hash/spread function. False positives < 0.05% (for 100,000
and 3,000,000 test cases).
Tune OpenCL kernel.
Re-format a header file.
Fix a memory overread. Closes #2049.
NVIDIA driver is doing something really strange. This implements a
workaround.
Do nothing if db is not set.
Tune SHA512crypt-opencl further. Improvement 1-2 kc/s.
Improve Raw-SHA256-opencl scalability.
Synchronize a debug message in raw-SHA512-opencl.
raw-SHA512: - Use the proper GWS size in prepare kernel. - Sync a
comment.
Small tweaks for raw-SHA256-opencl.
Tune memory usage for non GPU mask mode.
Correct a misplaced label in --list:opencl-devices.
GWS should be multiple of processors count not multiple of CUs.
raw-SHA512 [OpenCL]: - Sync with raw-SHA256. - Use a k=2 Bloom Filter.
Do not use a #define as a function. - see #2091.
Improve the Ubuntu OpenCL documentation.
Always save the commit used to build JtR. - Nothing will change if the
user has a regular git tree.
Improve OpenCL error handling.
Allow an OpenCL system wide build. - save compiled binary kernels
inside JtR private home folder.
Fix XSHA512-ng-opencl (see #2208).
Tune gpg-opencl auto-tune max duration.
Re-enable mscash2-opencl format on Travis CI.
Fix and document sha512crypt-opencl problems with NVIDIA OpenCL driver
361.
Rearrange [raw/x] sha512 formats
path_init() must be called prior to CPU fallback mechanism
Fix some typos
Fix an ld warning seen on CI
Fix a out-of-range compare bug in gpg2john
TravisCI: add ASAN into gcc build step
regex: fix for a warning seen when compiling against
OpenCL: a platform could have no devices
CI: test JtR (also) on a fresh environment
github: add guidelines to github users when they create an issue or a
pull request
github: improve issue guidelines trying to avoid CUDA and OpenCL known
issues
CI: Add a TS check
CI: test a non OpenMP build
CI: change the recent OS image to be used
CUDA: more cosmetic cleanups
OpenCL: make errors non-fatal for a "--test" run
encfs_common.c: fix a leak
axcrypt: fix prepare to keep input fields unchanged
loader: fix the --show
lotus: fix a macro name
fix: add a missing include in common.h
fix: change an "#include" in nsec3 format
circle: fix the build issue introduced in
a63b819bfc8a1559ace20b2824eb7f2e9014b5ea
build: clean up some 7-zip tmp files (see #2383)
minGW: always use aligned allocs
minGW: workaround for (wpa/pcap)2john tool
minGW: fix for a memdbg bug introduced in b701bc0
build: add a configure option to treat build warnings as errors
OpenCL: be more resilient on --list=opencl-devices
OpenCL: fix for a non SIMD build
general: mute a warning and a possible truncation (#2486)
OpenCL: improve error handling in --list=opencl-devices (#2489)
readme: fix markudown (#2487)
racf2john: mute a compiler warning (#2519)
PO: fix a bad conversion in a signed char buffer (#2520)
maint: add a static code analysis tool (#2561)
maint: remove one unused function in ssh_ng format
descrypt-opencl: warn about the slow startup at many salts
OpenCL: mute ptxas info (from build log) in default verbosity
OpenCL: add the failure code to the error message
CI: update Travis environment
maint: fix MAYBE_INLINE macro for GCC 5+
maint: mute a compiler warning [-Wmacro-redefined] (#2746)
maint: add pocl as a valid OpenCL implementation (#2750)
maint: rename 'gpu_devices' to be adequate to any accelerator
OpenCL: allow to duplicate a device on --devices list (#2781)
maint: tweaks to incremental vs. --min/max-length options (#2796)
maint: mute a compiler warning [-Wformat-extra-args]
maint: remove a comparison of an unsigned < 0
maint: remove a comparison of an unsigned < 0
docs: add Debian and derivatives to Ubuntu installation notes
docs: specify the path to john binary on issue template
2john: fix a tautological compare in wpapcap2john
docs: explicitly state it's about user-local build
incr: allow -max-len to bump Incremental's maxlen beyond the conf
CI: disable AVX2 for all Travis builds
OpenCL: rename to follow the file naming conventions
maint: remove a duplicate #include
mask: a MACRO was defined in the wrong place
OpenCL: fix the guard name in opencl_mask_extras
core: fix a bug introduced in 38d20bb
maint: remove a comparison that is always false
Revert "maint: remove a duplicate #include"
modes: increase MaxLen if MinLen is specified
CI: run the encoding tests on its own job
CI: test encoding inside OSX job
maint: remove all OpenCL references in a non OpenCL build
maint: use runtime CPU detection in ./configure
CI: use clang with ASAN
CI: let the new SIMD detection do its job
maint: autoreconf to update the build process
maint: add more checks to ppc_cpuid detection
maint: style and unterminated '#if' fixes
maint: mute warnings in ppc_cpuid
maint: fix for non SIMD builds
maint: remove the usage of 2017q3 worker
maint: handle a build outside git and archive
maint: partial revert of 551e468
maint: fix for uninitialized variable
maint: fix for uninitialized variable
maint: remove any tag from the JtR version
maint: remove .gitmodules
autotools: add a make target to copy OpenCL code
autotools: group optional libs at the end
OpenCL: do not use realpath(3) on CygWin
CI: link the Travis badge to the default branch
maint: enable fallback for CygWin
doc: proper case OpenCL acronym
OpenCL: warn if --dev lists more OpenCL devices than fork
mask: add FMT_MASK flag to raw-SHA512-opencl
OpenCL: add workaround for '-I' on CygWin
OpenCL: fix for uninitialized pointer in bitwarden
sha512crypt-opencl: Disable vectorizing for macOS. See #3234
docs: add guidelines for contributing
docs: add license and code style to guidelines
docs: announce the project relevance
OpenCL: rawSHA256 and rawSHA512 new scheme of LWS=NULL
OpenCL: SHA256crypt and SHA512crypt new scheme of LWS=NULL
maint: refuse --device if the format is not device-aware
OpenCL: fix AMD driver info
OpenCL: refactor the acquisition of the OpenCL environment
OpenCL: JtR should work after a lock fault
docs: update AMD OpenCL instructions
OpenCL: rawSHA256 and rawSHA512 set GWS to LWS multiple
OpenCL: SHA256crypt and SHA512crypt set GWS to LWS multiple
OpenCL: rename the get_multiple macro
OpenCL: fork was over validating `--dev`
OpenCL: add devices in the preferable order
Sort OpenCL devices (#3507)
OpenCL: warning if there are more devices available
OpenCL: check beforehand if there is any OpenCL device
OpenCL: postpone OpenCL initialization on fork
OpenCL: xSHA512 lacks proper binary_hash()
OpenCL: use NULL for lws (raw-SHA256/512)
OpenCL: rawSHA256/512 review autotune procedure
OpenCL: comment about rawSHA256/512 rounds reversing
maint: fix an undefined-behavior
maint: fix DiskCryptor packing for MinGW
maint: fix an overflow in keepass2john.c
OpenCL: tune sha512crypt for Intel
OpenCL: fix AMD driver info
OpenCL: fix sha512crypt on Radeon RX Vega
OpenCL: tune sha512crypt for GTX 1080
OpenCL: tune sha256crypt for GTX 1080
OpenCL: tune raw-SHA256/512 on super
maint: make sha512_reverse() available for non-SIMD
OpenCL: refactor opencl_load_environment()
OpenCL: fix for a possible buffer overrun
OpenCL: refactor the gpu_device_list[] variable
OpenCL: refactor the device_list[] variable
OpenCL: use a constant as devices list terminator
OpenCL: use 1-based OpenCL device numbers
OpenCL: improve the --device error message
OpenCL: use a constant as "no GPU selected"
maint: drop the unit tests for a default make
maint: remove unit-tests on `make clean`
maint: build unit-tests on `make check`
maint: move LCM(a, b) to shared code
maint: stop using isspace() in common_opencl
tests: add unit-tests for the trim() functions
maint: remove debug code in VMware VMX
zip2john: it was not using the proper buffer
maint: clarify the error `fopen: $JOHN/john.conf`
maint: stop duplicating the path in path_expand_ex()
OpenCL: add const qualifier
maint: modify cfg_name inside cfg_init() cautiously
OpenCL: add const qualifier to SHA256crypt/SHA512crypt
docs: OpenCL fixes for 1-based OpenCL devices
maint: fix a warning in sunmd5 in gcc 9
OpenCL: fix the device name not printed
OpenCL: mute a warning on Windows
OpenCL: autotune must set GWS as multiple of LWS
mask: free resources only after use
docs: add a recipe on how to build on Windows
Make the windows target the default when running on Windows (#3745)
docs: minor fixes on how to build on Windows
OpenCL: remove unused variable from vmx
docs: warn about unsupported OpenCL drivers
OpenCL: tune for the length a run will be using
OpenCL: tune for the length a run will be using
OpenCL: tune using code that matches benchmark more closely
docs: missing full JtR directory
fuzz: add const qualifier to fuzzing (#3820)
7z: stop to modify the caller's key in set_key()
OpenCL: rawSHA512 force auto-tuning
SIP: general improvements supplied by nanosonde (#3836)
SIP: fix for fails cracking qop=auth (#3840)
mask: add event to free (destroy) mask objects (#3843)
Handle GPU overheating gracefully (#3838)
packaging: upstream package stuff
hash_table: ocl_hc_128_prepare_table uninitialized allocation
OpenCL: print a message when a GPU wakes up from overheating (#3853)
OpenCL: rawSHA256 force auto-tuning (#3855)
Filter ztex formats when --format=cpu (#3854)
ztex: fix an overflow in sha256crypt (#3857)
OpenCL: if SleepOnTemperature = 1, print sleeping message once (#3861)
maint: move regex to experimental (#3860)
docs: drop non-updated jumbo-specific documentation files (#3865)
docs: cosmetic change in badges (#3866)
OpenCL: hash_ids uninitialized allocation (#3868)
docs: update the link for the Windows Build
CI: revamp all automated testing
CI: refactor and small tweaks
OpenCL: SHA256 and SHA512 force tune after fmt_done()
autotools: fix AVX512BW detection
autotools: fix AVX512BW detection
CI: run some tests only after merge
autotools: remove references of HT

Sayantan Datta (266):


DEScrypt OpenCL: Use a "safer" kernel for some devices (drivers) that
could not cope with the goto's.
mask.c: fixed stretch_mask buffer overflow bug
descrypt-opencl: limit max LWS to 64
descrypt-opencl: Limit LWS to 64.
descrypt-opencl: proper handling of cpu devices.
descrypt-opencl: Force LWS to 1 for cpu devices on AMD platform.
descrypt-opencl: remove stray output.
descrypt-opencl:set default LWS to 64 for Intel CPU on Apple.
relocate reset() after mask_init()
device mask
work-in-progress:mask mode internal candidate gen
work-in-progress:mask mode internal candidate gen: #2
work-in-progress:mask mode internal candidate gen: #3
work in progress: gpu mask commit 4
Raw-md4-opencl: partially working gpu password generation
Raw-md4-opencl: password generation on GPU(in alpha stage)
self-test: reworked
self-test tweak
Raw-md4-opencl:unified kernel for self-test, mask mode and other
modes.
Raw-md4-opencl: Fixed incorrect atomic update.
Raw-MD4-opencl: better get_key()
Raw-MD4-opencl: increased internal key count.
self-test: re-enable max-length test.
clean debuuging outputs.
fixed self-test for bfegg, HMAC-SHA1 and mysql.
Raw-MD4-opencl: reduce max kpc for mask mode.
fixed broken mas-mode
descrypt-opencl: reorganized code for new self test.
descrypt-opencl: properly release used kernels.
descrypt-opencl: leaner code
descrypt-opencl: better compare on gpu
descrypt-opencl: removed unnecessary code.
descrypt-opencl: better compare on gpu
descrypt-opencl: efficient hash loading on to GPU
descrypt-opencl:safer get_key, better hash loading code.
descrypt-opencl: efficient key transfer.
descrypt-opencl: remove unnecessary parameters form key struct
descrypt-opencl: faster set_salt()
descrypt-opencl: process keys only when it is changed
descrypt-opencl: seperate kernel file for finalize keys kernel
descrypt-opencl: process keys only when changed
descrypt-opencl: remove redundant and unnecessary code
descrypt-opencl: removed extra memory allocation
descrypt-opencl: consolidate redundant lines
descrypt-opencl: cleanup
descrypt-opencl: cpu-fix
descrypt-opencl: Successful kernel compilation on MIC(self-test still
fails).
descrypt-opencl: performance optimizations.
descrypt-opencl: save hardcoded kernels on disk and cache them
quickily on next run.
descrypt-opencl: hardcoded kernel Nvidia/Intel optimisations.
descrypt-opencl: passes -test=0
descrypt-openc: all kernels tests for max usable LWS.
descrypt-opencl: select kernels at runtime
descrypt-opencl: reduce static memory use.
descrypt-opencl: cosmetic changes
mask mode: Fixed memory corruption by GPU mask.
Avoid byte addressable store on AMD gpus.
Use private memory for Nvidia GPUs.
raw-md4-opencl:Use host defined macros in kernel.
Fix progress reporting when GPU mask is used.
raw-md4-opencl: fixed potential memory bug.
mask.c: fix template key buffer overrun.
Build tables.
raw-md4-opencl: prepare for new hash checking
raw-md4-opencl: new hash checking.
raw-md4-opencl: use perfect hash table.
raw-md4-opencl: optimize when gpu mask locatations are fixed.
raw-md4-opencl: bitmap performance test
build-table:fix openMP issues for older comilers.
raw-md4-opencl: fix issues with opencl 1.1
raw-md4-opencl: fix issues for Juniper.
device info: add check for gcn 1.0, 1.1 and 1.2
raw-md4-opencl: hash checking optimized upto 10k hashes.
raw-md4-opencl: finalize.
raw-md4-opencl:cosmetic changes.
raw-md4-opencl: reduce GPU memory use.
raw-md4-opencl: proper use of multi_profilingEvent[] and update war[].
raw-md5-opencl: new hash checking.
raw-md4/md5-opencl minor performance improvements.
raw-md4/5-opencl: remove leftover debug code.
raw-sha1-opencl: new hash checking.
raw-sha1-opencl: compute hash without changing key.
generate hash tables: suppress warnings.
raw-sha1-opencl: add license info.
raw-md4/md5/sha1 -opencl: bypass pinned memory allocation when unable
to allocate page locked memory.
build tables: use more latest openMP.
raw-md4/md5/sha1-opencl: fix constant cache use.
build_table:resolve memdbg issues.
fix memory leaks and memdbg issues with new hash checking stuff.
raw-md4/md5/sha1: fix bug where mem object is queried before it's
created.
nt-opencl: rearrange kernel.
nt-opencl: use key transfer similar to md4 kernel.
nt-opencl: gpu mask update.
new format:mscash-opencl and bug fix for other gpu mask enabled
formats.
mscash-opencl:gpu mask update.
gpu mask format use constant cache more aggressively.
mscash-opencl: pass parameter using kernel args instead of -D
mscash-opencl: remove unnecessary parameters.
mscash-opencl: new hash checking.
mscash-opencl: seperate create_clobject
opencl-mscash: new auto tune.
mscash-opencl: finalize autotune.
mscash-opencl: remove warnings.
opencl-mscash: fix multiple memory object release.
mscash-opencl: fix opencl compiler warning.
mscash-opencl: more stringent limit checks.
nt/raw-md4/md5/sha1-opencl: auto-tune update.
use better alternative to clFillBuffer conforming with opencl 1.0.
nt-opencl: bugfix.
lotus5-opencl: probably should fix cpu device errorsgit add
opencl_lotus5_fmt_plug.c
nt/raw-md4/md5/sha1-opencl: do not use local memory when device is
cpu.
loader.c: fix sequential_id calculation.
loader.c: additional checking for sequential_id calculation.
mscash2-opencl: new multi-gpu code.
mscash2-opencl: delete previous files.
mscash2-opencl: add copyright info and fix include braces.
mscash2-opencl: add opencl flags.
mscash2-opencl: improved multi-gpu scaling.
mscash2-opencl: autoTune chooses LWS more accurately.
mscash-opencl: fix valid bug.
Temporary Bug fix large hash collisions.
lm-opencl added.
lm-opencl: prepare for new auto_tune().
lm-opencl: cosmetic changes.
build-tables: bug fix for large hash collisions.
lm-opencl:new auto tune.
lm-opencl: device autotune.
lm-opencl: accurate LWS tune.
lm-opencl: auto tune finalize.
common-opencl: add missing macros.
lm-opencl: auto tune bugfix.
lm-opencl: more bug fixes and cleanup.
lm-opencl:verbosity control.
descrypt-opencl: better alternative to clearing buffers inside kernel.
bt(build_table):add 64bit hash type and qualified file names.
lm-opencl: new hash checking.
lm-opencl: use hash table.
lm-opencl: remove extra kernel parameters.
silence compiler warning for non-omp builds.
re-introduce changes removed by commit 5bad3f1a203
lm-opencl: add bitmaps for hash checking on GPU.
lm-opencl: bug fix.
lm-opencl: extract only required number of bits.
mask-mode resume problem bug fix.
lm-opencl:full unrolled kernel.
lm-opencl: faulty amd opencl compiler workaround for full unrolled
kernel.
common-gpu.c: fix memory leak.
mscash2-opencl:allocate memory only MAX_GPU_DEVICES.
mscash/nt/raw-md4/md5/sha1-opencl: auto tune bugfix.
mscash-opencl: many salt optimization and auto tune bugfix.
nt/raw-md4/md5/sha1-opencl: more auto tune bugfix.
lm-opencl: merge finalize keys with main kernel.
lm-opencl: finish merging finalize keys kernel with main kernel.
lm-opencl compiled only when opencl 1.2 build is detected
add ifdef CL_VERSION_1_2 before cheking its value.
lm-opencl: mask-mode test
lm-opencl:gpu side mask supports only one placeholder.
lm-opencl: gpu side mask bugfix.
lm-opencl:mask mode enabled.
lm-opencl: optimization when mask placeholder positions are static.
lm-opencl: use const cache to store gpu side mask keys.
lm-opencl: select full unroll kernel for gpus.
lm-opencl: patch missed with commit 04da2a
nt/raw-md4/md5/sh1-opencl: bugfix.
rebuild tables when 10 percent of hashes are cracked.
lm-opencl now conforms to CL 1.0 standards.
lm-opencl: remove remaining cl 1.2 stuffs.
lm-opencl: fix constant cache issue.
lm-opencl: add end of file LF.
lm-opencl:autotune bugfix.
lm-opencl: more autotune bugfixes.
lm-opencl: minimize use of global variables.
mscash2-opencl: init kernels and autotune in reset.
lm-opencl: 40 percent performance improvent on AMD GPUs with cat 15.5.
lm-opencl: do not release uninitialized buffers.
mscash2-opencl: do not release uninitialized buffers.
lotus5-opencl: more stringent limit checking.
lotus5-opencl: bugfix, doesn't fix #1505.
lotus5-opencl: possibly fix #1505
lotus5-opencl: some optimizations and cosmetic changes.
added new format nsldap-opencl.
descrypt-opencl: optimizations.
prepare to adjust nsldap with raw-sha1-opencl.
mask-mode: ?W bug-fix. It didn't update mask_num_qw used by other
modes.
mask.c: fix when mask contains characters > than 0x7f.
added new format: salted-sha1-opencl.
salted-sha1-opencl: bugfix in loading hashes.
build tables: signal handler bugfix.
mask.c: fix bug in truncate_mask/save_restore.
descrypt-opencl: changes required to support better auto-tuning.
descrypt-opencl: more changes.
descrypt-opencl: new host code
descrypt-opencl: more leaner code.
descrypt-opencl: code cleanup
descrypt-opencl: seperate kernel for hash checking.
descrypt-opencl: prepare for new hash checking.
descrypt-opencl: bugfix.
descrypt-opencl: merge functions.
descrypt-opencl: unify hash checking for all kernels.
descrypt-opencl: put common functions in separate file.
descrypt-opencl: common hash checking for all kernels.
descrypt-opencl: cosmetic changes.
descrypt-opencl: new hash checking.
descrypt-opencl: new hash checking.
descrypt-opencl: support for very large number of hashes.
descrypt-opencl: added bitmaps for hash checking.
descrypt-opencl: put key processing in common file.
descrypt-opencl: restrict frequent buffer updates.
descrypt-opencl: mask-mode init.
descrypt-opencl: support more placeholders on GPU side.
descrypt-openc: non-static gpu side mask bugfix.
descrypt-opencl: correctly report c/s rate.
descrypt-opencl: suppor mask mode for all kernels.
descrypt-opencl: use constant cache if possible.
descrypt-opencl: get key mask mode.
descrypt-opencl: build kernels in reset instead of crypt_all
descrypt-opencl: more compact code.
descrypt-opencl: use -D build opts to hardcode salt.
descrypt-opencl: rearrange kernels.
descrypt-opencl: improve basic kernel.
descrypt/lm-opencl: bugfix and other modifications to support auto
tune.
descrypt-opencl:auto-tune for fully unrolled kernel.
descrypt-opencl: save LWS parameters.
descrypt-opencl: re auto-tune only when using meask mode..
descrypt-opencl: use device name instead of gpu_id and include all
kernels to determine lws limit.
descrypt-opencl: new auto-tune bugfix.
descryp-opencl: hardcode only kernel autotune.
descrypt-opencl: prepare basic kernel for auto-tune.
descrypt-opencl: auto-tune for basic kernel.
descrypt-opencl: get key bug fix.
descrypt-opencl: set hash_ids[0] to 0 before self test.
descrypt-opencl: more auto-tune bugfixes.
descrypt-opencl: code cleanup.
descrypt-opencl: remove stary output.
descrypt-opencl: format details bugfix.
descrypt-opencl: basic kernel tuning.
descrypt-opencl: bugfix.
descrypt-opencl: fine tune hardcoded and fully unrolled kernels.
descrypt-opencl: auto-select suitable kernel.
descrypt-opencl: match suitable kernels with devices.
update amd device codenames.
lm-opencl: add more debug code.
lm-opencl: limit bug fix.
descrypt-opencl: use basic kernel for all apple.
add FMT_REMOVE parameter for formats that access the salt->list during
cracking.
lotus5-opencl: fix possible issues.
descrypt-opencl: implement FMT_REMOVE.
build tables: throw overflow warning instead of error and show file
and line.
build-tables: reduce memory consumption for upto 50 mil hashes.
descrypt-opencl: fix auto-tune for non-amd/nvidia gpu.
thread safe opencl_build() and opencl_build_from_binary() assuming
certain conditions.
fix issues missed in 0dbaf3a5bacbd34.
opencl_read_source is now thread safe.
descrypt-opencl: bugfix.
descrypt-opencl: fix thread safety issues for parallel build.
descrypt-opencl: parallel build.
descrypt-opencl: parallel build bugfix.
descrypt-opencl: make enc_salt thread safe.
descrypt-opencl: remove all critical sections.
unify hash checking for rawmd4/rawmd5/nt-opencl.
bugfix for last commit.
put create/release object in common file for 128 bit hash checking.
use qualified names to prevent name clashes.
more common functions for 128bit hash checking.
reduce number of global extern variables for common 128bit hash
checking.
bugfix for d2a0668

Frank Dittrich (248):


korelogic.conf: fix month name in [List.Rules:MonthsFullPreface]
korelogic.conf: split some rule definitions for dupe suppression
submodule update
opencl_sxc_fmt_plug.c apply Alexander Cherepanov's sxc format fixes
from 2013 to the opencl implementation (improved valid()) Without
these fixes I was able to trigger segfaults with fuzzed input files.
asan documentation fix
office_common_plug.c: add a comment from the CPU version that got lost
when separating code that is common for CPU/opencl
Add tests formatted in exactly the same way as the hashes in john.pot
May be I'm too paranoid, but I wanted to make sure each format
"understands" the hash format it uses for john.pot
osc format: use a hash without trailing spaces for the canonical hash
representation ($dynamic_4$) that is used in john.pot. The original
hash caused trouble because of the trailing spaces.
dynamic: use $HEX$ for ciphertexts ending with ' ' or '\t' when
storing them in the pot file.
sha512crypt: unify test hashes for CPU and GPU formats
osc format: add one more self test
sha256crypt: unify test hashes for CPU and GPU formats
relbench: avoid "Use of my $_ is experimental at ./relbench line 82."
Bash completion for file name in --prince=*, fixes #1020
john.bash_completion: fix typo in a comment.
bash completion: enable the --prince=FILE workaround for -prince=
Fix bash completion for --format=
siemens-s7: unify hash "versions" 0 and 1
Revert "siemens-s7: unify hash "versions" 0 and 1"
Revert "Revert "siemens-s7: unify hash "versions" 0 and 1""
siemenss-s7: valid() did still accept invalid hashes like
$siemens-s7$
$1$599fe00cdb61f76cc6e949162f22c95943468acb$002e45951f62602b2f5d15df217f49da2f5379c
b
instead of
$siemens-
s7$1$599fe00cdb61f76cc6e949162f22c95943468acb$002e45951f62602b2f5d15df217f49da2f537
9cb
gpg and gpg-opencl: rename 1st tunable cost, iteration count ->
s2k-count
Fix legacy builds for 32bit Linux
Fix oracle format breakage caused by commit
eaaf00625c2af421736b1e69dfaad3939cd4fb0f cmp_one cannot be a dummy
function (returning 1) if cmp_exact is a dummy.
Fix legacy build after some plugins have been converted into
non-plugins
Makefile.legacy: change object file name sequence to match Makefile.in
and keep the core john files at the top of the list
Corrext a stupid typo I made in commit 682d60e, fixing legacy builds
Avoid some scan-build false positives by adding
__attribute__((__noreturn__))
misc.h: reformat changes made in commit
05754f018aa785a2f646861be38556ec7cd3ad65
Sybase-PROP format: fix undefined behavior (signed integer overflow)
benchmark-unify: sort -f of mappings (for better readability)
Fix memory leaks for ./john --test=0 --format=tc_*
Fix memory leaks for ./john --test=0 --format=Snefru-128
Fix Memory leaks for ./john --test=0 --format=HAVAL-128-4
Fix memory leaks for ./john --test --format=whirlpool*
Fix a problem with "salt dupe checks" for unsalted formats. Closes
#1229.
benchmark-unify: add mapping NT-old -> NT
Report glibc version with --list=build-info
listconf.c: define _BSD_SOURCE and _DEFAULT_SOURCE for OpenCl builds
Fix some memory leaks for ./john --status[=NAME]
Add build timestamp to --list=build-info
Add Microsoft compiler version info to --list=build-info
Revert second part of commit 03404dfd88c6fcc8aa8fa7dd31b72bbc060cc200.
Otherwise, --list=build-info would would produce a segfault.
Report glibc version with --list=build-info
WoWSRP format: fix memory leaks (GMP) detected by ASan
Clipperz format: fix memory leaks (GMP) detected by ASan
john.c: replace exit(0) with error() for invalid encoding options in
john_load_conf_db() and in john_init()
opencl_rawmd4_fmt_plug.c: replace exit(0) with error() in case of
error
regex.c: replace exit(0) with error() in case of error
pkzip_fmt_plug.c: Fix issue #1232 (signed int overflow) for real
pkzip_fmt_plug.c: fix -fsanitize=undefined runtime errors
For FMT_NOT_EXACT, printwarning for main process only
Improve hdaa format's valid(). Closes #1262
Fix scrypt's prepare(), dont pass NULL pointers into
base64_valid_length Closes #1259
Fix scrypt's prepare(), dont pass NULL pointers into isdec()
pfx format valid(): call atoi(p) after isdec(p), avoid undefined
behavior
Fix "binary() returned misaligned pointer" for HMAC-SHA384 (32bit
Linux clang)
Fix "binary() returned misaligned pointer" for HMAC-SHA512 (32bit
Linux clang)
keepass_fmt_plug.c: avoid "Warning: salt() returned misaligned pointer
pbkdf2-hmac-md5_fmt_plug.c: Fix reporting of tunable cost (iteration
count)
pbkdf2-hmac-md5_fmt_plug.c: fix syntax error caused by typo
bsdicrypt: report iteration count as tunable cost
Fix bash completion for --show= after --show=types had been added
For --regex=alpha, '.' and '?' need to be escaped
regex.c: escape backslash inside words.
truecrypt_fmt_plug.c: fix memory leak for ./john --test=0
--format=tc_*
truecrypt_fmt_plug.c: fix whitespace error
ssh_fmt_plug.c: fix memory leak in valid(), fixes #1247
Revert "ssh_fmt_plug.c: fix memory leak in valid(), fixes #1247"
Fix segfault in dyna_salt_remove_fp() when called from valid()
Revert "Revert "ssh_fmt_plug.c: fix memory leak in valid(), fixes
#1247""
mkvlib.c: improved sanity checking of Markov stats file, fixes #1467
mkvlib.c: adjusted sanity checking of Markov stats file
Add version.h.new to .gitignore and `make distclean`
detect.c: fix for `make -s -f Makefile.legacy generic
Remove detect.o build target from Makefile.in It is not needed for
autoconf builds.
unrarhlp.c: include "jumbo.h" to fix legacy build
genmkvpwd.c: inclcude "jumbo.h" to fix legacy build errors
wpapcap2john.c: include "jumbo.h" to fix legacy build
wordlist.c: fix legacy build warning
pp.c: fix error: assignment to expression with array type which, for
some reason, only occurred in legacy builds
john.c: fix legacy build warning
Makefile.legacy: add the JTR_GIT_VERSION logic
Makefile.legacy: `make clean` now removes version.h and version.h.new
XSHA512_fmt_plug.c: fix "warning: unused variable" for legacy generic
build
listconf.c: fix "warning: unused variable" for legacy generic build
Enable OpenVMS format for legacy little endian legac builds
Enable pkzip format for legacy builds
Makefile.legacy: fix librexgen detection (new path of librexgen.h)
Replace use of rm and mv in Makefiles with $(RM) and $(MV)
Adjust rexgen build instructions
options.c: avoid warning for legacy opencl builds
mscash2_fmt_plug.c: fix memory leak Found when testing ./john --fuzz
from https://github.com/loverszhaokai/JohnTheRipper/tree/fuzz_option
with an --enable-asan build
Add --enable-ubsan (UndefinedBehaviorSanitizer)
Makefile.legacy: fix -j handling for generic (best.sh) and other
targets
Finally fix memory leak in ssh format (get_salt) #1247 for real
listconf.c: add UBSAN_STRING to --list=build-info output
RAR3 (CPU and OpenCL): warn just once for pack_size or unp_size > 1 TB
(helps reducing noise when fuzzing these formats)
gpg-opencl: warn just once about currently unsupported hash algorithm
(helps reducing noise when fuzzing this format)
Add UBSAN_STRING to john's usage output
Replace "-autoconf" with "-ac" in JOHN_BLD definition
Adjust scope of some recently introduced warn_once variables
mozilla format: improve valid()
dmg format: improve valid()
vtp_fmt_plug.c: improve valid()
7z_fmt_plug.c: improve valid()
encfs_common_plug.c: improve encfs_common_valid()
gpg_fmt_plug.c and opencl_gpg_fmt_plug.c: improve valid()
opencl_7z_fmt_plug.c: apply recent CPU format fixes to OpenCL format
Improve valid() in agilekeychain and agilekeychain-opencl
Add run/custom.chr to .gitignore, fixes #1501
opencl_rar_fmt_plug.c: Fix valid() after ishex() changes
blockchain_fmt_plug.c and opencl_blockchain_fmt_plug.c: improve
valid()
cloudkeychain_fmt_plug.c: improve valid(), fix undefined behavior
androidfde_fmt_plug.c: improve valid(), fix undefined behavior
keystore_fmt_plug.c: improve valid(), avoid undefined behavior
kwallet_fmt_plug.c: improve valid()
putty_fmt_plug.c: improve valid()
rar5_common.h: improve valid()
ssh_ng_fmt_plug.c: improve valid()
bitcoin_fmt_plug.c: improve valid()
chap_fmt_plug.c: improve valid(), avoid undefined behavior
improved valid() for pwsafe (CPU/GPU), avoid undefined behavior
django_fmt_plug.c: improve valid(), avoid undefined behavior
efs_fmt_plug.c: improve valid()
eigrp_fmt_plug.c: avoid undefined behavior in valid()
Makefile.in: specify path for dynamic_big_crypt_generator.sh avoiding
this error: /bin/sh: dynamic_big_crypt_generator.sh: command not
found
bench.c: fix segfault introduced in commit ac6a0ea
keepass_fmt_plug.c: improve valid(), avoid undefined behavior
Fix segfault for ./john --list=subformats caused by commit ac6a0ea
Generate more test output for `make check`, for Travis build clues
Makefile.legagy: avoid --make_check usage because it fails in jumbo
More undefined behavior fixes in keystore format's valid()
LUKS format: improve valid(), avoid undefined behavior
mongodb_fmt_plug.c: improve valid(), avoid undefined behavior
office_common_plug.c: improve valid(), avoid undefined behavior
openbsdsoftraid_fmt_plug.c: improve valid()
wbb3_fmt_plug.c: avoid undefined behavior in valid()
add run/dynacomptest to .gitignore
With isdec(p), atoi(p) will not return values < 0, so drop some tests
Makefile.legacy: define HAVE_LIBSSL While legacy builds always used
-lssl, autofonf changes made including openssl includes depend on
HAVE_LIBSSL. This should also fix
https://github.com/openwall/john/issues/1526#issuecomment-120008446
Fix comments in ike-crack.h: s/HAVE_OPENSSL/HAVE_LIBSSL/
sapH_fmt_plug.c: avoid memleaks on invalid hashes
Adjust sap2john.pl comments
Make dyna-compiler-test.sh work with dash and some cleanup
.gitignore: add some dyna-compiler-test.sh temp. files that might
remain when dyna-compiler-test.sh was interrupted.
Bash completion: complete --regex= to --regex=alpha: and provide
completion of --regex=alpha: (using the existing
[List.Rexgen.Alpha:*] section names.
regex.c: make debug output depend on #if DEBUG and use stderr instead
of stdout.
Move "plaintext" format further down the list of formats
Move dummy format down the list
Makefile.legacy: repeat the Makefile change done in af07c69
Makefile.legacy: fix for opencl builds
options.c: Fix compiler warning for legacy opencl builds
doc/MASK: improve ?W example to make it clear that it toggles case
sapH format: set FMT_CASE and FMT_UTF8 flags
Fixes in comments: s/definded/defined/, s/defind/defined/
Bash completion: For --restore= and status=, ignore .[1-9][0-9].rec
Fix build without plugins (renamed some Keccak*_plug.c files)
Makefile.legacy failed after making some Keccak* iles non-plugins
dynamic_compiler.c: avoid segfault for expressions that neeed user
name or constants, but no salt. Example:
--format=dynamic='md5(lc($u).$c1.lc($p)),c1=::'
Add a SingleSkipLogin config variable
fuzz.c: fix a copy&paste error introduced in aeff562
Add LogFileProtect config variable
logger.c: remove extra empty line introduced in previous commit
bash completion for --show=invalid
blake2b-ref_plug.c: drop unused blake2b_clear_lastnode()
Fixes for legacy generic builds (make -f Makefile.legacy generic)
options.c: Fix compiler warning for legacy non-opencl builds
regex.c: fix a few remaining memleaks
include "misc.h" in several files using error()
skip john_register_all() for ./john --stdout
regex.h: check for rexgen version >= 1.3 instead of >= 1.1
doc/MARKOV: Don't abbreviate option names
doc/RULES: some minor adjustments
doc/DYNAMIC* and doc/MARKOV: use utf-8 instead of utf8 as encoding
name
doc/EXTERNAL: don't abbreviate --max-length and --max-length
Document that --min-length and --max-length values mean bytes, not
characters.
doc/DYNAMIC: Fix typos introduced in bec0a5
doc/ENCODINGS: avoid abbreviated option names and use = instead of :
to separate option names and values Also, use --internal-codepage
instead of the deprecated --internal-encoding.
doc/NETNTLM_README: use --format= instead of -format: and $ instead of
% as a command prompt
doc/PRINCE: Don'r abbreviate option names and s/crash-cource/crash
course/
doc/DYNAMIC_SCRIPTING: adjust format options
Fix configure breakage (UbSan) caused by commit 0fd8af10
Warn about disabled Stribog formats due to missing SSE 4.1
stribog_fmt_plug.c: One warning instead of three for missing SSE 4.1
Avoid clang wanrings for legacy builds
Bash completion: basic support for dynamic expressions
(--format=dynamic=...)
Bash completon: support completion for --fuzz=
options.c: upper case placeholders (--fuzz-dump[=FROM,TO])
fuzz.c: adjust screen output for --fuzz-dump
fuzz.c: add file size to --fuzz-dump option's screen output
fuzz.c: flush stdout before generating file.
chmod a-x src/escrypt/scrypt_platform.c
HDAA_fmt_plug.c: s/mem_calloc_tiny/mem_alloc_tiny/ because of memset
office_common_plug.c: s/mem_calloc_tiny/mem_alloc_tiny/ because of
memset
ssh_fmt_plug.c: drop memset after mem_calloc_tiny
Fix syntax error introduced in
e75c71c4056c5cc2ebcbc8283604e5839045fa11 and avoid some warnings
(-Wdeclaration-after-statement and "comparison of distinct pointer
types")
Two more instances od s/equivelent/equivalent/
doc/DYNAMIC_EXPRESSIONS s/--format=/--format=dynamic=/
doc/OPTIONS: document the meaning of negative --max-run-time values
Fix my typo in doc/OPTIONS
/qnx_common.h: avoid segfault in hash validation, fixes #2165
dynamic_parser.c: Avoid segfault
./john --list=format-methods: call fmt_done() for all formats
Revert "pem: bug in valid, which recent changes to hexlen function
made show up"
PEM format: avoid undefined behaviour of atoi()
PEM: There were some more atoi() calls which needed an isdec() check
KeePass: improve valid() to avoid ASan errors, see #2239
pem_fmt_plug.c: Add isdec() check for number of iterations
KeePass: Instead of error(), just tread non-inlined data as invalid
ssh-ng: reject unsupported ciphers as invalid
Bash completion: add completion for --fuzz-dump=
qnx: improve valid() to avoid segfaults
qnx: improve valid(), don't allow additional "fields" at end of hash
fuzz.c: add 8bit replacement character, add @ to list of separators
base64_convert.c: fix memory leak when using -r and -w options
Some more changes due to oclHashcat/HashCat being renamed to hashcat
Spelling and grammar fixes in documentation files, comments, and
string literals
Remove all references of CUDA from doc/BUGS
Increase Raw-SHA1-Linkedin's PLAINTEXT_LENGTH for non-SIMD builds
(#2530)
Add some known hash collisions to sapB format tests
Fix for make -f Makefile.legacy clean
Fixes for make -f Makefile.legacy generic
Legacy generic build: Test BF_X2 = 3 if BF_X2 = 1 was faster than
BF_X2 = 0
Legacy builds: adjust plugin format sequence (match autoconf seq.)
remove john.local.conf from Makefile.legacy
Makefile.legacy: fix dependencies
Makefile.in: fix dependencies
Reduce sizeof(saved_key) to PLAINTEXT_LENGTH + 1
Enhance Argon2 tunable cost reporting (#2742)
Enhance and unify tunable cost descriptions (#2745)
./john --list=ext-modes should only list standalone external modes
(#2775)
Add missing split() functions to convert hashes into canonical form
Format test: split() must add format tag to raw hashes
Cleanup binary() for some more formats
Fix bash completion for ./john --show=types-json
Ignore some files/directories when creating archives
Unify john version string logic, based on ideas of Claudio André
Makefile.in: workaround vim's broken syntax highlighting
Fix legacy build warnings introduced with commit 136a3e8
rar_common.c: Fix warning for !HAVE_MMAP case
wpapsk/wpapsk-pmk: add 802.11w. support for legacy builds for CPU
formats
Unify version strings for legacy builds
Remove duplicate #include preprocessor directives
Fix legacy generic build
Avoid strcasestr -Wimplicit-function-declaration for legacy builds
relbench: fix benchmark output parsing for changes made in commit
7187208
benchmark-unify: adjust mappings to current format names

Zhang Lei (108):


Resolve issues encountered when building for MIC.
Patches needed to build some libraries for MIC.
Update mpz_int128.c to refer to the bug of icc
Restore the lost two lines in config.sub
Use tab instead of spaces as indentation.
Put variable binding after './configure'
some fixes in the building system
syntax correction
OMP_SCALE tuned for MIC
Correct some indentations
some bug fixes
revert a mistaken fix
Add special compiler flags for MIC
use LibreSSL instead of OpenSSL for MIC
fix MIC intrinsics in sha256-ng & sha512-ng
distinguish the SIMD_TYPE name of MIC from AVX512
remove some trailing spaces
Add MIC support in raw-sha1-ng
Remove some trailing spaces
some minor fixes for MIC
fix sha256crypt & sha512crypt for MIC
fix other non-dynamic formats on MIC
minor error fix
further tune OMP_SCALE with MIC
Use gather instruction to optimize some code
Refactor code that uses __AVX512__
Some optimization with gather/scatter
append 'ULL' to some int64 literals
tune OMP_SCALE in SybaseASE
unify the interface of vcmpeq_epi8
fixing typos
some small fixes
several bug fixes for _mm512_cmpeq_epi8
remove the emulation of _mm512_cmp_epi8_mask
wordlist.c: a minor fix
mic.h: tune interleaving factors
add OpenMP support to sunmd5
sunmd5: simplify the OpenMP clause
sunmd5: rearrange code for OpenMP support
sunmd5: include <omp.h>
sunmd5: add OMP_SCALE
add interleaving to SHA512
Add interleaving to SHA256
fix interleaving in SHA512
set SIMD_PARA_SHA256/512 to 1
sse-intrinsics.c: fix a few indentations
mic.h: add missing help macros
fix interleaving bug in sapH
sse-intrinsics.c: use scatter instruction for AVX512 & MIC
sse-intrinsics.c: a few fixes for the use of scatter
README-MIC: add instructions for building OpenSSL
mic.h: conditionally define interleaving paras
configure: no need to set LIBS for MIC
tune a bunch of OMP_SCALEs for MIC
pbkdf2_hmac_sha1.h: disable vectorization of a loop
byteorder.h: replace strange int types with normal ones
fix configure.ac for 64-bit Power
Add AltiVec intrinsics support.
Add AltiVec intrinsics
ppc64.h: a few minor fixes
sse-intrinsics: clean up a few temporary changes
A few fixes for AltiVec intrinsics
pseudo-intrinsics: a few optimizations for AltiVec
pseudo_intrinsics.h: fix errors in last commit
pseudo_intrinsics.h: fix some indentations
fix an error introduced in commit 9783278
pseudo_intrinsics.h: optimize vtesteq & vtestz
dynamic: hopefully fixed MD4 problems on MIC. #1437
ignore *.dSYM files on OS X
rename sse-intrinsics to simd-intrinsics
mic.h: tune SIMD_PARA_MD4 & SIMD_PARA_MD5
Add ARM NEON intrinsics (untested).
Refactor pseudo_intrinsics.h
Add further support for NEON
Polish NEON's int64 intrinsics
Fix a few intrinsics for NEON
Include simd-intrinsics.o in a ARM build
Use NEON's vbsl to implement vcmov
Disable raw-sha1-ng for ARM due to a compiler bug
Optimize vroti implementation for NEON
mic.h: tune SIMD_PARA_MD4 & SIMD_PARA_MD5
Use SIMD SHA1/2 functions for episerver
Fix bugs in episerver
Add UTF8 support to episerver's SIMD build
Fix a bug in episerver
Add SIMD support to 7z
Revise ALGORITHM_NAME of episerver
7z: optimize SIMD performance
7z: optimize SIMD performance
7z: fix a bug that makes trouble when para > 1
7z: fix ALGORITHM_NAME
7z: cleanup after merging in magnum's code
7z: fix a bug introduced when merging code
Avoid unaligned access for some archs
7z: fix a bug in SIMD code
7z: alter PLAINTEXT_LENGTH for SIMD build
Avoid strcpy if key is already aligned in set_key()
Replace some `uint64_t`s with `ARCH_WORD_64`s
Add SIMD support to rar
7z & rar: use global array as vector buffer
Optimize MD5_I() for NEON and AVX512
Introduce more ternary logic instructions
Fix indentations in the previous commit
Fix a few untested code for AVX512
Use AVX512's ternlog instruction to emulate vcmov
Tune interleaving paras for ARM
Rename vtesteq_epi32 to vanyeq_epi32
Unify the format of NEON and Altivec's intrinsics.

Kai Zhao (84):


Update plugin.c
change 'int count = *pcount;' to 'const int count = *pcount;'
add check for hex string and lower case
Add siemens-s7 hash check in valid(). See #1094
Add check for get_binary()
Update siemens-s7_fmt_plug.c
fix valid bug for 7z_fmt_plug.c
Dominosec: Fix a typo leading to slight over-allocation.
Update kwallet_fmt_plug.c
Update mongodb_fmt_plug.c
Update nukedclan_fmt_plug.c
Must check cfg_database->list before cfg_add_line()
fix bug of androidfde_fmt_plug::valid()
fix valid() function in src/blackberry_ES10_fmt_plug.c
fix get_salt() in cq_fmt_plug.c
fix segfault: --field-separator-char=c
fix segfault: --markov::default:
report error message and exit when --input-encoding= a long string
Return CP_UNDEF when NULL == encoding
remove the useless parameter for sevenzip_decrypt() function
remove additional blanks
Fix spell mistake
Close #1242
Close 1230
StripZeros: Copy as much as ct2_size to ct2 to avoid buffer overflow
Fix SSH Format get_salt()
Fix SKEY Format get_binary()
Fix: 32bit build with GMP fails
Fix: RAR5 common valid(), change atoi to strtol
update coding style
Fix: ssh2john double free or corruption
Fix: ssh2john.c double free
Fix: gpg2john.c buffer over flow
Fix: gpg2john global-buffer-overflow
Fix: gpg2john global-buffer-overflow
Fix: gpg2john global-buffer-overflow
Fix: keepass2john heap-buffer-overflow
Remove assert(count == 1) by check the return of fread()
Check the buffer size before fread()
Check the buffer size before fread(): keepass2john
Fix: keyring2john remove assert by checking the return value
Fix: keystore2john remove assert and check buffer size of fread()
kwallet2john.c: Check the return value of fread()
luks2john.c: Check return value of jtr_fopen()
pwsafe2john.c: Remove assert by checking the return value of fread()
pwsafe2john.c: Remove unused variable
rar2john.c: Remove assert and check the buffer size before fread()
Use header.caplen instead of header.len
Use: warn_exit("%s: Error: read failed: %s.", argv[0],
strerror(errno));
Remove build warning
Fix: wpapcap2john.c buffer overflow
Use printf("%zu") to print size_t
Report error if config file does not exist when '--config=somefile'
Fix spell mistake, there is no BF_common_plug.c
Fix misspelled words
Fix typo: initailize -> initialize
loader.c: fix segfault introduced in commit ac6a0ea
Implement --fuzz options to fuzz formats' functions
Add doc/README.coding-style. See #350 and #1567
Add coding stlye: Add a blank line after variables declaration
Add --test-full option which crack max passwords at the same time and
can detect FMT_* flags
Remove build warning. Close #1605
1. Add FMT_8_BIT: has-160, pomelo, pufferfish, Stribog-256 2. Remove
FMT_8_BIT: VNC 3. Do not check FMT_8_BIT of crypt
1. Add a new test vector for stribog-512 2. Add FMT_8_BIT flag for
stribog-512
Fix test_fmt_8_bit() to handle all the cases
Add more test vectors for skein-256 and skein-512
Add test vector for vms
Move the new test vector to the end
Add comments for vms
Fix: is_key_right() ignores the result of get_key() when invoked by
test_fmt_case()
Fix the detects of FMT_8_BIT for crypt and wpapsk
Fix fmt_self_test_full_body() for dominosec8 and one grammatical
mistake
Add FLG_TEST_FULL_CHK in some cases which need FLG_TEST_CHK
Add FMT_8_BIT for dominosec8
Change s_size to err_buf in is_key_right() and fmt_self_test_full_body
of formats.c
Add FMT_OMP_BAD and FAST_FORMATS_OMP
Add test vectors for agilekeychain and lp
Add test vectors
Add test vectors
Add test vectors
Fix keyring crypt_all() which causes the cmp_all() always return 1
Fix the crypt_all() of vnc
Detect FMT_SPLIT_UNIFIES_CASE error
Change to 'FAILED' when there is a FMT_SPLIT warning or error

Solar (75):
Fix a bug in truecrypt for non-x86 archs. Closes #912.
Early (contest) version of AVX2 support for DES.
Fix a compile error in dynamic_compiler_plug.c
Relbench: Fix over/underflow when calculating geometric mean.
Fix benchmark_length for cq format
Fix OpenMP performance issue in Sybase-PROP. Closes #1673
OpenCL md5crypt: Optimizations.
OpenCL auto-tune improvement: Re-tune GWS with the tuned LWS and
considering the queried number of compute units.
Fix the "max. length in index 1: wrote 55, got 55 back" self-test
error seen for raw SHA2 formats after auto-tuning.
Intrinsics: Use vcmov (if not emulated) for MD5_I and MD4_G. Disable
support for SSEi_FLAT_OUT for MD4 & MD5 (currently not used anyway).
Optimize OpenCL MD4_G.
md5crypt intrinsics: Optimization for mmxput3().
md5crypt intrinsics: Use switch in mmxput3 (unless XOP).
Some fixes for huge input lists.
http://www.openwall.com/lists/john-dev/2015/09/15/5
Avoid ldr_remove_marked() when there's nothing marked for removal.
Implemented better prefetching, john-huge-prefetch.diff
john-huge-largehash.diff: Prepare us for larger bitmaps and possibly
hash tables and cleaning up our use of integer types a little bit in
general.
john-huge-loader-bypass.diff: Loader optimzations.
john-huge-loader-mt.diff, splitting initialization of bitmap and hash
table into 3 threads.
raw-md5: Optimize valid() and split().
Rules: Optimizations for repeated simple commands.
Correct an allocation bug for the "ShowUIDinCracks" feature.
john-loader-mem-save.diff
john-loader-pw_size.diff: "struct db_password" allocation.
john-huge-prefetch2.diff: Prefetch tweaks.
Bump unique's default buffer size.
Speed up --show.
john-huge-show2.diff + errata from
http://www.openwall.com/lists/john-dev/2015/09/20/3
john-huge-prefetch3.diff: Fix problems with prefetch. Closes #1771.
Spelling fix in a comment: equivelent to equivalent
Assorted spelling fixes
Fix for argon2. Closes #2650.
Fix several issues with OpenMP in multibit format. See #2846.
fuzz: suppress collision warnings
md5crypt-opencl optimizations favoring same-length passwords
md5crypt-opencl: choose slow path on len >= 10*4*8 instead of on x[9]
md5crypt-opencl: workaround AMDGPU-PRO libamdocl64.so segfault
Pack altpos and ctx_buflen into 3 registers
Enable explicit use of bitselect on AMD and of LUT3 on recent NVIDIA
Further specialization of the MD5 compression function
Keep the MD5 result in registers on every other iteration
Disable specialization to password length if it varies within the
group
md5crypt-opencl: Further specialization for password length 8
md5crypt-opencl: only detect divergence in 64 lid's near current
Add pristine upstream yescrypt
Force SKIP_MEMZERO for use in JtR
Upgrade from escrypt to yescrypt
Added ULL to the 64-bit YESCRYPT_ROM_TAG* constants
Updated copyrights, dropped obsolete comment in scrypt_fmt.c
Fix some unaligned accesses, enhance some salt_hash()
Have most "Raw" benchmarks of salted formats behave like "Many salts"
Documented the benchmark_length flags
Make "gost" format's "Raw" benchmark behave like "Only one salt"
Added the missing #include "arch.h" to "haval" to let it use OpenMP
radius: just output some recovered passwords when we can (#3862)
yescrypt: Explicitly use huge pages starting with 12 MiB, not 32 MiB
JtR hack: don't use OpenMP inside (ye)scrypt
scrypt: Support *_keys_per_crypt above thread count
Use yescrypt_kdf() instead of crypto_scrypt()
Fix many format-specific benchmark oddities (issue #3795, PR #3873)
aix-smd5: Trivial optimizations (#3876)
Workaround gcc 9 change for const vs. OpenMP shared() (#3884)
eapmd5tojohn: Use proper signal handler prototypes
[skip ci] Add usage examples to doc/MASK
ztex: suppress "Many salts" benchmarks (#3899)
Pass correct salt into crypt_all() in benchmarks (#3898)
[skip ci] Update README*
Fix "make -f Makefile.legacy generic" again, was broken by #3894
(#3914)
Update NEWS: mostly adjust magnum's added credits/years for style
(#3913)
Don't report virtual c/s if virtual time didn't advance (#3926)
md5crypt-long optimizations (#3930)
doc/RULES-hashcat corrections
Update more mentions of unreleased 1.8.0-jumbo-2 to 1.9.0-jumbo-1
OpenBSD-SoftRAID: drop benchmark comment (have tunable costs), limit
to first test vector
Re-enable 2x interleaving for SHA-1 on x86-64 XOP
doc/NEWS update (#3951)

Apingis (58):
descrypt-ztex format; includes library for operating ZTEX hardware and
bitstream (4MB). Requires libusb-1.0. Autoconf support.
HDL sources; Copyright and license information; small corrections
Improvements in ztex library (#2577)
ztex-bcrypt format (#2582)
error introduced in online conflict resolution - corrected (#2584)
bugfixes in ztex-bcrypt trigger another build attempt by CI.
Built new descrypt-ztex bitstream from existing design. - Added
programmable clocks - Minor improvements in the design - Fully
compartible with previous version
Added FMT_TRUNC
Rename for more consistent directory names; added
fpga-descrypt/README.md and summary
fpga-descrypt\ztex_inouttraffic_summary.html
Оn bad input packet, board correctly removed from operation.
If the only board fails, don't exit, wait until it's up
Ztex improve (#2711)
bugfix in bcrypt-ztex bitstream; $JOHN; --devices (#2756)
ztex-improve (#2760)
Fix typos (#2762)
Removed limit of (2^18-4) keys/board per crypt_all() (#2766)
doc/README-ZTEX; Simulation testbench cleaned up and extended (#2803)
sha512crypt-ztex format (incl. Verilog sources) (#3287)
Create README.md (#3288)
ztex formats with --test fix (#3294)
ztex_drupal7.c based on unified sha512crypt+Drupal7 bitstream (#3314)
FMT_TRUNC corrected (#3318)
firmware upload on a board with user-defined SN (#3321)
Separate keys_per_crypt setting for self-test (#3323)
docs update (#3320)
sha256crypt-ztex (#3374)
Improved ztex documentation (#3376)
Improved ztex documentation - 2 (#3377)
md5crypt-ztex, phpass-ztex
improvements to md5crypt-ztex, phpass-ztex (#3421)
handle limit on input (to the board) packet length; minor corrections
(#3422)
Checked, corrected occurences of PKT_MAX_LEN (#3423)
firmware version control (incl.new firmware), drupal7-ztex
PLAINTEXT_LENGTH increased to 64 (#3424)
sha512crypt-ztex improvement (incl.new bitstream) (#3425)
adjusted default frequency to match new sha512crypt/Drupal7 bitstream
(#3426)
--test works (also with --mask), displays correct numbers (#3427)
various ztex improvements (#3432)
sha256crypt-ztex new version (#3588)
default frequency; documentation (#3589)
README update
Improved sha512crypt-ztex (#3628)
README corrections (#3629)
[List.ZTEX:Devices] (#3637)
ZTEX device numbering: Minor changes, coding style corrections (#3643)
ZTEX: allow to specify SN in cmd-line if board is listed in config;
drupal7 min_keys value to reflect new bitstream (#3646)
bcrypt-ztex new bitstream (#3661)
new md5crypt-ztex bitstream with clock gating (idle current
consumption 0.4A); README update (#3684)
improved descrypt-ztex (#3702)
descrypt-ztex: Ensure updated pcount < 2^31; const qualifiers (#3710)
Don't register ztex formats, skip boards initialization with --show
(#3713)
Numbering of individual FPGA on the board from 1 to 4 (#3716)
{sha256|sha512|md5}crypt-ztex: salt_length=0: print warning, don't
process (#3742)
src/ztex/Makefile.in: added distclean target (#3774)
bcrypt-ztex handles > 512 hashes/salt (#3807)
bcrypt-ztex: fixed memory leak, correction in docs (#3828)
ztex improvements (#3833)
bcrypt >512 hashes/salt fix (#3839)
sha512common.h fix (#3845)

Fist0urs (30):
Initial commit.
Fixed bug in self-tests (thanks to @jfoug and @magnumripper)
Cosmetic changes
Added check while validating hash (thanks to @jfoug)
Added support to parse self-decrypting binary
Removed useless imports
Cosmetic changes
Added format for 16bytes-RawSHA1 AxCrypt in-memory secrets
Added doc to audit AxCrypt and its secrets
Added an important detail concerning cracking raw-sha1-axcrypt hashes
Removed unused variable
Fixed -mno-sse tests failure
Cosmetic changes in doc to fit .md style
Improvments of krb5tgs Add support to different ciphertexts input
format Get rid of max data len concerning edata Get rid of RC4
rounds Get rid of last hmac-md5 Performances increase
Fix split salt Change "$krbtgs$23$" to "$krb5tgs$23$"
Add verification of checksum if potential pass were to be found
Changed input format from edata1$edata2 to edata2$edata1 Thus had to
use dyna_salt (and put back edata max len definition)
Changed input format to fit upcoming oclhashcat one Get rid of max
edata2 Performance increases
Changed instructions to fit new format validation
Fix misnamed variable in parsing self-decrypting PE
keepass2john.c: incorrect parsing of keyfile within Keepass 1.*
Modified keepass2john and keepass_fmt_plug.c - keepass2john now handle
all different kind of keyfile within Keepass 1.x and produces an
unique type of output - keepass_fmt_plug.c was modified so that it
could handle all kind of keyfiles within Keepass 1.x + removed a
SHA256 of keyfile that is now pre-computed in keepass2john
Cosmetic changes in keepass2john and keepass_fmt_plug.c
Added support of keyfile for Keepass 2.x, both in keepass2john and
keepass_fmt_plug.c. Remaining only support of xml' keyfile
Added support for xml keyfile within Keepass 2.x
Add tool "kerberom" to /run This tool is aimed to retrieve ARC4-HMAC
encrypted tickets to be cracked with john
Add hash extractor + support for cracking DPAPI masterkey file from XP
to Win10
kerberom: new version adding Windows support and Windows implicit
(#2557)
Remove CRLF and trailing whitespaces in run/kerberom. Addresses #2559
(#2562)
Remove "kerberom" tool (obsolete)
Add documentation on Kerberos 5 TGS attack

Elena Ago (15):


BitLocker (OpenCL version): BitLocker password cracking tool (#2427)
New hash format (#2516)
Bitlocker-opencl: Various fixes, closes #2512. Closes #2546.
BitLocker: Extend OpenCL password length limit and use common tests
bitlocker2john code reworked (more check added). code cleanup and
comments in main attack kernel
Comment fix
Format flags
getopt_long removed (getopt instead), VMK comparison improved with
version check (should help to avoid false positives)
Add support for new BitLocker attack modes
Support new attack modes in BitLocker format
Various enhancements for BitLocker format
Autotune problem fixed: warn labels, split events, loop number.
Profiling only kernels and final transfer
bitlocker2john: file_length must be a long int to support large files
bitlocker2john can find recovery password even without user password
Code reworked - added two different salt and aes offsets

Aleksey Cherepanov (10):


added --show=types option; renamed m_allow_rawhash_fixup into
dynamic_allow_rawhash_fixup and made it global
removed unused variable in --show=types code
Add support for "lineage" hashes
move Aleksey's and magnum's code for --show=types[-json] from
ldr_split_line() into showformats.c
replace showformats_nis() and showformats_lonely() calls by unified
showformats_skipped()
rename --show=types-json into --show=formats; rename fields:
showtypes_json -> showformats, showtypes -> showformats_old,
meanings are changed too
replace "consistencyMark" with "skipped" in JSON, add rowFormats:[]
for skipped hashes; combined code into showformats_skipped()
document --show=formats option (#3773)
documentation for --show=formats: update after fixes for ztex formats,
added about ad-hoc format, fixed minor typo (#3858)
fix buffer overflow in HC rule p (duplicate word N times) cutting
length (#3856)

Jan Starke (6):


Update regex code for working with latest rexgen library from
https://github.com/teeshop/rexgen. Older versions of the lib are no
longer supported.
compiles cleanly with rexgen 1.3.1, contains version check for rexgen
removed error messages in case rexgen is not available
updated configure script
Using the new multibyte character aware API from rexgen (#2566)
Using the new multibyte character aware API from rexgen (#2571)

András Veres-Szentkirályi (5):


Raw-MD{4,5{,flat}}: handle uppercase hex digits (#2845)
added memcpylwr, first for rawMD5 only
merged further memcpy + strlwr calls
added strnzcpylwr for strnzcpy + strlwr combos
strnzcpylwr: copy zero terminator as well

Ivan Freed (4):


Utility to help with cracking DiskCryptor
JtR format for cracking DiskCryptor
Fix structure packing in DiskCryptor stuff
OpenCL support for cracking DiskCryptor

Christien Rioux (3):


Bugfix for path_expand_safe() returning offset from allocated buffer
(segfaulting when freed).
OpenCL: The HANDLE_CLERROR macros evaluated its input twice on error
fix for unroll bug

Sylvain Pelissier (3):


Add new version of eCryptfs file
Copyright Date changed
New copyright

Stuart Morgan (3):


Adapted the regex matching to cover the example /etc/security/passwd
file provided by IBM
The parser code did not permit this script to be executed because of
the way argparse works. When this was removed, the 'username'
matching code was not reliable in the event of trailing spaces or
linefeeds. I have replaced this code with a regex and otherwise left
it alone (with the exception of swapping .lstrip() and .rstrip() for
.strip())
Fixed command line arguments & added more informative help

akos.sereg (3):
Adding extra config parameter: shell script to be executed on
successful password crack
Concat safer with snprintf
Adding sample script to configuration file

campeador (3):
Change optparse to argparse
Change optparse to argparse in efs2john.py and openssl2john.py
Delete comments in efs2john.py

walkerk1980 (2):
Added LogFilePermissions, PotFilePermissions, IgnoreLogChmodErrors
Made suggested changes to logger.c, add temporary umask change to
allow log file creation perms, change to bitwise check from strcmp()
on LogFilePerms and PotFilePerms

Christian Mehlmauer (2):


update OSX compile instructions
Update .gitignore

Rob Schoemaker (2):


Add support for cracking AS/400 DES hashes
Update information about AS/400 DES hashes

Rémi Dubois (2):


Adding dynamic_1034 for PostgreSQL MD5 support
Additional comments for PostgreSQL

Sanju Kholia (2):


Port luks2john.c to Python
Remove luks2john.c (replaced by luks2john.py)

Shinnok (2):
Ignore .DS_Store files on OS X.
Properly format the .gitignore file.

Dennis Addo (2):


Rewrite common.c: isdec*() #2951 (#2979)
Update README.md #1972 (#3003)

Louis Granboulan (2):


configure: detect openssl installed by MacPorts on macOS (#3577)
HDAA: remove check that cnonce is lowercase hex

arcctgx (2):
Make sure wpapcap2john initialises allocated memory with zeros.
(#2429)
add support for more recent Gadu-Gadu login packets

chipx0r (2):
PKCS#8 DER Compatibility
try/catch certificate

Catalin Patulea (2):


radius2john: support for LINUX_SSL (cooked capture) containing IP
radius2john: preserve unknown vendor extensions when constructing salt

Michel Normand (2):


set ARCH_LITTLE_ENDIAN for powerpc64 little endian in src/ppc64.h
add src/escrypt/tests in .gitignore

philsmd (2):
pdf2john.py problem, commit efc315e926f521cc41c002742a994776edbacc1d
broke it
pdf2john /Encrypt /Length problem for PDF versions 1.1 - 1.3

smarteam (2):
Update INSTALL-UBUNTU (#1)
encodings file name

Alexander Cherepanov (2):


fake_salts.h: change cp1252 dash to '='
episerver: remove gratuitous memset in hash_type

Will Dormann (1):


Make input parsing more robust in sshng2john.py

[email protected] (1):
Add support for parsing AIX hashes in unshadow

antnks (1):
Wrong comment statement which may confuse: NONCE_COUNT should go prior
to CNONCE RFC: https://tools.ietf.org/html/rfc2617#section-3.2.2.1
request-digest = <"> < KD ( H(A1), unq(nonce-value)
":" nc-value
":" unq(cnonce-value)
":" unq(qop-value)
":" H(A2) The code which actually concatenates the values however
is correct: snprintf(salt.static_hash_data, STATIC_HASH_SIZE,
":%s:%s:%s:%s:%s", login.nonce,
login.nonce_count, login.cnonce,
login.qop, static_hash);

bigendiansmalls (1):
Add support for RACF KDFAES hashes (v0.16)
c0re (1):
pdf2john: Fix AttributeError

clavoillotte (1):
Fix preferred master key display in DPAPImk2john.py

cpsw (1):
Suggestion for code style (#2985)

jagotu (1):
Support DPAPI masterkeys from Windows 10 1607+ (#3419)

rofl0r (1):
use SHA1_Init() consistently with other SHA1_* functions

rschoem (1):
as400. added docs, updated copyright, added python script

terrybwest (1):
keystore-opencl format

Ryan Govostes (1):


Add support for hashes hidden by DeepSound

Albert Veli (1):


keystore2john.py: Python2/3 compatibility

Alex Stanev (1):


Add new tool hccapx2john.py

Alexander Haase (1):


Added support for HDAA as defined in RFC 2069.

AlzoxX76 (1):
Update INSTALL-UBUNTU

Austin Walker (1):


Fix error due to unassigned variable

Bernhard M. Wiedemann (1):


sort input files (#2560)

Bernhard Spil (1):


Replace deprecated des_ methods and calls that were available in
openssl/des_old.h with the DES_ counterparts.

Bigendian Smalls (1):


racf2john update to dump KDFAES hashes (#2510)

Chick3nman (1):
ethereum2john.py - warn users about risks associated with sharing
hashes

Christian Inci (1):


Fix for 31-character passwords on PKCS12 (off-by-one error)

Dhirendra Kholia (1):


Make ssh-ng saner by using a tiny ASN.1 decoder
Dmitri Lapin (1):
Fixed wrong header (was immintrin.h - AVX header)

Enter Name (1):


decodestring vs. decodebytes: Confirmed compatibility with Python 2.6
& 2.7 (#3347)

Francois Pesce (1):


Add a cracking rule that converts words in t9 (#3230)

Ioannis Profetis (1):


autoconf: Replace deprecated symbol check for OpenSSL >= 1.1.0 (#2558)

Ivan Novikov (1):


Add support for cracking ColdFusion 11 hashes

Julian J. M (1):
format openssl-enc. Implement ascii percentage check. (#3452)

Leorize (1):
idle: add Haiku support

Liu Yihao (1):


rar2john edge case fix. See #2209.

Lukas Odzioba (1):


Added salt length check

Mathieu (1):
Fix crash when receiving CTRL_C_EVENT on Windows from parent like
Johnny.

Matlink (1):
Rename HashCat to hashcat (#2463)

Maxime Goyette (1):


added a working python script to convert one or many radius pcap files
into john friendly hashes

Michael Kramer (1):


Kerberoast format added

Mickey Sola (1):


UnRAR code, update unrar code from upstream:
https://github.com/Cisco-Talos/clamav-devel/tree/master/libclamunrar
as of 2fe4942f7: * mass update of copyright headers * fix possible
out of bounds stack read. * bb11601 - check array boundaries in
unrarvm rarvm_getbits(). * bb11601 - revise buffer limit check due.
* unrar - adding proposed changes to fix RAR VMSF_DELTA Filter
Signedness error * Eliminating warnings, converting iterator
variables to size_t when used to compare against sizeof(). added a
couple of missing #includes. * adding back changes to eliminate
warnings from unrar files other than unrarppm. * Various other
manual fixes for our fork. See #2899.

Miha Zupan (1):


Improve path detection in telegram2john (#3301)

MrTchuss (1):
Support for FortiGate SHA256 format (#3297)

Noah Luddy (1):


Fixes command line prompt ambiguity

R. Brenton Strickler (1):


Explain DBError exception.

Ralf Sager (1):


Add support for cracking NSEC3 hashes

Agnieszka Bielec (1):


newest argon2 CPU version, no idea why virtual speed is 8 times slower
than real

Steven Noonan (1):


OpenCL: Add a missing space after -D__MESA__

TROUNCE (1):
Update geli_common_plug.c (#3864)

Tonimir Kisasondi (1):


Added keyring2john.py

Warren MacEvoy (1):


Update INSTALL-UBUNTU (#2625)

The following changes were made between 1.7.9-jumbo-8 and 1.8.0-jumbo-1:

magnum (1889):
formats.c: Only check binary/salt alignment if not using fmt_default_*
formats.c: Deliberately use misaligned ciphertext in self test
formats.c canary for binary/salt buffers
bench.c fix for salts that copy the pointer in set_salt()
bench.c: clean up that salt fix a little
bench.c: call set_salt() before bench_set_keys() (hopefully fixing the
last issues with formats having pointers to freed memory)
Fix compiler warnings for void pointer arithmetic
trip_fmt: trivial fix for declarations at block starts, for VC builds.
This is originally from Jim's patch d91bf42 but I dropped it in
bleeding at first due to a merge conflict and because the
offending lines are also declarations. However it turns out when
this macro is not defined, the lines end up as spurios ';' so it
upsets VC nonetheless.
Revert the last revertion. We only actually wanted it reverted in
magnum-jumbo
Loader.c fix for get_source()
Fix a silly typo in loader.c
mscash bugfix for codepage encoding
GOST fmt_default_get_source
Enable get_source() to raw_SHA1_LinkedIn_fmt_plug.c, and add
fmt_default_get_source to cuda_pwsafe_fmt.c
Bug fix for the previous patch
raw-sha1_li: Move key_count update to cmp_one to regain original
speed.
Revert "raw-sha1_li: always store complete (repaired) hashes"
fmt_default_get_source in Tavis' format
Fix get_source() for reduced binary in nt2, raw-md5 and raw-sha1.
Needed to move the get_source() self-test to after crypt_all()
test.
Added fmt_default_get_source to odf_fmt
Revert "reduced binary size" from formats that use get_source()
Revert "Fix get_source() for reduced binary in nt2, raw-md5 and
raw-sha1. Needed to"
Use the "repairing" version of raw-sha1_li.
LinkedIn: Off by one from ditching key_cound in favor of NBKEYS
formats.c: Tidy up the binary canary stuff and fix (my) indentation
-Wdeclaration-after-statement in default CFLAGS
RAR: make self-test comments more clear about what is what
params.h had a bad merge at 501c9626, this patch fixes it.
Fix for fake_salts.c that regains 52MB of BSS
define REPORT_OPENCL_WARNINGS in bleeding after it was undef'ed in
magnum-jumbo
get_source for radmin_fmt
Add MGF_FULL_CLEAN_REQUIRED to dynamic_1003
Damn mis-merge of params.h again. Is it meld or git doing the Wrong
Thing?
Add pfx2john to .gitignore
Add fmt_default_get_source to a couple of new formats
Enable source() for NT, NT2, raw-sha1, raw-sha1-linkedin, raw-md5 and
dynamic.
Enable source() for raw-md4
john-1.7.9.5-align-1.diff
loader.c: For Jumbo, we must populate up to fields[5] for l0phtcrack
to work
Merge fix for odf_fmt, and new format struct for agilekeychain_fmt
New format structs for truecrypt formats
New split() style declaration for hmac formats
v10 format struct for Dhiru's new formats
Make sunmd5 handle bleeding FMT_MAIN_VERSION as well as current. Also
fix some Linux warnings.
loader.c: The master.passwd test ate the pwdump format so uid was not
loaded properly for pwdump. Also, we accept empty LM but present
NT hash as pwdump.
opencl_gpg lacked forward-compatible format struct
Dual-version format structs for new cryptsha2 formats
loader.c: Bugfix for pwdump files when uid is re-inserted in source.
NOTE: This bugfix applies to core 1.7.9.6 too!
loader.c: Honor field_sep_char when rebuilding pwdump format.
OSX fix for rawSHA512_fmt
Suddenly, an is_aligned() macro in common.h start to clash with an
inlined function in formats.c. This patch undefs the macro
before declaring the function.
Merge branch 'unstable-jumbo' into bleeding-jumbo
Merge fixes for bleeding
Bump FMT_MAIN_VERSION to 11
Temporary move plugins to unplugged/ and fix all non-plugs.
formats.c Jumbo self-test: use crypt_all(count, salt) prototype.
Remove all atexit(done)
Move plugins back from unplugged directory
Have pwsafe-cuda default to one GPU.
New interface crypt_all() for remaining formats.
Update crypt_all() ABI to FMT_MAIN_VERSION 11 in x86-64.S.
mschapv2 bug fix. All CPU formats working now.
All CUDA and OpenCL formats fixed. Now builds fine.
Makefile: Add CUDA header search path
Regression bug fixes to keychain-opencl and agilekeychain-opencl.
More regression fixes, mostly to done() functions. We must basically
do a normal release_obj() and also release all kernels. Nothing
else. Also fixes to SALT_ALIGN.
More regression fixes.
More done() fixes to OpenCL formats.
Regression fixes. Automated editing is error-prone :-P
Comment out debug prints in pwsafe-cuda
Fix a bogus merge. In bleeding, we'll show OpenCL warnings.
Drop all #ifdef FMT_MAIN_VERSION except in dynamic. The latter should
probably benefit from new ones added instead, so it can be moved
between unstable and bleeding at will.
pkzip: SALT_ALIGN
Documentation update (bleeding-jumbo specific)
Enhance the --mkv-stats=FILE option so it can find a file residing in
john's home directory. Plus some other little fixes.
Regression fix for the valid-killer self-test. It's normally not
active so I missed it until now.
MPI and krb5-18/23 merge fixes.
SybaseASE salt alignment fix.
Minor OpenCL/CUDA tweaks. Enable advance_cursor() for CUDA-only builds
too. Also some typos: git grep -il tunning | xargs sed -ri
's/([tT])unning/\1uning/g' git grep -il plataform | xargs sed
-ri 's/lataform/latform/g'
OpenCL: Change the -DAPPLE for OpenCL build options to -D__APPLE__.
Bugfix for "make generic".
Commit 04cf5f1 hurt performance for dynamic because data locality
suffered. This patch reverts it and use a union instead, to
satisfy the compiler.
Relbench: Ignore the new "All nn tests passed self-tests"
Single mode: Optionally load the full GECOS field (before splitting)
as one extra candidate. This is controlled with PristineGecos in
john.conf (and defaults to disabled).
Use list_add_unique() for the optional PristineGecos loading.
Add a john.conf option for over-riding SINGLE_WORDS_PAIR_MAX.
truecrypt_volume2john had CRLF line endings.
clang debug target fix.
Salt/binary alignment fixes.
BFEgg: Don't convert to base64 in crypt_all(), instead implement a
proper binary() that does the reverse. Conflicts:
src/BFEgg_fmt_plug.c
Fix a logic error for some only-once warnings.
Use correct value of BINARY_SIZE: GPU formats, and a couple Dhiru
missed (?)
Revert "clang debug target fix."
Alignment fixes in xsha512, nethalflm and sabB.
formats.c: Never mind binary/salt alignment if size is 0.
Alignment fixes to WPAPSK/ZIP formats (including GPU versions). And
yet some tweaks to XSHA512 (MEM_ALIGN_WORD is wrong for 64-bit
when we return ARCH_WORD_32).
Revert "OpenCL: Change the -DAPPLE for OpenCL build options to
-D__APPLE__."
xsha512-opencl: Alignment.
formats.c: Salt/binary size self-tests (if -DDEBUG).
Use -DDEBUG for the clang-debug targets!
dummy.c: Unify MAYBE_INLINE with core CVS to reduce differences.
Office OpenCL formats: Better valid(), with CPU format as template.
RAR formats: Implement a real bastard of a valid(). I will soon start
denying having written it.
xsha512-opencl bugfix. My bad when fixing alignment.
Allow running an OpenCL binary without having any OpenCL platform
active.
Bwall's pwsafe patch broke builds using CommonCrypto. This fixes it.
Fix a hideous bug in rar2john introduced by in 216cc57. A variable was
declared as just "unsigned" (taken as int) instead of "unsigned
char" which lead to incorrect output. Not sure why the compiler
did not warn.
Correct ALGORITHM_NAME of mssql-12, pbkdf2-hmac-sha512 and the
Truecrypts. Use sha2.h for a number of formats that depended on
OpenSSL 0.9.8 (all but Truecrypt). Bump max length to 125
for pbkdf2-hmac-sha512 format. There's absolutely no point in
limiting it to 15.
Fixes for builds using Jim's homebrewn SHA-2.
Drop a lot of crap from the unused/ directory. Old files can be
fetched from git if needed.
mscash2: Drop no-op HAVE_OPENSSL lines.
OpenCL bugfix for legacy parsing.
Move --platform to "hidden" options with a note it's deprecated.
options.c: Print formats last.
Warnings from valid() should be suppressed if ldr_in_pot is set.
Fix for ldr_in_pot.
Introduce hash functions to hmac-md5.
Introduce hash functions to hmac-sha1.
Try to automagically detect and locate NSS, GMP and KRB5 libs, and
enable corresponding formats if successful. This is using Posix
find/grep and backticks. And pkg-config, if available.
MPI: Limit scope of an internal variable.
BLAKE2: Do not "secure zero memory".
SIPdump fixes (CppCheck). Also revert using MEM_FREE() and mem_alloc.
That is not a good idea for a stand-alone.
(Ab)use bench_running variable for keeping opencl_process_event() from
processing events while self-test is running. Otherwise a slow
self-test in combination with a short Save interval will thrash
the .rec file during start of a resumed session.
WPAPSK formats has a minimum password length of 8. This patch adds
code to john.c that enforces this. We may want to add min_length
in the format struct later on, and remove this hack.
WPA-PSK had a silly ESSID length limit of 14 that was already bumped
to 32 (the actual real-life limit) for the OpenCL version.
Moreover, it segfaulted on longer names. This patch bumps it for
CPU & CUDA too. For some reason the hccap buffer size is 36
(from hccap2john) so I kept that. Perhaps it's because it ends
up aligned including room for a NULL.
Decrease PLAINTEXT_LENGTH for all WPA-PSK formats to 64, because that
is the spec. limit. More interestingly, the spec. says the
characters set must be 0x20-0xfe (printable ASCII) so we also
unset FMT_8_BIT.
Add two WPA-PSK test vectors, including one for WPA (as opposed to
WPA2).
Get DMD5 straight, and add OMP support. This format was seriously
broken.
dmg: Make _memmem() static inline (will hopefully optimised away the
switch), enable 64-bit tests on 64-bit arch and disable
unaligned checks on platforms that does not support it.
dmg-opencl: Same fixes to _memmem(). ssh-ng: Provide an own
static inline copy of _memmem() instead of using one from dmg.
Bump OMP_SCALE for DMD5.
Format struct bugfix for DMD5 vs bleeding.
Assorted BINARY_ALIGN & SALT_ALIGN fixes.
More BINARY_ALIGN & SALT_ALIGN fixes. There a lot still to do.
Unify Kerberos names.
DMD5 format should not lowercase nonce hashes. They are used as-is!
hmac-sha1 bugfix for get_hash().
Cosmetical changes.
SAP formats: Minor fix mostly for satisfying Valgrind.
Fix an off-by-one in dynamic.
Office: Use calloc instead of alloc, just for muting Valgrind.
memory.c: When -DDEBUG, we turn mem_alloc_tiny() into a normal alloc,
to better track problems.
Drop some #ifdef DEBUG, or change them to specific ones like
RAR_DEBUG.
Wow-srp: This format is not case sensitive so unset FMT_CASE, and also
make the upper-casing in set_key() encoding-aware.
Wowsrp has a minimum password length of 8, so add it to the hack we
did for wpa-psk.
Get the "weird_fmt" back to unused/.
Fix V11 interface for the "weird" format. And optimise it a little
(lol).
Adjust a stack buffer after the recent bugfix to Office 2007. This
doesn't matter but it makes the code less confusing.
Get rid of all use of alloca() and dynamic size arrays. Also fixes a
bug in keyring format: The "crack array" was not always reset
correctly. Makefile: Add OMPFLAGS comments for OSX llvm-gcc.
Truecrypt format: Use signed int for OpenMP loop, as required by
spec.
DMG: Another alloca() found and changed to fixed size stack array.
Dynamic: make sure valid() is looking at de-hexified data if
applicable.
Pwsafe-cuda: Adjust BLOCKS according to count argument. Shaves a
minute from self-test and helps Single mode. Verified with the
Test Suite. Conflicts: src/cuda_pwsafe_fmt.c
CUDA formats: Adopt to count argument to crypt_all().
ZIP: Implement a proper cmp_all() instead of returning 1 and relying
on cmp_one(). This should be faster due to less function call
overhead.
Office OpenCL formats: avoid false sharing of crack array.
getopt.c: Allow an option named --foo to coexist with an option named
--foobar.
Minor fixes suggested by CppCheck. Nothing exciting.
Comment out unused functions in md5_eq.c
Unify dynamic_fmt.c among branches
bf-opencl: SALT_ALIGN fix.
OpenCL: Now that we always init OpenCL, try to be more tolerant
against device failures. This is not perfect but it works fine
for a situation my MBPr sometimes get stuck in - one device
stops working correctly but the other work fine. This is
probably not complete, especially if it's device 0 that get
stuck and device 1 that works...
Move WPAPSK test vectors to wpapsk.h and add a length 63 test.
wpapsk-cuda: Some compilers did not like having the test vectors in
wpapsk.h so we define it out when building kernel.
git grep -l '<stdint.h>' | xargs sed -ri 's/<stdint.h>/"stdint.h"/'
Fix a bug in dmg formats, and add debug output.
WPAPSK (CPU and GPU): Exploit same-essid weakness. Huge speedup when
applicable. See
http://www.openwall.com/lists/john-dev/2013/01/29/13 and on for
discussion.
DMG debug bugfix (duh!), and a new test that seems pretty generic.
dmg2john error message.
dmg2john: Temporary fixes to handle large files and iteration count.
DMG: Support iteration count. DMG-opencl: A bunch of fixes. This
format was not up to par with CPU format. Serious flaws fixed.
Add a known plain test for 8 consecutive nulls.
SIMD support for NTLMv1 and OMP tweaks for non-SIMD.
NTLMv1: Very effective hint to the optimiser in cmp_all(). And
benchmark using crippled plaintexts, so we measure real-life
performance.
NT2: Bugfixes to experimental OMP support (defaults to disabled).
DMG formats: Disable all but the NULL test, but bump that one to 16.
DMG: Re-enable the other plaintext checks (but not Apple).
DMG: properly re-enable plain checks, for OpenCL too.
NTLMv1: Bugfix, and compact the hash functions (before merging the new
stuff to mschapv2)
MSCHAPv2: SIMD support and exploitation of weakness just like NTLMv1
(the formats are very similar)
NTLMv1 and MSCHAPv2: reject hashes in valid() as hinted by Solar.
Bugfix for Jim's patch. Some debug functions were not static, and they
were included several times for GPU builds so the compiler
bailed. Also wrap that debug stuff in WPAPSK_DEBUG.
MSCHAPv2, NTLMv1: After the 3rd DES block check in valid(), cache the
indexes so we don't have to loop again in binary().
loader.c: Support "late reject" from binary(). If binary returns NULL,
the line is rejected.
NTLMv1 and MSCHAPv2: Make use of new late-reject feature, so it gets
tested. This means we no longer test the 3rd DES block in
valid() but instead return NULL from binary() if it fails.
Mute some over verbosity in OpenCL, and make the pwsafe format default
to auto-tuning.
pwsafe-opencl: revert a change by bwall that broke auto-tuning for
weak devices.
Truecrypt: replace a dynamic array with alloc/free. The format is so
slow this does not hurt performance at all.
OpenCL: Tweak find_best_gws. It gave up to early: We need to take into
account how much work was done. If it took 10x more time than
minimum but we had a 1000x higher GWS, we should definitely not
stop! This code needs more tweaking.
pwsafe-opencl: Now that common code doesn't give up too early, lower
max time for GWS enumeration to 2.4 seconds (should avoid
watchdog problems).
Revert "NTLMv1 and MSCHAPv2: Make use of new late-reject feature, so
it gets tested."
Revert "loader.c: Support "late reject" from binary(). If binary
returns NULL, the"
Add some self-tests for functions returning NULL.
NTLMv1 & MSCHAPv2: Use multiple blocks for the SSE version (still
single threaded) for bumping "many salts" speed. Actually we
bump it to the ceiling of what JtR can report - the output is
capped at 4294M c/s.
bench.c: Support benchmark speeds over 2^32.
NTLMv1/MSCHAPv2: Use memset for bitmap if more than 200 keys per
crypt.
NT2, NTLMv1, MSCHAPv2 tweaks for experimental OMP+SSE2.
Dynamic: Bugfix for MMX (I think it's right, I can't link it).
Raw MD4/MD5: MMX fixes.
More MMX fixes, including a cludge in the max-length self-test, for
MMX formats that use total_len.
dynamic.c: Bugfix.
(Alain's) NT format: Adjust x86-sse.S to new ABI.
Use DO_ALIGN macros in Jumbo .S files.
Optimizations for keystore format. Sub-percent speedup :-P
Portability fixes from building on ancient Sparc Solaris 32-bit.
MSCHAPv2 & NTLMv1: Emit a warning after loading 100 c/r pairs,
informing about slow loading and alternative formats.
Re-introduce the old versions as mschapv2-naive and
netntlmv1-naive. Also fix the DES caching in NETNTLM: it may be
called from prepare() so the cache must be checked not only in
binary() but also in valid().
Siemens-s7 format: Trivial improvements, and separate key setup from
salts. This made a 30-40% boost.
o5logon: Minor optmizations.
CUDA device list: Add PCI id to output, and replace a deprecated
parameter with a new, getting more detail.
Add any_cracked to a bunch of OpenCL formats that use crack array.
Conflicts: src/opencl_agilekeychain_fmt.c
src/opencl_dmg_fmt.c src/opencl_gpg_fmt.c
src/opencl_keychain_fmt.c src/opencl_zip_fmt.c
Add "naive" to the ALGORITHM_NAME for old load-fast-run-slow versions
of MSCHAPv2/NTLMv1, as in [32/64 naive]
Add wpapcap2john to .gitignore.
GPG: Optimizations, and bump max length to 32.
Endianness & alignment fixes from testing on a Sparc32.
More BE and alignment fixes. Some problems were in shared code in
unicode.c and the problems has been fixed backwards until now.
Most unicode.c functions convert/process UTF-16LE *regardless of
arch* and any endian fixes must account for that (normally none
is needed).
para-best.c fix for core changes.
Make itoa64 and the likes const.
Crypt-SHA formats: Use a ROUNDS_MIN of 1.
pbkdf2-hmac-sha1: Support OSX 10.8 from "the Dave Grohl tool" as well
as GRUB hashes, without converting them. We support hashes
longer than 64 bytes but we don't calculate/verify past 64 even
in cmp_exact() - the chance for such a collision is
slim-to-none.
pbkdf2-hmac-sha1: Do a complete calculation & verify for full binary
size, just for good measure.
pbkdf2-hmac-sha512: Improve the warning messages given for partial
matches.
Endian fixes for BFEgg, wpapsk, pbkdf2-hmac-sha152, pwsafe and shared
pbkdf2-hmac-sha1. Also a bugfix for openvms but it still
segfaults for me. This is now the only format that doesn't pass
self-test.
Drop run-time version checks for NSS that would be bad if run-time lib
is older than build-time one.
Mscash: Get rid of compiler warnings on linux-ppc32. Conflicts:
src/mscash1_fmt_plug.c
Alignment fixes.
Rules.c bugfix for -max-length. Format's max length is already
adjusted down to max-length, and the RULE macro would do an
unwanted incrementaion.
Use sha2.[ch] from unstable branch.
Revert the previous patch and use the SHA2 version that was in
bleeding instead, but properly indented. Also try to mitigate a
bogus strict-aliasing warning.
Mute harmless compiler warnings if MIN() already defined.
Better fix against that alleged strict-aliasing violation.
Move md5_eq.c to unused.
Remove md5_eq.o from Makefile.
formats.c: Stop trying to use system's strnlen(), instead always use
our supplied fmt_strnlen(). We could move it to misc.c too at
some point.
Revert SHA2 strict-aliasing fixes. They did not work at all for BE.
We can force Jim's generic SHA-2 with -DFORCE_GENERIC_SHA2. This patch
adds a way to force OpenSSL over CommonCrypto, using
-DFORCE_OPENSSL_SHA2.
Alignment fixes (bleeding only)
Alignment fixes
Mute a warning for generic target.
Merge the current MSCHAPv2 naive format (with FreeRadius support) to
Deepika's bitsliced format. Then drop the original format and
use BS format as "naive". Lots of whitespace changes, view with
-w.
DES BS plain SSE asm: Properly underscore P if applicable. It works on
OSX anyway but I'm not sure it will on others that
-DUNDERSCORES.
Alignment fix for mschapv2-bs
MSCHAPv2-BS: Merge two loops into one. This made a 5% boost here.
MSCHAPv2 BS: #ifdefs for FMT_ flags
Update CHANGES-jumbo.git & CREDITS-jumbo.
I always end up confusing crypt(3) base64 with MIME Base64: Add some
comments.
Fix a slight bug in sha512crypt binary() that could never surface. It
was processing the trailing NULL. Also drop some copy-paste
artefacts.
Some Kerberos libs are not thread safe, but fortunately we can find
out using the krb5_is_thread_safe() call. Conflicts:
src/krb5-18_fmt.c src/krb5-23_fmt.c
Decrease OMP_SCALE in a number of formats. This number needs to be
tweaked for each format, not just copied from a template.
Alignment fixes to Sybase & pkzip.
Sort load order of GPU formats so they are easier to find within a
full --test.
Merge branch 'bleeding-jumbo' of
https://github.com/bwall/JohnTheRipper into bleeding-jumbo
listconf.c: Rewrite the formats list function. It was overly complex
and buggy.
Add format groups "opencl", "cuda", "cpu" and "gpu" for use with
--test as well as with things like "--list=formats" and so on.
Also allow wildcard in the end, as in wpapsk* or krb5*.
listconf.c: Suppress leading space in benchmark_comment.
Document --format group aliases/wildcards.
pwsafe-opencl: Some platforms will complain unless OpenCL functions
are static, inline or both.
Put Sayantan's format last in registration, until they are fixed.
PWSafe-opencl: Fix a bug where device max sizes were not queried for
all kernels (now that we use a split kernel).
OpenCL DES: Honour device limit for LWS.
Shave 35 seconds off pwsafe-cuda self-test. I did this before but it
was recently reverted by some other patch.
Revert some previous "CppCheck fixes" that might affect performance
(and is not really needed anyway). Not sure what I was smoking
that day.
Drop bogus BE code from MMX path in nt2. It would never be used.
Documentation updates.
Add OSX clang-debug target.
Mute MSCHAPv2 warnings appearing due to valid-killer self-test if
-DDEBUG.
Previous patch made for warnings unless -DDEBUG o.O
Typo in fix for fix. Time to sleep?
Various constant arrays made const.
NT formats: Five percent boost for codepage encoding, from
optimizations in set_key().
raw-md5u: Three percent boost for codepage encoding, from
optimizations in set_key().
ntlmv1/mschapv2: Five percent boost for codepage encoding, from
optimizations in set_key().
mssql05: Optimizations in set_key() for codepage encoding.
DES-opencl: Safer LWS capping (ensure GWS is still multiple of LWS).
ODF formats (all three): Handle content.xml sizes less than 1024 bytes
correctly.
ODF formats: Make valid() a little more picky about hex length.
Add macosx-x86-sse2-opencl (ie. 32-bit) build target.
More uint64_t fixes.
Use "stdint.h" in pbkdf2-hmac-sha512 format.
DMG formats bugfix for "0 iterations" (assume 1000).
Truecrypt: Simplify cmp_all(), unfortunately for no performance gain.
dmg2john: bugfix.
dmg2john: Use base name of file name in output.
DMG formats: Serious bug fixes for 3DES v1 images. This fixes the
problem with false positives as well as an even worse one: false
negatives o.O
uaf2john: Do not support writing to outfile, only to stdout. And add a
make target.
wpapcap2john: Support multiple infiles. zip2john: Use base name of
filename for login field.
MSCHAPv2 & NTLMv1: Smaller hot array. 25% boost for many salts, a
couple for one salt. Also enable OMP for SSE2.
MSCHAPv2 & NTLMv1: Again disable OMP for SSE2 - it works fine on some
CPUs but not on others.
Merge MSCHAPv2_fmt_plug.c and NETNTLM_fmt_plug.c to one file:
ntlmv1_mschapv2_fmt_plug.c, sharing much of the code.
Make odf2john work with python 2.6 (as well as 2.7).
Change odf2john so we fall back to the deprecated function only if the
newer one is not supported.
Unicode fixes for NOT_JOHN
unicode.c: Support re-init of encoding.
mscash2-opencl honours LWS and GWS env variables, des-opencl and
bf-opencl honours GWS environment variables, added functions to
detect optimal GWS for bf-opencl and des-opencl
Fix SAVE= timer similar to Costin's patch.
Fixes for the recent timer changes.
If OS_TIMER, we only call status_get_time() if --max-run-time or
--progress-every was given.
Update CHANGES-jumbo.git and CREDITS-jumbo.
Document --request-vector and --request-scalar options in
README-OPENCL.
mscash2-opencl: Fix for forced LWS larger than kernel's max.
Document the OSX problem with OpenCL kernel header files.
Wordlist bug fixes: Reject wordlist containing NULL bytes, and handle
inconsequent line feeds (eg. spurious CR within a line). This fix
will do for Jumbo-8 so we don't introduce new problems.
Import cisco2john.pl from unstable.
Fix the postgre format: Rename it to postgres, including the tag. The
old format is still supported. Also improve valid().
Some format name changes to clarify what they are.
s/Staroffice/StarOffice/
Add CXX variable to Makefile. Add separate PROJ_ sections for C++ as
well as pcap, so John does not fail building even if they do.
Also add uaf2john and truecrypt_volume2john to the main targets
and move office2john to unused.
Bugfix in keystore2john.
uaf2john: Fix an aliasing problem.
Fix another warning in wpapcap2john (fread return value).
keystore2john: Fix another fread warning.
raw-md5-opencl: support max. length of 55 (the max that fits in one
round) while minimizing transfers to actually needed size. This
is a winner, although the boost is not quite as good as I hoped
for.
raw-md5-opencl: Limit GWS to what is supported by the index size.
Clean up and simplify the max-length self-test. The previous version
was confusing when debugging problems so we now do it after all
other tests.
Revert "Experimental: Let Incremental and Markov modes call
format->methods.clear_keys()". This doesn't seem to be of much
value, and if it turns out it is, we'll re-introduce it then.
Fix generic build.
Fix generic build after the timer fixes.
Move wpapcap2john from PROJ_PCAP to PROJ - it does not depend on
libpcap! Conflicts: src/Makefile
rawmd5-opencl segfaulted due to common-opencl missed calling
clear_keys().
formats.c: Minor Jumbo-specific bugs fixed.
raw-md4-opencl: support max. length of 55 (the max that fits in one
round) while minimizing transfers to actually needed size.
Revert 8e992e4 and instead bump RULE_BUFFER_SIZE in params.h by 4. We
should look into this more closely but this will do for now.
Makefile: Add a "Done." after building the pcap targets.
Experiment with error-tolerating crypt_all_benchmark().
Replace 4 duplicate definitions of _memmem() with a faster
implementation in misc.c. I believe the old code was O(M*N)
while the new is "somewhat like O(M+N) for most cases" yet is
shorter. Also, it is declared so that it's inlined where
applicable.
misc.h: include string.h for memcmp.
Unicode re-init bugfix.
NTLMv2-opencl: Use packed key buffer as recently introduced in
raw-md4/5. This also enables full-length UTF-8 support (up to 81
bytes of UTF-8 for representing up to 27 Unicode characters).
NTLMv2 kernel: Bugfix for no-byte-addressable code path.
pass_gen.pl: Support UTF-8 for -salt argument when -utf8 option is
given.
Stop user from trying to use any encoding other than iso-8859-1 with
formats that lack support for it. It would just end up in false
negatives.
Drop bogus FMT_UTF8 flag from Truecrypt.
NTLMv2 OpenCL: Use length 8 for benchmark unless -DDEBUG.
NTLMv2 OpenCL: Early transfer of keys.
Change MPI reduction for benchmarks for accurate average speeds. Also,
reduce the int64 properly (only affects 32-bit or BE systems).
Update README-mpi.
CUDA formats: Tweak default THREADS*BLOCKS so they work on weaker
devices.
NTLMv2 OpenCL workgroup size enumeration tweaks.
Dynamic: Change name of "salted Cisco PIX" to "Cisco ASA"
Add thin format for Cisco ASA.
Copy the improved ZIP valid() to the OpenCL version of same format.
Refuse to translate \x00 into a null in user classes.
Add external mode filters for UTF-8 validation. This is slow though.
Change self-test use of set_key("", index) into something that
actually passes a large enough buffer for any use.
Change self-test use of set_key(current->plaintext, index) into
something that actually passes a large enough buffer for any
use.
Bleeding fixes/unifying MSCHAPv2 & NETNTLM (naïve bit-slice versions).
Sparc fixes. Latest optimization of mschap/ntlm formats broke BE.
PDF format still used the Bad Idea[tm] version of valid().
Purely academic bugfix in common-opencl.c. kernel_source was not freed
in clean_opencl_environment().
Add missing deallocations in OpenCL DMG & RAR formats' valid().
formats.c: self-test tweaks and source formatting.
SAP F/G: Bump maximum length. We over-ran a buffer with the latest
self-tests.
Fix recently introduced OMP flaws in keyring format. This lifts the
limit of number of threads and reduces needed memory per thread
by a factor of 128.
Make raw-sha256-ng a non-plugin
Another 10% boost in raw-sha256-ng from set_key() optimizations.
Self-tests that make raw-sha256-ng fail. It doesn't support plaintext
lengths beyond 55, and something else is wrong too.
Workarounds for bugs in raw-sha256-ng. Until we get better fixes, we
decrease max. length to 55 and introduce a workaround for
cmp_all().
Bug fixes to thin dynamic formats PHPS, formspring, mediawiki, osc and
phpassMD5. They over-ran buffer when given bad input files.
More robust valid() in salted sha1 / nsldap formats.
Do some actual validation in SIP valid().
Actually, while at it we should just as well validate it is lower-case
hex.
WOW-SRP fixes. Not sure I found all, this is a mess.
Makefile tweaks for JOHN_CFLAGS etc.
rar2john big-endian fixes for Unicode filenames in RAR.
Canonical fixes for new tcphdr.h (failed on Sparc)
Revert "JtR-Dynamic_validation_raw_hashes-2.patch". It made things
worse.
Macros for prefixing MD[45]_(Init|Update|Final) with "john_" for
avoiding clashes with OpenSSL library.
Endian stuff.
Change all uses of <stdint.h> to our local "stdint.h".
Drop un-needed header in ssha-opencl.
OMP support for raw-sha512-ng.
Tweak OMP_SCALE for AMD.
Add macosx-x86-64-native build target. To use it, you need to copy
osx_as_wrapper.sh (from the src directory) to /usr/local/bin/as or
to some other directory (but the script MUST be called 'as') and
ensure this directory is first in your $PATH.
keystore2john: Use basename of filename for login field, and convert
to symlink to john.
Bugfix for keystore2john target.
Precedence: MSCHAPv2 should pick sploit version over BS one.
Generic crypt format bugfix.
Testpara vs. HAVE_OPENSSL fix.
kwallet2john: Handle multiple files, and strip suffix and path from
login.
truecrypt_volume2john: Use filename as login field, and convert to a
john symlink.
raw-sha512-ng: faster set_key().
raw-sha256-ng: OMP support.
Use -march=native for Linux 32-bit GPU targets.
Makefile fixes for OSX 32-bit cross-compile.
Bugfix for memory.c under -DDEBUG. In order to easier track bugs,
mem_alloc_tiny() is changed to a normal alloc. But it was supposed
to still maintain requested alignment!
Dynamic bugfix for $HEX$.
Change the way -DDEBUG affects mem_alloc_tiny(). The outcome is
practically the same but this is cleaner.
Revert "Change the way -DDEBUG affects mem_alloc_tiny(). The outcome
is practically"
Final canonical change for -DDEBUG versus mem_alloc_tiny.
Do not misalign SSE2 buffers when --save-memory=3 or above. The
previous fix did not catch all cases.
Mute self-test warnings for misaligned binary/salt if --save-memory
made the alignment smaller.
pbkdf2-hmac-sha512: Store canonical representation in pot file.
Keccak: header tweaks that make it build on SSE2, AVX or XOP. Maybe
not 100% but does work. Emits wads of warnings on AVX and XOP
though, and AVX is not faster than SSE2.
formats.c: Move max-length tests to before cracking tests. We must
verify that we can still crack stuff after using max-length
keys.
raw-SHA512-ng, fix a bug introduced in 14a5985
Max-length self-tests fixes. The current version still hangs BSDI
forever, I have absolutely no idea why. Working on it.
Fixed max-length self-test.
OMP_SCALE tweaks. Just picking a number out of thin air is actually
not really recommended.
More OMP_SCALE tweaks.
Relbench tweaks, for ignoring warnings.
OMP_SCALE tweaks. There are massive gains to win in some formats. All
OMP formats should be revised, but there are so many :-/
OMP_SCALE for raw-sha1-ng.
Copy the SSE2+ SHA-256 and SHA-512 from epixoip's formats to
sse-intrinsics.c before we start optimizing things away :-)
Revert "Revert cmp_all omp parallel, performs poorly on AMD"
raw-sha1-ng: Bump OMP_SCALE to 1024.
Make our usual MD5 format handle AIX's {smd5} hashes too, and drop the
much slower separate aix-smd5 format.
The pre-built (with-icc) .S files are now invalid, we need to generate
new ones.
Now that our MD5 format supports cracking AIX {smd5} hashes too, the
"FreeBSD" output is more confusing than ever. I changed it to
crypt-MD5.
I missed the "please keep this list sorted" :-)
Drop the intermediate encoding from aix2john.py and support the native
hashes in aix-ssha instead. We now lack some test vectors.
Minor fixes to aix-ssha.
aix-ssha bugfix for new binary().
Fixes for a couple of make targets.
Drop inconsistent paths in the auto-conf hack.
Re-worked valid() for aix-ssha. This version tests every field for
valid amount of valid data, where "valid amount" depends on the
tag. Also, bumps max. salt length to 24 as that is the actual
maximum. If Alexander can smash this, I give up :-)
No longer any need for passlib python module in aix2john.py.
Unicode fixes for office2john.py.
Dynamic: Move a definition to avoid compiler warnings.
Netscreen: Better valid().
DMD5: Better valid().
Drop the wchar stuff from gpg2john. 8-bit GECOS now works fine.
Putty: drop an unused variable.
Add updated sse-intrinsics-xx.S files. Built with -O2 using icc
13.1.1. -O3 (as we used with 12.1) took 47 minutes and was a lot
slower.
Merge branch 'master+patches' into bleeding-jumbo. NOTE: The charset
files are gone for now. The old ones are incompatible. For
testing, create new ones from the Rockyou list, or something.
Drop deprecated Incremental modes like "All6". You can now use
-min-len and -max-len instead. Also add an entry for
"custom.chr" which will not be supplied - it's convenient for
one-off charsets.
Add external mode filters Alnum-case (a-zA-Z0-9 and space) and ASCII
(0x20-0x7e).
Add interim chr files to bleeding. We now have -inc:utf8 and
-inc:ansi, while -inc just produces 7-bit ASCII like before.
Update CHANGES-jumbo.git and CREDITS-jumbo.
Update CHANGES-jumbo.git and CREDITS-jumbo for bleeding.
Merge branch 'master' into bleeding-jumbo
Merge bugfix for status.c.
Default to ISO-8601 style ETA output, in order to make it shorter.
Rename -inc:ansi to -inc:latin1.
Use a different ETA format string when less than 24h.
More restrictive valid() in nsldap, salted-sha1 and ssha-opencl.
Comment out dynamic_1028. It was using un-implemented functions...
Improve valid() in all MSCHAPv2 and NETNTLMv2 formats.
MPI vs. node/count fixes.
Bugfix for MSCHAPv2.
Node support for Markov.
doc/MARKOV note about UTF-8 filter.
Replace a dropped MPI header from wordlist.c.
Mute some warnings JimF were seeing about unintialized variables. They
are bogus from what I can see but maybe some compilers get dizzy
from the gotos.
Wordlist.c bugfix after core merge. --pipe was trying to fseek stdin.
Wordlist.c bugfix after core merge. --pipe must be treated as a
per-thread memory buffer.
sse2i_winfix.pl: Sort underscore macros, as they otherwise come in
random order from the hash, which is confusing when inspecting
diffs.
Minimize unneeded differences between Jumbo and core.
Wordlist fixes.
Status.c post-merge fixes for Jumbo.
Wordlist.c fixes after merges.
Wordlist.c fixes.
Node/fork/MPI fixes.
Post merge fixes. Some unifying of MPI vs. node/fork.
Do not close stdout under MPI. Until now, all nodes except root node
did (legacy from original patch).
Mute Keccak warnings on AVX builds.
Mute Keccak warnings on XOP and other builds.
Hopefully mute last Keccak warnings.
Unify MPI with fork. Still not tested at all.
MPI vs -fork fixes.
MPI fix. Now hopefully, "mpirun -np x" works the same as "-fork=x"
when used with -nodes option.
Warn about MPI save/restore being busted for now.
MPI vs. -fork fixes. Now might actually work, including resuming.
MPI documentation updates.
Fix for -fork vs. -max-run-time.
MPI: Read/write .rec file compatible with --fork.
MPI documentation: We can now start a session with MPI and resume it
with -fork, or the other way round.
MPI: Ensure that a resumed session runs on the correct number of
nodes.
Avoid #pragma warnings from clang et al.
MPI vs. fork fixes, and documentation.
Fix GPU builds after recent core merges.
MPI: Drop obsoleted output.
Revert "SIP valid() fix."
MPI: If OMP_NUM_THREADS is set, we assume the user knows what he is
doing. Here's how to pass it to remote hosts: mpirun -x
OMP_NUM_THREADS=4 -np 2 -host ...
Tune a couple of "FIXME" OMP_SCALE macros.
Add lanman.chr made from Rockyou (repaired, upper-cased in Unicode
stage, converted to CP858 [superset of CP437] and split at
length 7).
Wordlist: Fix a division by zero bug in get_progress.
Copyright blurb.
Minor cosmetical fixes to bench.c.
Bugfix in agile.
Fixes for generic make target (more needed).
raw-sha512-ng: Fix for 32-bit builds.
Update benchmark-unify. Some formats are not very comparable, eg.
Office, that got support for 2013 which is much slower. But I
added them.
Drop some no longer used MPI stuff.
Raw-sha1-ng: Fix for clang.
Typo in john.conf, and an added fflush(stderr) for MPI.
VMS: Better valid().
Drop unused variable from VMS.
Merge recent sxc fixes to sxc-opencl.
Merge a whole bunch of fixes made to CPU formats, to the OpenCL ones.
memory.h fix for generic builds.
Fix "testpara" make targets.
MPI fixes. After latest merges we had the MPI vs. OMP checks made
twice.
Tweak SHA1_SSE_PARA for latest ICC. 3.5% faster.
MPI fixes (output only on root node).
MPI: non-root processes now lock main rec-file in shared mode at first
read.
testpara32 fixes.
MPI: If more than one node, all must use LOCK_SH.
Merge branch 'master' into bleeding-jumbo
Document the new argument handling in rec_lock() and
rec_restore_args().
MPI: We no longer close stdout for non-root nodes, so we can output
cracks to it just like other builds do.
Override crk_help() message under MPI when applicable.
Do not use CommonCrypto for SSE2 builds.
Jumbo code audit: Remove unnecessary differences from core tree. Drop
some EOL whitespace. Update some documentation. Fix an OpenCL
problem introduced by latest core merges. Use UTF-8 encoding for
doc/RULES as it contains 8-bit characters. Drop some deprecated
information from doc/MARKOV (though we'll keep supporting it for
a while).
Bugfix for the avoid-CommonCrypto patch.
Variable changes in mscash formats, to avoid function name clashes
that seem to be the result of defining _DARWIN_C_SOURCE.
Variable changes in PDF, Tiger and Whirlpool formats, to avoid
function name clashes that seem to be the result of now defining
_DARWIN_C_SOURCE.
Updated doc/BUGS for bleeding.
Rename AIX format so they reflect their well-known tags.
Move a Jumbo tweak from signals.h to common-opencl.c in order to mess
as little as possible with core.
Raw-sha256: Support Cisco type-4 hash format. This is made in
prepare() so that any .pot entries are compatible between the
formats.
Bug fixes for previous patch.
Do not include os.h from signals.h. Instead, ensure it's included
earlier.
Make all definitions in EPI_fmt static.
Make MD5 helper functions in sse-intrinsics.c static and MAYBE_INLINE,
and drop unused debug/sse_debug() stuff.
New intrinsics .S files after recent change. 4-5% faster MD5crypt.
Re-enable NT format, that was MIA since 7112446.
Typo in README-OPENCL.
Fix a mistyped #error pragma, although it sort of worked as intended
anyway.
Hand-edited sse-intrinsics-32.S to fix an issue the sse2i_winfix.pl
does not catch yet: Labels that have ".." in them. Apparently we
can't use ".." in a macro name (for -DUNDERSCORES) so these
labels need to be renamed throughout the file. TODO: Fix
sse2i_winfix.pl so can do this in a generic way.
Add a missing linefeed in status output for --stdout.
listconf.c: Do not check for fmt_default_valid. It does not exist
anymore.
bash-completion: Drop trailing whitespace.
bash-completion: Redirect dynamic.conf errors to /dev/null.
The StatusShowCandidates config option showed "combinations" until
now, this changes it to use "candidates" in the format "43210p"
as we now have that figure handy.
The StatusShowCandidates line was accidentally dropped from john.conf.
Optionally reject printable binaries.
MPI fix for -reject-printable
Add --verbosity=N option. N is 1-5 and defaults to 3. For now, level 1
will mute printing of cracked passwords to screen. Level 4 will
add some extra output from OpenCL and level 2 will mute some
other. More to come.
Mute --stdout candidates with --verbose=1
ShowCandidates fix (cosmetic).
DES-opencl: Rename to descrypt-opencl, and new-style algorithm name.
Plus some trailing whitespace fixes that emacs did for me as soon
as I touched the file.
Dynamic: missing paren in BE code.
OS X specific build instructions.
Incremental: Correct progress for multiple nodes.
MPI: Tweaks for file locking problems during restore.
raw-SHA256-ng: Fix OMP bug in vanilla SSE2 code path.
Add ULL to large numbers in SHA512 code, muting loads of complaints
when building 32-bit.
Update .mailmap for git shortlog.
Update CHANGES-jumbo.git and CREDITS-jumbo
New charset files (because charset.c changed). Also a new Jumbo-only
"Alnum-case" incremental mode, that is upper+lower case and
includes the space as well.
Enable OpenMP for NT2 format. Works fine on intel i7, not so good on
AMD.
Add a linux-X32-native make target (for X32-ABI). For this to work we
also change ARCH_WORD to "long long" in x86-64.h.
Rename linux-X32-native target to linux-x86-X32-native.
Fix a problem when resuming forked or MPI sessions that use the
--encoding option.
Move crypt(3) format to lowest precedence.
Document some requirements in doc/INSTALL.
Possible bug fix for
http://www.openwall.com/lists/john-dev/2013/05/27/20, thanks to
Claudio.
MPI: More consistent exit handling.
Update MPI docs. Also, MPI was accidentally enabled by the last commit
so this is fixed too.
Drop all uses of alloca() and variable size arrays.
Fix bugs in LUKS format. Allocations did not account for padding.
Drop HAVE_ALLOCA_H from os.h since we are not allowed to use alloca()
at all.
LUKS: bug fix in valid().
Oracle11: Alignment fix.
hmac-sha-2 formats: Alignment fixes.
Document the OSX krb5-23 problem.
Avoid using GCC-specific pragmas on compilers that don't grok them.
100% white-space patch. I omitted dynamic as Jim's working on that
one.
100% white-space fixes (GPU kernels).
Change name of bf-opencl to bcrypt-opencl, like the CPU format.
Adopt to new incremental modes (incomplete).
Adopt to new incremental modes.
Use official lm_ascii.chr from core John. The rest of the
non-Jumbo-specific were already identical.
Reduce OpenCL formats verbosity, if requested.
xsha512-ng-opencl: Alignment.
Change --raw-always-valid (et al) to --bare-always-valid to avoid
confusion.
Documentation updates.
Add a line to --list=hidden-options:
Fix a cosmetic bug when listing formats with wildcards that match
dynamic.
Update doc/MARKOV. The examples are updated for version 1.8 output of
John (which incidentally simplifies the calculation part a lot as
we now get a proper p/s figure directly).
doc/MARKOV, change s/cracked/tried/ in a couple of places. They are
not synonyms...
doc/MARKOV: Yet some minor adjustments.
Even more changes to doc/MARKOV: We can use the -max-run-time option
instead of trying to find a proper markov level for measurement.
mkvcalcproba: Support reading from stdin.
genmkvpwd: Change %lld to %llu for correct printing of large numbers.
Fix progress calculation for wordlist mode without rules, when
memory buffer is in use.
Fix a couple of problems with raw-sha1-opencl. And while at it, bump
max length to 55 and use "compressed" key buffer for a nice
boost.
NT2 format: Only use OMP+SSE2 for AVX or XOP. Older CPUs won't do
well.
Dynamic OMP bugfix.
Wordlist.c: Fix for status overflow w/ millions of rules.
MPI: Fix cosmetic problem - help message printed several times.
Drop the word "intrinsics" from algorithm names.
FORMAT_NAME vs. ALGORITHM_NAME fixes.
Fix ALGORITHM_NAME for mscash2_opencl again, after Sayantan ignorantly
reverted it.
Fix alignment for all formats that had my name in them for any reason.
Lots of algorithm_name vs format_name changes.
DES-opencl bugfix. It was using atexit() instead of registering
done().
Use fmt_default_binary_hash_N() in more formats.
Fix a problem when using -fork with an MPI-enabled build. We
initialize MPI before even parsing options, so if/when we are to
fork later on, we need to tear that "1-node MPI session" down
before forking, or the forked MPI world will result in all sorts
of funny business. Tricky stuff.
Wordlist.c bugfix: Do not try to split-load a too small file into
buffer.
Add repeats16 and repeats32 external modes (from the obsolete contest
branch).
More use of fmt_default_binary_hash_N().
Even more use of fmt_default_binary_hash_N().
Correct MPI node number in pexit() message.
Minor cosmetic fixes and code cleanup.
Replace a check in gpg-opencl valid() that I accidentally dropped in
ddb17ef
Replace a check in gpg-opencl valid() that I accidentally dropped in
ddb17ef. Hopefully proper this time.
Update CHANGES-jumbo-git and CREDITS-jumbo
Add a comment in ext_init explaining a confusing bail-out.
Warn when resuming an external mode lacking resume(). For modes
that actually doesn't need any restore handling, add a no-op
resume() function to mute the warning.
Add a restore() function for KDEPaste. Very slow but better than
nothing.
External mode now refuses to resume unless a restore() function is
present.
Minor optimizations and corrections in 7z.
Endianness fixes in Blake and Keccak.
Set FMT_UNICODE in 7z formats, so we don't produce false negatives.
Bad wordlist.c bug fixed, triggered when running -loop with fork/MPI.
Make Incremental and Rules optionally less chatty.
Mitigate compiler warnings from last patch.
Proper Unicode (and codepage) support for 7-zip format.
Rename scrypt to django-scrypt, as we have more generic scrypt
inbound.
NT-opencl: Copy prepare() from CPU format. Without it, it did not
handle pwdump format files.
All NT formats: prepare() tweak for bare hashes.
WPAPSK-opencl: Change auto-tune so we target a loop kernel duration of
max. 200ms instead of a total crypt_all() duration of max. 10 s.
This makes for a 16% boost on my laptop, 1% on GTX570 and no
change on 7970.
KWallet bugfix for long keys. Kudos to Private2@GitHub.
Change django-scrypt to use the new scrypt code enhanced by Solar.
NOTE there may be more changes needed, I just made it build and
test OK. Are we using SIMD now as-is? Should we use escrypt_r()
instead?
Fix generic build after introducing fmt_default_binary_hash_N
functions.
Revert changes to DES, BSDI and LM formats from 831abd7. Never change
core files unless you really know what you are doing!
Drop incrementals "try" counter, which was naively updated at every
call to crk_process_key(), in favour of the now existing
status.cands which is better implemented. This also means I
could drop Jumbo-specific code for restoring progress -
status.cands is already handled by core.
Bugfix: The "3/3" batch mode output was mistaken for a percent figure.
The OpenCL initialization called from john.c is made passive, so it
doesn't wake up GPU devices unless needed. Queue and context
creation is postponed until opencl_init_opt().
Refactor some function names of common-opencl.c (prefix with opencl_).
Add some comments and drop some obsoleted stuff.
Do not initialize OpenCL devices more than once.
Fixes for mscash2-opencl. The existing code was bogus in several ways.
Bugfix for pbkdf2 unsplit OpenCL kernel. Bug may have affected several
formats where salt length was larger than 23. Thanks to Marcus
Desto for reporting.
Rename the super confusing SHA2 macro in pbkdf2-hmac-sha1 to
"SHA1short". Also apply the recent bugfix to CUDA and CPU code
too.
Fix CUDA pbkdf2 too.
raw-md5-opencl bugfix: You can't release buffers that are not
allocated.
No OpenCL initialization whatsoever until opencl_init_opt().
Fix for opencl_done() when not initialized. I thought it would work
as-is.
Add a 'hidden' build target macosx-x86-64-native-gpu.
Workaround for crappy OpenCL drivers (that don't understand compiler
options that are mandatory).
pbkdf2-hmac-sha256-opencl: Simplify cmp_all(). We don't need to test
more than 32 bits, the rest are checked in cmp_one() and this
will happen very infrequently.
Warn when b0rken device is skipped.
Various minor fixes for Sayantan's OpenCL versus OS X.
EFS bugfix: This is a Unicode format. Also make a local function
static.
Proper --encoding support for EFS. Also fixes a bug with uninitialized
data.
Improve comments in unicode.h.
Comment on a weird line in options.c that looked like some code fell
off.
Jumbo uses a shorter tab stop than core for the usage blob.
Revert "Jumbo uses a shorter tab stop than core for the usage blob."
Revert "added mask mode interface"
Revert "nt-opencl: fixed bug causing inefficient keys transfer."
Revert "mscash-opencl: compare on gpu"
Revert "Various minor fixes for Sayantan's OpenCL versus OS X."
Revert "mscash-opencl: optimization patch #3"
Revert "mscash-opencl: optimization patch #2"
Revert "mscash-opencl: optimization patch #1"
Revert "mscash-opencl: optimization patch #0"
Revert "New format added, mscash-opencl: ported directly from
mscash-cuda."
Revert "raw-sha1-opencl: cmp on gpu"
Revert "raw-md4-opencl:cmp on gpu"
Revert "nt-opencl: use opencl_init instead of opencl_init_opt"
Revert "nt-opencl: cmp on gpu"
Revert "raw-md5-opencl bugfix: You can't release buffers that are not
allocated."
Revert "Raw-MD5-opencl: status check bug fix"
Revert "Update opencl_rawmd5_fmt.c"
Revert "Raw-MD5-opencl: fixed memory cleanup"
Revert "Raw-MD5-opencl: compare on gpu"
Fix after reverts.
Revert "nt-opencl: no branching in coalasced loading loop."
Fixes and bug fixes for CommonCrypto builds.
pbkdf2-hmac-sha256-opencl: Immediate response to keystroke.
pbkdf2-hmac-sha256-opencl: Rename kernel since it's no longer
"unsplit".
Move 7z-opencl to unused/
Update CHANGES-jumbo.git (CREDITS-jumbo needed no change).
Never use CommonCrypto for mscash2. Fixes issue #362.
First draft of {SSHA512} (LDAP-style) format. OpenSSL only for now.
ssha512 format: Add OMP support and a couple more test vectors.
Add missing FMT_OMP flag to ssha512 format.
Fix a bug where -DDEBUG would cause an infinite loop in
mem_alloc_tiny() because MEM_ALLOC_SIZE is set to zero
(Jumbo-specific) and we ended up never breaking out of the while
loop. Thanks to bytebieger for noticing the problem and
patiently convince me.
Fix another potential problem with -DDEBUG vs. mem_alloc_tiny().
Print human readable OpenSSL version string with --list=build-info.
Update CHANGES-jumbo & CREDITS-jumbo.git.
Use the recent mem_alloc_tiny() bugfix for size zero even when not
-DDEBUG because returning a pointer might be asking for problems.
Add session_start_time external variable that maps to time(NULL) at
session start.
Another tweak to the mem_alloc_tiny() vs. -DDEBUG issue.
Bare minimum of fixes to bwtdt so it doesn't break too much.
Add some comments to bwtdt format.
Unicode bugfix for OpenCL Office formats.
Stack smash bugfix for putty format. Bug introduced in 79c871d, using
sizeof len fields (ints) instead of actual fields (arrays),
causing a buffer to be potentially 8 KB too small.
raw-sha1-opencl: Fix bug where obsolete code that only handled up
to length 23 was accidentally used.
raw-sha1-opencl: Drop obsolete code for short length.
Bugfixes due to format labels no longer lower-case.
Fix bug in formats.c where old names for descrypt, bsdicrypt and AFS
were used in strcmp().
wpapcap2john: Add SSID in "user" field for Single mode use.
hccap2john: Add SSID in "user" field for Single mode use.
Always -D_OPENCL_COMPILER when building OpenCL kernels.
Avoid a compiler warning for signed vs unsigned integer.
Whitespace-only in common-opencl.c
Allow calling opencl_get_user_preferences() with NULL argument.
OpenCL formats: Use more shared code from common-opencl.c
Tweaks for LWS/GWS environment vs auto-tune vs defaults.
Fix a couple compiler warnings about "array subscript has type ‘char’"
and other minor things.
Make Oracle 10 format more robust (allow lower-case salts even when
prepare() is not used).
Fix issue 328 using the new num_internal_keys format parameter.
Issue #328 revisited.
Issue #328 revisited again...
Revert "Issue #328 revisited again..." Revert "Issue #328
revisited."
Bump FORMAT_MAIN_VERSION due to 018a5ac.
Issue #328 hopefully settled.
Under --verbosity=1 we don't print passwords to screen when cracked,
so also mute the warning about them not being the complete list.
Add new masks ?s (specials), ?a (printable ASCII) and ?A (everything
between space (0x20) and 0xff).
NTLMv2: Bump max. salt size (username + domain) from 27 to 59
characters.
OpenCL fixes. Work around silly Intel driver issue with
-cl-strict-aliasing and some other weird issue with late nvidia
drivers not supporting CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV et
al.
OpenCL bugfix (common code): sequential_id was used where platform_id
was expected. Also a workaround for Apple's brain-dead driver
that apparently dies on dual spaces eg. between -DTHIS and
-DTHAT. That is just ridiculous.
Minor tweaks to common OpenCL code.
Added a function for tracing memory allocations in OpenCL.
Limit GWS in OpenCL formats using packed buffer, so we don't over-run
the 26-bit index.
Bump HASH_LOOPS for RAR OpenCL format to one optimal for Tahiti and
Titan.
RAR OpenCL: Add more profiling output.
RAR OpenCL: Back to 64x buffer
RAR OpenCL: Do blocklen sha1's at once.
RAR OpenCL: Get rid of HASH_LOOPS. Use a 64x __private buffer. Merge
that and IV into the loop kernel. Finally a significant speedup.
Various OpenCL formats: Use byte addressed stores if allowed (though
sometimes not if AMD). For RAR this gave 33% boost on AMD.
raw-sha512-opencl: Obey device/kernel limit for LWS.
Drop old junk from OpenCL kernels.
OpenCL RAR kernel accidentally got max length limited to 16. Bump to
22 again, it does not affect performance now.
When starting an external mode that lacks restore(), emit a warning.
Yet an optimization for RAR OpenCL, and a minor fix for done().
Minor tweak to RAR OpenCL. We now do over 20K on 7970.
MPI: Enable poor man's multi-GPU support. This should be available for
-fork too but it's very tricky to accomplish.
No-op MPI tweak + comments.
Add a self-test that ensures FMT_OMP_BAD is not used without FMT_OMP.
We could consider defining FMT_OMP_BAD so it includes FMT_OMP.
Fork: Enable poor man's multi-GPU support. This is experimental. It
postpones format init and that might have side effects. To mitigate
unnecessary problems, everything is just like before as long as
you don't use both --fork and --device options at once.
Don't cache CPU kernels. There were problems seen on Well's AMD
driver.
Incremental mode may get >100% progress because of uneven splitting.
Show that as 99.99% instead.
Inc progress: For some odd reason we sometimes ended up showing 99.99%
instead of DONE so cap it at 100.0% instead of 99.99%.
Document the "poor man's multi-GPU support".
Bugfix for "poor man's multi-device support" for --fork.
Cosmetic tweak for MPI + OMP notice.
Drop the use of OS_TIMER=0 for AMD OpenCL builds, but add instructions
for how to re-enable it.
wpapcap2john: Ensure we don't overrun SSID buffer with overlong tags,
and print a debug message. Thanks to bytebieger for reporting
this issue. We still do not know the cause. See
https://github.com/openwall/john/pull/366 for
discussion.
Mute a compiler warning for rakp-opencl.
rakp-opencl: Whitespace fixes and rename file according to standard.
rakp-opencl: Bug fixes, optimizations and packed key buffer.
rakp-opencl: Optimizations for HD7970.
Add macosx-x86-64-native-opencl target because latest Xcode broke
CUDA.
OpenCL: Fix for the fork/MPI "poor man's multi-device" stuff, so
formats that support multiple devices natively does not get
screwed up.
Export get_platform_id() from common-opencl.
Fix OSX build targets for CUDA for Xcode 5.0 and CUDA 5.
NVCC tweaks (mostly comments, but add -fmad=true) in Makefile.
pass_gen.pl: Only require libs that are actually needed for specific
run.
Fix an obscure bug in mscash where an overlong key would truncate
to 28 instead of 27 in UTF-8 mode. NT already had a fix for it so
unify the code for them.
Cosmetical fixes in common-opencl.c.
Protect a CUDA macro from being expanded to something not intended.
I'm not sure there was a problem, just saw the dangerous definiton.
Change malloc() to mem_alloc() in a bunch of formats. The latter sits
in memory.c and has error checking.
Align fix to CUDA md5crypt.
Update CHANGES-jumbo.git and CREDITS-jumbo.
Update CHANGES-jumbo.git (the unstable-jumbo part of it).
Add ?h mask. Hashcat defines it as [\xc0-\xff] but we use all 8-bit.
Mask mode: Add progress indicator and node/fork/MPI support.
Mask mode: Minor mods to get_progress().
Mask mode: Add support for restoring session.
Mask mode: A little faster node/fork splitting, avoiding modulo op.
Faster node/fork/MPI distribution for External mode. This changes the
session file format so it will be incompatible, so until we get
that sorted out it's ifdef'ed out and we use the core scheme.
Drop some contest edition artifacts from wordlist.c
External.c: Revise the "no modulo" node distribution patch so it
doesn't break session file compatibility.
Mask.c: Change node distribution so it matches external's new one.
mask.c: Remove redundant initialization.
Fix UTF-8 bug in mscash2 introduced in 42912b39.
sapG: Add FMT_UTF8 even though we are not FMT_UNICODE.
RAKP formats: Improve valid().
Fix buffer overrun in KWallet.
Fix a bug in eleven formats where cmp_one() and/or cmp_exact()
erroneously relied on cmp_all() having been called first. This
is *not* always the case, when bitmaps are used we go directly
to cmp_one(). This leads to FALSE POSITIVES but only likely for
broken hashes that are uncrackable anyway so it wasn't that much
of a problem.
Disable the "cmp_one() assumes cmp_all()" self-test. It needs to be
replaced with something more reliable, or enabled manually at
times.
Add FMT_OMP_BAD to nt2, md4/md5 and tweak Single mode performance for
nt2.
Bugfix for RAKP formats.
Replace Dhiru's RAKP format with a new one based on hmac-sha1 so
inherently SSE-aware. 3x speedup.
RAKP: Add OMP support.
Mute warning about lack of OMP support if format is OpenCL or CUDA.
Bugfix for 087fe65.
Allow use of alter_endianity() on archs that doesn't allow unaligned.
This function was originally only for MMX/SSE2 archs.
Fix a bug in RAKP for interleaved SHA1. Dang, that was hard to nail.
I literally had ONE BIT wrong %-)
RAKP: Optimization for "many salts". About 65% boost.
HMAC-SHA1 format: Optimizations and OMP support.
Add support for RAKP to pass_gen.pl
Fix bugs in pass_gen.pl HMAC generation for lengths over pad size.
RAKP formats: Minor fixes for very long usernames (salts).
HMAC-MD5: Optimizations and OMP support.
Changed SHA1_SSE_PARA to 2 for any gcc >= 4.5.4. Until now it was
1 for gcc > 4.7.0 but that seems to be slightly worse.
pass_gen.pl: Fix b0rken whitespace (tabs vs spaces) most of which was
my bad.
Revise format list in README-OPENCL, fixing issue #376.
Explicitly state that wpapsk formats do support WPA and WPA2. Also
prevent future bugs when doing strcmp() of format.params.label.
Improve valid() in netlm, nethalflm and mssql12.
Activate a modified (and temporary) valid-killer self-test. Move a
bunch of offending formats to unused.
Just because I used RAKP as a fool-proof example, it wasn't.
Improve valid() in krb5pa formats.
Chicken out on the ARCH_WORD change for X32 - make it conditional.
Never use DES BS assembler code for X32 (until it's fixed).
Minor tweaks to krb5pa-md5
UTF-8 bugfix for ntlmv2-opencl.
Add yet another debug function in memory.c, dump_text(ptr, len)
Bugfix for raw-sha1-opencl.
Include missing header for newly introduced isprint() in memory.c
krb5pa-md5-opencl format added.
Makefile bug, I used .c instead of .o which had strange results.
krb5pa-md5-opencl optimizations.
Some tweaks to RC4 to no avail.
krb5pa-md5-opencl: Support devices that can't do byte addressable
store.
Update CHANGES-jumbo.git & CREDITS-jumbo.
krb5-pa-md5 formats: Check another byte of known plain.
Bugfix for --skip-tests, fixing problems with numerous OpenCL formats.
Fix the bugfix in 06094f1b.
krb5pa-md5: Tweak RC4 on GPU, unrolling and working on 32-bits at
a time when possible. Some 50% boost seen here and this should also
make it runnable on devices that can't do byte-addressed stores.
Improved shared LWS test - use unique keys in case it matters for
thread diversion. For krb5pa-md5-opencl this is a 45% boost IRL
while the benchmark gets a hit. Also do a similar thing in local
GWS enumeration of some formats.
krb5pa-md5-opencl: Some more RC4 unrolling.
DMG formats: Merge recent change in CPU format to OpenCL. Use new
shared dump_text() for debugging plaintext.
Revert to using 4x for SIMD SHA-1, for gcc >= 4.7 unless AVX or XOP.
Show preferred vector widths with --list=opencl-devices. How the heck
did I miss this until now!? It's important information and we
can use the same call to default to vectorization - or not - at
runtime for some formats.
Make office2007-opencl choose vector width according to what device
says is best (up to 8 currently supported).
Make office2010-opencl choose vector width according to what device
says is best (up to 8 currently supported).
Make office2013-opencl choose vector width according to what device
says is best (up to 8 currently supported).
Make wpapsk-opencl choose vector width according to what device
says is best (up to 8 currently supported).
Make krb5pa-sha1-opencl choose vector width according to what device
says is best (up to 8 currently supported).
Deprecate --request-vector option and rename --request-scalar to
--force-scalar. OpenCL formats that support vectorizing will now
automatically detect vectorizing opportunity (by asking device)
and enable it with the recommended width. For benchmarking and
debugging purposes, --force-scalar will disable vectorizing.
Cosmetical changes to ntlmv2 & krb5pa-md5 kernels.
Revert to outputting to stdout (not stderr) for dump_stuff*()
functions.
Vectorize rakp-opencl and choose vector width according to what device
says is best (up to 8 currently supported). Also drop old
crappy find_best_kpc() function. We should use the shared one
but this format is not very critical on GWS anyway.
Update README-OPENCL regarding vectorized formats.
Add some device limits considerations in various OpenCL formats.
Add even more vector details to --list=opencl-devices.
Fix cosmetical bug in ntlmv2-opencl & krb5pa-md5-opencl.
Add __attribute__((vec_type_hint())) to vectorized kernels.
RAKP-opencl: Use partial results transfer.
Total revamp of mysql-sha1-opencl. Most notably we now use a packed
key buffer. Also sync test vectors between CPU and OpenCL
formats. And finally give them both a split() that unifies case
(to uppercase) which fixes a long standing bug.
MPI vs. --fork bugfix: When running forked, we erroneously called
nice() even when configured not to.
NTLMv2, krb5pa-md5 and MYSQL-SHA1 OpenCL formats: Change a workaround
for self-test inconsistency, and comment it.
Better description of MySQL formats vs. versions.
Add ciphertext example output with --list=format-[all-]details. And
change a bunch of formats so they produce that output without a
tag, fixing some bugs while at it.
Add "DCC" to description of mscash formats.
Assorted bugfixes from one-off temporary self-tests. Alignment and
split-unifies-case problems in phpass-cuda, mscash-cuda and raw
Keccak formats.
Drop unused declaration from NT formats.
mask.c bugfix when restoring string containing whitespace.
More effective vectorizing in wpapsk-opencl (avoiding conversions in
inner loop).
More effective vectorizing in krb5pa-sha1-opencl (avoiding conversions
in inner loop).
Add a global bool "ForceScalar" in john.conf that turn off vectorizing
globally in case you have a weak device that give "improper"
hints for our use (eg. if a side-effect of vectorizing is
register spilling).
Add a --force-vector-width=N option (for debugging) and add support
for all sizes to the vectorized OpenCL formats.
Shorten the format name of krb5pa formats.
Fix an over-allocation in krb5pa-sha1-opencl when running vectorized.
WPAPSK-opencl: Vectorize last bits of kernel. Write vectorized
keybuffer already in host code. Much nicer code.
Protect from future bugs using snprintf() instead of sprintf().
WPAPSK-opencl: Minor cosmetically changes unifying with krb5pa-sha.
krb5pa-sha1-opencl: Vectorize last bits of kernel. Write vectorized
keybuffer already in host code.
RAKP-opencl: Clean up code using macros.
Don't even try to support a vector width of 3. I can't see it being
worth the effort.
OpenCL vector code cleanup using macros.
NTLMv2-opencl: Vectorizing support.
Update README-OPENCL.
More OpenCL code cleanup using macros.
NTLMv2-opencl: bugfix for device limit consideration.
Common-opencl: Change an ambiguous function name.
Re-enable vector width 3. Most problems with it not working is because
our LWS/GWS enumerations pick unsuitable figures for that width.
OpenCL formats: Use shared functions.
RAKP: Use lower default KPC so weak devices don't die on us.
RAKP OpenCL tweaks.
common-opencl.c: Make it use its own helper functions w/ available,
plus a bunch of whitespace fixes.
RAKP OpenCL: Implement proper GWS tuning.
OpenCL formats: Use size_t instead of int in a bunch of places because
of problems where eg. a GWS of 32M x buffer size of 64 ends up
in 2G which doesn't fit in a signed int.
Duration limit tweaks to some OpenCL formats.
Add opencl_get_vector_width(device_id, size) function to
common-opencl.[ch] and have all vector-capable formats use it.
New OpenCL LWS/GWS enumeration scheme: 1. Enumerate GWS using *LWS
== NULL. 2. Enumerate LWS using the now known GWS.
md5crypt-opencl: Shrink arrays a little, they were not fully used.
And do not rely on optimizer taking away the redundant copy in
md5_digest(). 1-10% boost seen depending on device.
Make generic split pbkdf2-hmac-sha1 kernel more generic: - Support
arbitrary output length unless -DOUTLEN. - Support run-time
iterations count unless -DITERATIONS (a fixed one will make
for a little faster code).
Encfs-opencl: Use the generic split pbkdf2-hmac-sha1 kernel and
auto-tune to device.
mysql_netauth: Add a split() that unifies case, fixing issue #394.
Speed up self-tests significantly for OpenCL formats.
A couple of OpenCL formats needed workarounds for self-tests not
doing things like IRL.
Tweak for Intel HD Graphics in --list=opencl-devices. Apparently they
don't have a notion of SP, just EU.
More fixes after changing self-test scheme for OpenCl. Some of these
fixes only work around self-test inconsistencies but some were
real bugs.
Speed up self-tests for CUDA too.
Add -DJTR_RELEASE_BUILD which can change some defaults for releases.
Currently it's only used to disable the hacky backtick-auto-conf
stuff in Makefile.
Add self tests that ensure min/max keys per crypt are sane.
OpenCL raw MD4/MD5 formats bugfix for overtaxing key index.
OpenCL raw-sha256 & raw-sha512-ng workarounds for self-test
inconsistency.
raw-sha1-opencl: Bugfix for key index max size.
Fixes for building CUDA on OSX Mavericks. Hopefully it doesn't break
other versions/OS's (it shouldn't).
CUDA fixes, in hope it will work on both OSX and Linux now.
Very silly bugfix: OSX Mavericks' OpenCL drivers crashed and burned
when descrypt kernel sourced this header file, just because its
last line lacked a line feed!
Rename ripv2 to net-md5 and add a very similar net-sha1 format.
See issue #404
Makefile CUDA: Add natural path to nvcc with an NVCC macro, and
make the OSX -ccbin quirk a macro too.
CUDA fix for when nvcc is not in /usr/local/bin.
Fix bfcrypt-opencl for devices with too little local memory (auto tune
down or fallback to using CPU kernel).
Change some ambigous OpenCL function names:
get_current_work_group_size() -> get_kernel_max_lws()
get_max_work_group_size() -> get_device_max_lws()
Fix openssl-enc valid(). Also includes Awesome Debug Macro[tm] :-P
More fixes for bcrypt-opencl. It couldn't handle things like LWS=7.
DES-opencl: Get rid of hard coded stuff and fix device auto-tuning.
Update doc/BUGS.
bcrypt-opencl: Ensure GWS is multiple of LWS.
mask.c get_progress() bugfix: It was sometimes reading uninitialized
data, resulting in random progress output (typically 0.00%).
mscash2-opencl: Proper Unicode support.
des-opencl bugfix: Do not release kernel unless it was initialized.
Not sure if this was a driver bug here, but it won't harm
anyway.
Fixes and added info to --list=cuda-devices.
Cosmetical fix for --list=cuda-devices: Clock rates are base 10, not
base 2.
This is the very definition of a cosmetical fix.
Make rar-opencl count accelerators as GPU not CPU.
rar-opencl: cosmetical.
A small step towards a working mingw64 target.
mscash-cuda: Proper Unicode support, and bug fixes.
mscash2-cuda: Proper Unicode support, and bug fixes.
Revert a terrible change Sayantan made in ebc6a5ee. mscash2 supports
variable iterations count. Instead of b0rking the CPU format you
should fix your GPU formats.
mscash2-opencl: Minor Unicode bug fix, and some other fixes.
Add ALIGN_FIX in x86-64.S for MinGW win64 builds.
Typo in asm comments.
mscash2 formats: Add test vector for non-standard iterations count.
Minor change for pwsafe-opencl for use with Intel OCL SDK 1.5.
rar-opencl: Avoid using global memory in inner loop, and coalesce
state buffer.
wpapsk-opencl: Use a coalesced state buffer. 2% boost.
Drop ALIGN_FIX from win64 target and add it in a comment instead. It
is supposed to be applied manually if your build crashes in
DEScrypt or NT.
Minor tweaks and optimizations to new RIP/OSPF/BGP formats.
Fix some weird code in NT_fmt.c (purely cosmetical).
I made some curious testing with the classic "swap bytes without a
temp" in OpenCL RC4. It seemed slightly faster on Kepler but
slower on others.
Apparently Microsoft uses a different x64 calling convention. This is
an attempt to fix x86-64.S. We now use _WIN64 instead of
__MINGW64__ in case someone tries to do things with MSVC or
anything else.
Unify MAYBE_INLINE definition with core john.
http://www.openwall.com/lists/john-dev/2013/10/29/2
Drop the -mstackrealign from win64 build. It was not a correct fix.
And change 'strip' to $(STRIP) for easier disabling (define it as
'dir' or 'echo' or whatever when making a debug build)
Makefile: Update build alternatives descriptions.
Win64: One more non-volatile register was used. We redefine it for
_WIN64 to avoid preserving it.
x86-64.S: More redefinitions of registers because the previous patch
introduced a register clash on Win64.
Avoid use of "long", and similar fixes for Win64 and X32.
This might be what is missing for Win64 in DES_BS_ASM.
Linux-X32: Add an SSE2-only build (for testing) and finally solve
the assembler problems after I warmed up with the Win64 stuff.
Also more cosmetical tweaks to the make target list. Oh, and we
rename the targets back to linux-X32 as opposed to linux-x86-X32.
This passes the Test Suite.
Another try for Win64 vs. BSDIcrypt.
x86-64.S: Recent changes gave a theoretical performance hit due to
using r10 as tmp2. This patch rectifies that.
Revert "x86-64.S: Recent changes gave a theoretical performance
hit..." That was totally bogus. R8 and up have the extra
penalty. Add some comments instead.
x86-64.S: Fix a bug in Win64 handling where we redefined 'iterations'
(defined as %edi) without changing a corresponding push/pop of
%rdi.
x86-64.S: Code cleanup, revert to using unprefixed temp registers,
and overall less deviation with core.
Fix for 913e2fce - it broke 32-bit MMX/SSE2 builds.
RAR (CPU): Bump plaintext_length to max as this does not affect
performance.
Revert 40f5a93 and instead add a test for icc.
Move broken (to be fixed) formats from unused/ to broken/ and
delete some other old crap from unused.
Citrix Netscaler 10 format added.
Minor fixes to raw md4/md5/sha1 formats.
Improve Single mode seed from rar2john
Common OpenCL: Move variable declarations to C file and use external
declarations in header.
Proper vectorizing support for shared OpenCL functions.
Various OpenCL bug fixes for running vectorized.
OpenCL: drop the "show_speed" logic in favor of options.verbosity.
OpenCL formats: Use options.verbosity instead of other strange
mechanisms.
Rename "kpc" to "gws" in RAKP OpenCL to avoid confusion (maybe it just
adds to the confusion but at least it's in line with other
formats =).
JtR coding-style fixes.
OpenCL, shared auto-tune bugfix for vectorized runs.
OpenCL: Last case (I think) of dropping legacy magic in favor of
options.verbosity
OpenCL: reset opencl_v_width in case we load another format later.
OpenCL md5crypt bugfix.
RAKP-OpenCL: Always enumerate work sizes.
Use shared auto-tune for raw-sha1-opencl.
OpenCL: Faster auto-tune.
Add profiling timer resolution to --list=opencl-devices.
OpenCL autotune tweaks.
Better wildcard support in format names. Mostly for testing. Examples:
-format:*office -format:office* -format:raw*ng
Trivial optimizations for ssh-ng, 20-25% boost for AES, less for 3DES.
Multi-device bugfix for pwsafe-cuda.
pwsafe-cuda: Fix a compiler warning.
Silently ignore a missing john.local.conf.
Mute [incorrect] speed figures for --test=0.
Cosmetical change in mscash2. Code was hard to follow due to reuse of
a variable that the optimizer will take care of anyway.
mscash2-cuda: Support non-standard iteration counts. Funny thing, I
unknowingly fixed it in b7023df - it was a problem in prepare().
Use CPU format code in CUDA mscash2 - and fix a bug in the CPU format
that prevented it from loading certain format hashes. This
affected the OpenCL format too.
Fix a really nasty bug in mscash2-opencl introduced in e3289d3 which
made all salt lengths of exactly length 22 result in false
negatives. Test vector added to prevent this in the future.
Fix a bug in mscash2-cuda where UTF-8 salts would produce false
positives. We should to enhance the Test Suite to test this. The
CPU and OpenCL formats were manually tested too and they are fine.
Document recent --test=0 and wildcard features.
Drop -cl-strict-aliasing from OpenCL build options. It's deprecated.
Revert "added new format param"
Revert "Bump FORMAT_MAIN_VERSION due to 018a5ac."
Adjust unused RAKP format for FMT_MAIN_VERSION 11 in case someone
needs it.
Enable all test vectors for OpenCL and CUDA md5crypt.
Cosmetical typo in common-opencl.c.
Generic crypt: Allow setting actual salt with --subformat, and create
test vectors on the fly.
Generic crypt: Add support for SunMD5.
Enable use of SIGUSR1 for non-MPI builds too. It's weird having
different functionality. The need for SIGUSR1 with MPI comes
from mpirun's ability to pass SIGUSR1, but not SIGHUP, to the
processes.
Suppress "Press 'q' or Ctrl-C to abort.." message if we are reading
from stdin.
Print a warning when FMT_NOT_EXACT.
WPAPSK and other PBKDF2-SHA1 OpenCL kernels: Try to support old
devices (OpenCL 1.0). I don't have any so this is not tested.
Revert "WPAPSK and other PBKDF2-SHA1 OpenCL kernels: Try to support
old devices". This reverts commit f7189d8. It did not help.
Fix a typo in previous merge
Call common_init() before listconf_parse_late(), fixing a problem with
upcoming --list=format-tests.
Crypt format: re-add format list for bash completion.
Fix a (Jumbo specific) off-by-one bug in crypt format.
Crypt format bugfix (portability issue).
Use crypt_r for self-made test vectors in crypt format, if applicable.
Bugfix in raw SHA384/512 formats: Sign extension problem.
Use memset() instead of bzero() in Lotus85. bzero() is deprecated.
Crypt format: More workarounds for varying crypt() implementations.
I should get myself a Linux box too. Blind fix for Linux OMP in c3.
Better behavior for eg. "./john -t=0 -form:dynamic -enc:utf8" (mute
complaints).
Support wildcards in dynamic formats, eg. -form:dynamic_3*
Print PCI device id's in hex.
Add generic pbkdf2-hmac-sha1 format, variable rounds and lengths.
Due to a bug somewhere (else) you don't get good SSE speed unless
building for OMP (the latter is much faster even when running just
one thread).
Add ios7tojohn.pl and docs for it.
pbkdf2-hmac-sha1: Bump OMP_SCALE for better multithreading.
pkzip: Bugfix for #467. Two early rejection tests had to be disabled.
Hopefully they can be re-enabled by JimF after some tuning.
Makefile fixes (drop PROJ_CXX), and remove old C++ code.
pkzip format: Add a test vector with the hash from issue #467 for
future enhancements.
--list=format-all-details et al: Handle formats that lack test
vectors.
Add run/luks2john to .gitignore
Bugfix and tweaks to gpg2john
gpg2john: Use "Real Name" from key user data for login field, and the
rest for gecos field. As last resort (no user data) use base of
filename as login field.
Add note in BUGS about Intel OCL SDK 1.5, fixing #400
Update CHANGES-jumbo & CREDITS-jumbo
Make a warning() function in common_opencl_pbkdf2.c static.
mscash2-opencl: rename warning() to dcc_warning to avoid present and
future clashes.
self-tests: When valid() fails, print corresponding ciphertext.
Apparently, Windows does not provide SIGUSR1 so check for it before
using it.
Change description for pbkdf2-hmac-sha512 from "OS X 10.8" to "OS X
10.8+"
Update doc/INSTALL. OS X Mavericks can build macosx-x86-64-native
without any external tools or tricks.
Typo in doc/INSTALL
bench.c: Avoid a silly compiler warning on OSX that I won't bother
getting to the bottom with.
Prefer COMPUTE over DISPLAY (for AMD OpenCL). This means you can
eg. export COMPUTE and then run "ssh -X" without hassle. Also,
assume :0 if lacking both.
OpenCL: stdlib.h needed for setenv() on some systems.
OpenCL: _BSD_SOURCE needed for setenv() on glibc.
Fixes krb5 formats for issue #495.
Move (win)zip formats back in business. We now have warning output in
place for the false positives (04514d7). This does not solve
issue #434.
crypt(3) format: Only allow --subformat for benchmarks. Fixes #475.
Mask mode: Since we do not yet support --min/max-length, error if
used. Fixes #380.
gpg-opencl: Sync with CPU format. Fixes #482.
EPI alignment. Fixes #491.
Fix an old bug with CPstoreUTF8 vs. split hashes and --show. Some
cracked hashes with passwords containing 8-bit characters would be
output as partially uncracked in case CPstoreUTF8 was enabled.
Add a shared function testing a string for valid UTF-8.
Add a john.conf option for default input encoding.
Better detection of alternate help message for MPI.
ETA/progress fixes for incremental and mask modes when we are doing
more than one node's part of workload.
Minor fixes for ETA/progress for Incremental & Mask modes.
luks2john.c, use %zu for sizeof(). Closes #500.
Dominosec format: Add hash functions, partially fixing issue #495.
loader.c: Add ifdef'ed hash table distribution debug output. Closes
#496.
Dominosec: Use prefab binary hash functions.
EPI format: Add proper hash functions. Closes #495.
Move unused/aix_smd5_fmt_plug.c into normal source directory - it
supports length up to 125.
SAP B: Atom found a suspected over-run of sum20. This triggers that.
SAP B (comments only): The sum20 overrun is AOK, we do it like SAP
does.
Various changes for DMG. Avoid false positives. Hopefully we're not
introducing false negatives (None of our sample hashes produce any)
because now we're only checking for eight consecutive nulls,
either in main blob or secondary one.
Bugfix for multi-node Unicode init.
wpapcap2john: Print client BSSID to uid field, and AP BSSID to gid
and GECOS fields (in dashed and compact formats). Add WPA or WPA2
to the shell field and filename to last field. Add missing glue for
dupe suppression. Finally add a license blurb. Closes #516.
wpapcap2john: Add some sanity checks. Closes #518. Also cosmetical
fixes (license, whitespace) in WPA source files.
hccap2john: Add same extra output that was recently added to
wpapcap2john (BSSID's, filename etc) and handle multiple files
better (don't abort on error, print filename among warnings).
Closes #521. Also, support multiple entries in each file. This
was a weird limitation but it might have been due to Hashcat
legacy behavior (it initially only supported one per file).
Anyways it's lifted now.
wpapcap2john: Add support for Radiotap encapsulation. Closes #377.
wpapcap2john: Add support for Prism & PPI encapsulations.
wpapcap2john: Add a note in output about unsure authentications
(still crackable but might be an incorrect password for that AP).
Closes #519.
Cherry-pick 2475121 from Dhiru - Travis/Coverity support. Closes #512.
White space fixes (fixing over-long lines) in core files.
"Secure Mode" implemented. When this is enabled in john.conf, no
cracked password is ever printed, logged or stored in plaintext.
Instead you get an indication of length and use of classes. For
example, the password "Ignit3" would output as L6-?l?d?u telling
you that it's six characters long and consists of lowercase, digits
and uppercase characters. This closes #505.
The wrong default was used for SecureMode when not found in john.conf.
Sybase PROP fixes. Seriously, you can't expect a char to be aligned at
4 and an "XXX" comment is not a valid workaround.
Have --fork use SIGUSR1 for status, just like MPI always did. Ditch
some old MPI code as it can now use the same. This is to free up
SIGUSR2 for upcoming "restart" patch.
DMG formats: even more debugging
Always start a resumed session by emitting status.
Reload upon SIGUSR2 or --reload-every=N seconds. A reload is currently
the same as stopping a job and then resuming it, it's not very
optimized. Still, it can be invaluable eg. for forked sessions
with salts. However, the current implementation (execv) is not
supported under MPI, which is a major problem.
DMG-opencl add missing variable from 74ac62a.
Minor bug in "reload" patch: Some output to stdout was supposed to
go to stderr.
Cleanup of old weirdnesses: JimF has/had the habit of misusing the
loader options struct for options totally unrelated to loader,
and/or have applicable entries duplicated in that as well as the
normal options struct. Also fixes some over length comments.
Drop FMT_OMP from wpapsk-opencl: It doesn't use (nor need) OMP
anymore.
If we are a release build, only output OpenCL build log if there was
a fatal error (or --verbosity was increased) - not just for
warnings.
Fix torrents of warnings seen on recent OSX drivers for various OpenCL
kernels. This also works around several driver bugs!
Various OpenCL formats: Auto-tune bugfixes when LWS is supplied by
user.
Work around an OpenCL bug in OSX 10.9.2.
Fix for crude auto-tune picking a far too high value on Iris (Intel
HD Graphics 5000).
OpenCL: Add HD5000 info.
ARCH_WORD: Always use "long long" for LLP64 and "long" for LP64. We
could currently use "long long" for all of them but the future may
be different.
WIP: Add GPU sensor readings to --list=cuda-devices and
--list=opencl-devices as well as to status output, if required
library can be dynamically loaded.
Change the "reload" feature to actually just load what other processes
wrote to pot file, instead of aborting and restarting
completely. This is a whole lot faster and enables support for
MPI as well.
Add an ifdef around flock() for MinGW. This shouldn't result in
reading of an incomplete last line and even if it does, other
code should safely handle it anyway.
Coverity stuff update.
Various signal.c tweaks for MPI: Avoid signal loops when signaling
parent for reload. If running Cygwin w/ fork or MPI, save session on
key press in case a following termination does not save
properly. Also clarify MPI requirements in doc/README-mpi.
MPI: Add signaling of cracked hashes. There is also various changes to
the handling of --fork sessions in this regard.
Drop the experimental --reload-every=N option. We always reload at
session save (unless totally disabled in john.conf).
Do not re-read pot file lines that were processed by initial loading.
Drop an unneeded strnzcpy() during reload of pot file. Also adds debug
stuff to crk_reload_pot().
Pause/abort on filesystem stimuli. This defaults to
/var/run/john/abort and /var/run/john/pause but can be
reconfigured to any other files.
Recent structural changes and new features introduced some terrific
bugs. This hopefully fixes most of them.
Speed up pot reload (a lot) by using bitmap.
"Reload" code cleanup and optimizations.
Less timid --max-runtime: We now give a 3 sec grace period and then
force quit as if ctrl-c was pressed twice.
Keep loader's salt hash table for pot reload (updating it w/
required).
The documentation of --save-memory was duplicated in doc/OPTIONS.
Don't keep salt hash table if --save-memory=2 or greater, or if the
format doesn't have a salt_hash function anyway. Update salt hash
table after sorting (if applicable). Add some safety measures
to pot reload.
Add some OSX building tips to docs.
Pot reload: In Single mode there may be dupes, so in that case we
search for them.
Add options to john.conf for defaults and batch mode - Single mode
rules - Wordlist rules - Incremental mode
Various minor tweaks, and Jumbo code cleanup in loader.c (overlong
lines).
Optimizations (some were really bug fixes, but they only affected
performance) for pot reload.
Trigger a reload between batch mode passes.
Loader.c bugfix
Fix confusing mixup of variable names in wpapcap2john, and add ivs
(v2) support.
Loader.c bugfix bugfix :-(
Fixes for generic build.
Bugfix: Dominosec failed get_hash() w/ OMP. Closes #536.
OpenCL: override X11-forwarding.
Reload: Quirk for RAR, because it returns a slightly different salt
for each call to get_salt().
Disable OMP in Dynamic unless all PARA's are same. Closes #385.
wpapcap2john: Bump max handshakes limit, plus cosmetically.
NTLMv1/MSChapv2 "naïve" formats: mute a loader warning in OMP
benchmark.
Dynamic: Move the OMP disable workaround so it actually works after
a make clean :-/
Drop a test for --encoding that is problematic in case DefaultEncoding
is set in john.conf.
Reload bugfixes.
Fix for --encoding vs. DefaultEncoding and --test.
Set a label for the "dummy" stdout format.
Add default rules for -wo and -loop
Show "x password hashes cracked, y left" even for --show=left
Rename regex to rexgen everywhere, it's less confusing.
Bugfix: --show=left showed crack counts backwards.
Revert "Rename regex to rexgen everywhere, it's less confusing."
Add a separate --hashed-encoding option. Example: Your input files
(ie. login and GECOS fields) are UTF-8 and your wordlists are
too, but you are attacking LM hashes originating from a system
running CP850.
Add ability for --loop to join LM pieces automagically, and processing
them before the normal loop.
Mute encoding message if we're in default ASCII mode.
grub-opencl hotfix for "Joe".
Loopback bugfix for multi-node.
Change name of --hashed-encoding to --target-encoding.
Mute a message about intermediate encoding when not applicable.
Fix options flags for all old Jumbo options, catching incorrect usage.
Also allow -input-encoding as an alias for -encoding.
Fix a bug where the Unicode system was left undefined, and another
one that made our two Unicode-on-GPU formats fail for certain
encodings due to a brainfart.
vncpcap2john fixes (mixed declarations and code).
Encoding bugfix.
Mute intermediate encoding output when it doesn't really apply.
Add a verbosity config option.
Mute some warnings unless john_main_process.
Log what ruleset is used, and log "loopback" (not "wordlist") when
applicable.
More minor changes to "loopback" mode log output.
Allow defaulting an alternate incremental mode when encoding is UTF-8.
Allow size_t for -mem-file-size
Fixes for loopback reassembly.
Another bugfix for Loopback mode.
Mute a compiler warning.
Mute a compiler warning
64-bit bugfix. raw2dyna used %* supplying a pointer diff.
Fix for generic build.
Korelogic rules added as a separate config file. Not sure why we did
not include it earlier. This is the enhanced and bug fixed
version.
Korelogic rules: Shorter names for the components, and use .include
for the aggregate.
Pick john.conf default for LM formats more often.
Unicode: Best-effort conversion for invalid codepage, instead of
producing guaranteed garbage. Another option would be to truncate
at first invalid character, but for input conversions this approach
might be better.
Bugfix: Intermediate encoding was not triggered in batch mode.
Various tweaks & bug fixes, mostly for encoding.
Notification fix for intermediate encoding. It's incredibly hard
to get all details right. So many moving parts.
mssql12 will allegedly also crack SQL Server 2014 hashes.
xsha512 format will not crack OS X 10.8 or higher (those are
pbkdf2-hmac-sha512).
Print the cracked totals to stderr for --show=left, in case normal
output is piped somewhere. This addresses main part of issue #556.
Add a new super rule-set "All", that is Jumbo + KoreLogic...
Reduce chatter
Reduce more unnecessary output (encoding stuff).
Typo in usage for -costs. Untabify and add missing paren.
Rexgen update. This is for SVN rev 113 of rexgen, WIP.
Bugfix for tunable costs. You must not put anything after salt->keys
due to optimizations. Solar should have commented on that in the
header.
Optimize mask-mode order for 8-bit characters with ?A and fix some
overlong lines.
Slightly more OpenCL output at -verb:2
Add cprepair - a tool that fixes double-conversions to UTF-8 and/or
mixes of UTF-8 and a legacy codepage into clean UTF-8 (best
effort).
cprepair bugfixes and docs
Add last-line EOL for a bunch of files.
Add session file entries for implied options (default rules, wordlists
etc).
Add --mkv-stats to the storing of "implied options". Also fixes
inconsistencies with --mkv-stats option - it could not be used
together with --markov whereas I believe it should be the other
way round.
Add aes.a to .gitignore
Default salt sort to "most used first" for possible speedup in some
situations.
cprepair bug fixes and improvements.
cprepair: clarify an option in the usage blob. The purpose of -f
is to be able to eg. choose CP866 or CP737 over CP850 in case all
7-bit characters on a line is non-ascii letters. This will pick
the right decoding (out of two given) for cases like "Müller" and
"Стандарт" but for many words it will still just be a guess.
If we have reused salts, log when a salt is removed from list. This
is debug-only for now.
Fix finding librexgen under OSX.
Rexgen headers define UTF32 empty so workaround needed in unicode.h
Bail out if --regex used with --wordlist does not contain \0
Slight adjustment of rexgen logging for wordlist
Wordlist.c: More natural order of logging.
memdbg fix for cprepair
Fix problems with gpg2john that came (back?) after memdbg merge.
Rexgen "autoconf" fix for Linux.
Drop "no rexgen" log message unless verbosity was bumped.
Posix mmap() for wordlist mode - without dropping the old array
buffer. This gives up to a 3x boost, especially for --fork. The
buffer is read using a function similar to fgetl() but that
reads from the memory map and that works with up to 16
characters at a time.
Blind Windows fix: we should probably munmap() the same size we mapped
for good measure.
wordlist.c: mmap() bugfixes for edge cases (page boundaries, super
long input words, files not ending with LF and so on).
Fix some debug output that went to stderr while other of same kind
goes to stdout.
Add autoconf stuff to .gitignore
Fix for Travis/Coverity scan now that we use ./configure
Add autoconfig stuff to .gitignore, and add some macros we will
need later (ax_opencl.m4 and ax_prog_cc_mpi.m4).
Allow for NSS to be missing.
Rename configure.in to configure.ac - the former has been deprecated
since 2001.
Change final message from configure to something less confusing.
Rename HAVE_LIBCRYPT to HAVE_CRYPT for several reasons, mainly because
it's what core John uses. One other reason is that we no longer
really depend on the library per se, but the function (it might
be present in libc).
Whitespace fixes (a dnl comment was split by a linefeed)
Change final message from configure (again) to something less
confusing.
Autoconf fix for pcap.
Add CUDA and/or OpenCL stuff to JOHN_OBJS if applicable.
Decrease required version of autoconf to 2.68, for Travis CI to work.
Autoconf: Use proper OpenCL test macro instead of just checking for
lib. Also adds [suddenly] required autohell stuff.
Add real copies of compile, config.guess and config.sub (they were
symlinks).
OpenCL autoconf tweak.
Fix an OMP bug in krb5-18 and krb5-22. Closes #577.
Use double for ETA calculation, for much better estimate early on.
CUDA autoconf tweak
Fix redefinition warnings from blake2-config.h
The -DUNDERSCORES test needed '-' option to strings(1) because
"Unless the - flag is given, strings looks in all sections of
the object files except the (__TEXT,__text) section". It also
lacked placing a space at end of -DUNDERSCORES
Test disabling the automatic autoconf stuff in Makefile, in case
that's what make the build bot fail.
Adjust Travis for autoconf (do not specify make target).
Mute a red herring compiler warning in wordlist.
Correct some warning typos from configure
Avoid warnings from non-existing CUDA lib directories.
Rename "list alternatives" target (old default) to "help".
Cosmetic changes to configure.ac, and change a few [main] in
AC_CHECK_LIB() to something relevant.
OpenMP and OpenCL are defined as features (as opposed to packages) by
the prefab macros, so change MPI and CUDA accordingly. ICC-asm
is kept as a package.
Drop unused AX_OPENMP macro
Add a space after -lpcap, and add -lcudart if found/used.
Revert changes in SIPdump and vncpcap2john
An old PROJ_PCAP entry was still in Makefile.in, producing an
infinite loop.
Fix a bug handling default GPU device set in john.conf
Implement a method for soft-disabling of formats, in john.conf.
Add support for selecting OpenCL device as --device=accelerator
(can be abbreviated down to "acc").
Mute a compiler warning for possibly undefined variable in cost range.
Fix logic error in device selection abbreviation.
Add a stub Makefile, overwritten by ./configure but replaced by
distclean.
PCAP format fixes for legacy Makefile.
"make -f" is more portable than "make --file"
Documentation updates for autoconf.
Silence warnings from when CONFIG_MAINT is unset. It would confuse
users. Git never preserves timestamps. There are good reasons
but it's a nuisance.
Autoconf: Add a proper check for ARCH_INT_GT_32.
Autoconf tweaks: Use the HAVE_MMAP in wordlist.c. Enable fork for any
system that pass AC_FUNC_FORK.
Add AX_LANG_COMPILER_MS inlined in configure.ac (it was replaced
in the GNU archive by a more generic macro, but I don't want to
hack ax_opencl.m4).
Use -O0 during feature tests. Using -O2 is begging for trouble.
Add missing header for exit(3) in most autoconf AC_LANG_SOURCE tests.
Add a separate test for -march=native, closing #583. Also drop remains
of obsoleted JOHN_CFLAGS et al.
Hack workaround for Makefile vs. .gitignore
Conditionally include some standard -L and -I directories.
Fix MPI check. AC_PROG_CC_MPI replaces AC_PROG_CC so we must not run
the latter first.
Remove obsoleted stuff from para-best.pl
Fix X32 build. There were several issues but nothing major - except
maybe we can't add '-m32' or '-m64' from configure. That sort of
thing must be left to the user.
Add shorthand "--with-arch=opt" which adds opt to CFLAGS, ASFLAGS and
LDFLAGS. The best example might be "--with-arch=-m32" altough
many other uses are possible.
AC_USE_SYSTEM_EXTENSIONS must be run *after* MPI test, otherwise the
latter is screwed.
Fix for "light" cross-compile (eg. X32 or 32-bit, on a 64-bit host).
We must preserve CFLAGS but if we put -O0 in its tail, we override
any -O2 that come before it.
Autoconf: Portability fix. Note to self: Always exit() from main in
configure tests, never return. Do not include <stdlib.h> but
define "extern void exit(int);" instead. This is portable while
not producing garbage in config.log.
Start supporting cross compiles better. Add a --disable-native-tests
option but also disable them automatically if cross compiling
(as told by autoconf). This addresses some of #585.
Support more arch.h targets from target triplet, and get endianness
from it too. We can actually tell ARCH_ALLOWS_UNALIGNED from it too
but that is not implemented yet.
Support $2b$ hashes. Thanks to Kent Fritz for reminding us.
wpapcap2john fix. For some reason it still fails on BE.
Major autoconf arch.h tweaks. Separate generic tests from x86-specific
ones. Most targets should now have basic buildability...
Autoconf: Fixed reversed logic for icc asm.
Autoconf: Disable -march=native if we cross compile, dude.
Add autoconf_arch.h. Sooner or later we'll not need any other one
(which means we could drop it altogether and write configure output
to it instead).
Drop __ILP32__ from the "64-bit test". That macro does NOT tell us
anything about CPU width. It just show a data model that could be
X32 (which is 64-bit) or just about any normal 32-bit system.
Add a bunch of 64-bit compiler macros to test for in the 32/64-bit
test. And remove another incorrect one (_M_IX86).
Default to x86-sse.h for any 32-bit x86. We'll eventually pick the
right one depending on MMX/SSE2 etc. But this is the right one in
99.99% of cases anyway.
Autoconf: Fix reversed logic for pkg-config. It was enabled when cross
compiling, instead of the other way round.
Autoconf: Minor cross compile fixes.
Autoconf: Typo in comments.
Fix a minor bug in [Disable:Format] that made it impossible to
disable the first format (descrypt).
Implement the intended logic for 32-bit x86: First pick x86-any.h,
then if at least SSE2 is detected we change it to x86-sse.h.
Add cross compile versions of SSE/AVX/XOP tests.
Add AVX2 support for cross compiles.
Re-order non-native AVX2/XOP tests same as native ones, and do not
omit looking for XOP if AVX2 was found. Change output slightly
in non-native so you can tell the difference. Decrease
cross-compile to AC_CANONICAL_HOST - we are not building a
compiler (actually we are, but that one does not count)!
Fix for single mode segfaulting if pot reload deleted last salt. I'm
not quite sure why this is needed (it should already be handled)
but it fixed the problem.
Only try intel-specific tests on compatible CPUs.
Support <gmp.h> located in <gmp/gmp.h>.
Automatically set HAVE_NO_SSL_WHIRLPOOL if the lib lacks it.
Minor fix from Sparc/Solaris tests. The case of ntohll being undefined
should probably be fixed in some better way (handling BE). My
problem was that it already *was* properly defined beforehand.
Handle non-native OpenSSL check. This is an obvious start, more to
come.
Handle the case where pkg-config is not available.
Even better non-native OpenSSL check. We now don't just check for the
library (which almost anyone has) but also the headers.
Check for pcap headers, not just the library. Many people lack the
former but have the latter.
Autoconf: Fix for non-native builds. When using 'action-if-defined'
for AC_CHECK_LIB we don't get the default action so we need to
do it manually.
Add alpha.S when applicable.
Add support for x86 w/o SSE2. We should add a notice too, telling
user it might be time to buy some new gear ;-)
Stupid bug fixed in unrarhlp.h
Add AC_PROG_* and AC_PATH_PROG stuff, for aes/Makefile.in in
particular.
Print a summary after ./configure
Summary tweaks. And make -> $(MAKE) within Makefile.in
Makefile portability fixes.
Only try AESNI if intel family CPU :-P
Bugfix for OpenCL report detection (cosmetical).
Report AES-NI support
Portability fix for AES-NI support.
Drop obsoleted comments.
Missing rexgen and/or sse4.1 warnings no longer needed.
Crypt format OMP fix for Solaris.
vncpcap2john portability fixes.
wpapcap2john BE bugfix. Note to self: you can't do just
"JOHNSWAP(foo)" - you must do "foo = JOHNSWAP(foo)"!
wordlist.c: initialize a variable that gcc was worried about.
AES-NI: Pure whitespace fixes, for next patch to be readable.
Finally, add run-time detected AES-NI support for OS X too.
Fix AES-NI for 32-bit OS X. Also fixes some cross-compile issues.
Bugfix for forked resume.
Document the OpenCL device list round-robin behavior with -fork
and MPI.
Change all "test this && test that" to "test this -a that". And
replace "==" used within tests to a single "=" for portability.
Protect a test argument for including spaces.
Protect more test arguments just for good measure and fix the
ax_jtr_utility macros for DOS linefeeds and vast amounts of
spurious whitespace.
Auto detection for HAVE_SKEY. Not tested.
Handle CUDA 64-bit libs. We now test for CUDA after OpenCL because
the latter may find something that benefits the former.
Improve 32/64-bit CUDA and OpenCL library search. We now defer all
of it to the point we now CPU width for build.
Add some AC output for CUDA and OpenCL path enumeration.
Bump Jtr Jumbo version. Improve CUDA/OpenCL path enumeration output.
Cosmetical glitch fixed.
More summary output: Cross compiling, fork, MIT KRB5, PCAP.
Fix CUDA after f9711be broke it.
Bugfix for CUDA autoconf.
Include johnswap.h in a bunch of files that lacked it.
BE fix in ZIP format broke strict aliasing rules.
Drop "missing library" warnings during configure now that they are
listed in the summary.
Autoconf: Comment out many tests that we do not use the results from.
Just cherry pick them back if/when we actually need them.
AC_JTR_FLAG_CHECK and AC_JTR_SET_NORMAL_INCLUDES broke MPI builds
because they were called too early: The MPI/CC test *must*
preceed anything else that uses/checks the compiler and/or the
CC and CFLAGS variables.
Fix HDAA format for non-intel archs when OpenMP is in use.
Document Sparc build workarounds.
NSS ended up being required. PKG_CHECK_MODULES need an
action-if-not-found be it just a no-op.
Update docs for the fact MPI is not auto-enabled.
Add c3_fmt to summary.
Add missing entry in Makefile.in after merge.
Drop Mozilla format warning when not built - we already got it from
autoconf.
Support unconfigured "make clean" with a kludge in Makefile.stub.
Autoconf: Bugfix for native XOP test.
Document the fact that passing CFLAGS to ./configure will stop it
from adding "-g -O2" automatically.
Remove another improper adding of -O2. We just can't do that, it
breaks things.
Bugfix for ETA/progress output from wordlist mode.
Fix wordlist ETA for memory map mode.
Minor tweaks for ETA/progress calculations.
246f945 introduced a bad bug when -loop is used with a file name other
than the active pot file.
Fix AES-NI for X32 builds. This requires a new enough yasm, so we
should test for that - until then, just disable it.
Autoconf: Warn if we end up with no -O optimization option in CFLAGS.
Closes #592.
Deprecate openssl_local_overrides.h using autoconf. We keep supporting
openssl_local_overrides.h too for now, for legacy builds.
Stop using AC and AX as prefix for our local macros, those prefixes
are preserved. Add JTR_LIST_ADD macro for adding unique values to a
variable (think CFLAGS). Add a test for CommonCrypto and use it.
Autoconf: Improve robustness of JTR_LIST_ADD.
Hopefully fix S/Key format.
Autoconf: Recognize more optimization options (for the warning).
Drop bogus execute bit on a handfull of files.
Include arch.h header in a number of files using AC macros. Re-enable
a bunch of tests that were disabled for not being used (so
developers are able to start using them without changing AC).
Break some particularly long lines in configure.ac. And fix
cross compile issues.
Pacify clang compiler warnings.
"make install" now strips binaries.
Mute silly compiler warnings on OSX. @jfoug I LOVE this macro!
Add --disable-pcap to configure.
Autoconf. Drop the --with-arch option before someone starts depending
on it.
Drop all remaining use of += in autoconf macros, it failed on OpenBSD.
Fix bugs in SKEY introduced in a4ba81f. Now actually tested too,
on OpenBSD 5.4 (x86-64). Well, it builds - but it fails self
test. More to come. Closes #597.
More bugfixes to SKEY format. Did no-one use this format in years?
Bugfix in ODF format.
Pacify a compiler warning in wpapsk.h.
Pacify compiler warnings in pbkdf2_hmac_sha512.h.
Add ACX_HEADER_STRING macro (from GNU folks but not in archive).
Use it for C3_fmt to pacify compiler complaints on OpenBSD.
Quirks for OpenBSD autoconf.
Quirks for autoconf on OpenBSD: SIPdump and vncpcap2john.
Minor fixes for legacy builds vs. PCAP.
Workaround for fantastic systems not having grep -E.
Minor fix for AC c3_fmt.c
Add specific build instructions for Ubuntu Linux.
Cygwin workaround for vncpcap2john.
Do not add CPPFLAGS to CFLAGS, it doesn't make sense.
c3 fix for OpenBSD warning
Add a debug target. We always build with -g (stripped in 'make
install') but this target turns off optimizations and defines
DEBUG so code can adopt.
Add a fix for llvm-gcc-4.2 in raw-sha1-ng and make clashing structs
in lotus85 & vms static.
If -DDEBUG, warn when benchmarking (in case non optimized, or debug
code slows things down). Also "mark" debug build in the version
string.
Fix a missing '$' on a variable within OpenCL detection.
Fix for FreeBSD. Closes issue #566.
Fix a typo in cracker.c (HAVE_SYS_TIME_H vs HAVE_SYS_FILE_H).
Drop repeated info from o5logon-opencl format_name (vs.
algorithm_name).
The fix in 2080fc0 need to be applied to os-autoconf.h too :-/
Regex mode: Print a warning that we can not yet resume this mode.
Move CUDA tests to its own macro JTR_CUDA. Check for nvcc too, as
well as llvm-gcc-4.2 on OSX.
AC: cosmetical bugfix: JTR_LIST_ADD_RESULT did not show all added
items.
Mark a couple of variables as precious. That means they get included
in --help and we don't need to AC_SUBST them.
Since we list OPENSSL_CFLAGS and OPENSSL_LIBS as precious, we must
honor them also when pkg-config is not used. If they are not, check
for /usr/local/ssl (just because legacy Makefile did).
Use strip with no options. POSIX defines no options so this ought
to be most portable. Also, list S/Key in summary, not SKEY.
AC: Various Makefile fixes.
Use supplied flags for NSS if given, even if pkg-info is not used.
Closing #603.
Autoconf: Change some if;then;fi to AS_IF()
AC: Tweaks for allows_unaligned test and some cosmetical changes.
If OpenSSL flags was specified, trust them without checking. Also
fixes a type in check for ws2_32 lib.
AC bugfix for CUDA under OSX.
Bugfix: Move definition of DEBUG_STRING in options.c. Some compilers
choked on its misplacement.
AC: Improve CUDA test. nvcc can't use a gcc newer than 4.6 as backend.
AC: Improve librexgen test. It detected positive on too old versions
and failed during build.
AC: Don't bother checking for AVX2/XOP unless we have AVX.
Bugfix in wordlist.c: mmap() checked for error the wrong way.
If -DDEBUG, be more verbose about mmap() problems.
Only add -lpcap when linking files that actually need it. Closes #604.
Only add extra libs (including OpenSSL) where needed - often only
to john itself. Closes #606.
Improve AC handling of CommonCrypto. If we have SHA2 in CommonCrypto
but not in OpenSSL, we'll now detect it.
Add --with-commoncrypto and --without-openssl options. JtR can be
built with either or both.
Makefile: Fix linker flag order, some hosts are picky.
OSX 32-bit fixes. Our ALIGN() macro clashed with something on OSX.
The ALIGN clash was just too bad. Rename all instances to JTR_ALIGN.
Two formats were using openssl/sha.h instead of our sha.h.
Add a missing CFLAGS backup. They were restored to pre-CUDA...
Turns out *all* modes do an emma within get_progress() so this was
redundant anyway.
Yet another idiotic feature macro needed, this time for getting
memmem() on Linux.
Show used extension macros in AC output.
AC: Fix for Linux quirk.
AC: Mute red herring warnings.
Wordlist.c: cast printf arguments to mute warnings.
Drop -ldl from all targets but john itself.
Fix a bunch of mostly not-really-problems, and one or two real ones.
Detected by cppcheck.
list-build-info now shows basic info about seek, ftell and memmem.
And also shows if we are running OpenSSL, CommonCrypto or both.
Minor fix in Makefile.orig. We could end up defining eg. HAVE_KRB5
instead of HAVE_LIBKRB5 and overall it was a confusing mix. Same
for GMP.
S/Key format was listed as 'xyes' on OpenBSD.
SAP B passed salts to loader with possible garbage in the end
(variable length). This lead to loader potentially seeing
"different" salts even though they were the same. Closes #608.
Add GMP, KRB5 and yasm to Travis "build bot" config.
Try to not DOS the Travis build hosts %-)
Add a check for BIO functions in crypto lib.
Fix for legacy Makefile using X32 and AES-NI (needs bleeding-edge
yasm, untested)
See if we can test both with and without OpenMP in Travis CI.
Revert "See if we can test both with and without OpenMP in Travis CI."
We already do one build with clang, which is non-OMP.
Check whether yasm supports our target (needed for X32).
Solaris fix for large file support.
AC: Don't bother checking for nvcc backend gcc unless nvcc is found.
AC: Drop erroneous use of CFLAGS_EX
SKEY_jtr.h did not have an LF (not even a b0rken Redmond one) at EOF.
Fixes for systems lacking <stdint.h>, including adding SIZE_MAX and
UINT32_MAX needed for escrypt.
Workaround for old gcc having problem with unrarppm.c
AC, large file support bugfix: Move size check for size_t and off_t to
after we have decided on feature macros. They might very well
change!
Sparc bugfix (alignment) for mssql12.
AC: Linux 32-bit large file support bugfix.
SKEY valid() fix. It was WAY to promiscuos, locking on header lines in
TS.
I had to add a backslash to get this list working over two lines.
'dnl' did not do the trick.
Wow, that was clever. I tested everything except the format I fixed.
Bugfix for 1f341404. You can't use HAVE_ macros unless including
autoconfig.h...
The change for krb5 in 41969aec had the side effect LIBS was polluted.
Don't add OpenCL paths if --disable-opencl. Revert bogus changes for
OpenCL/CUDA vs HAVE_DL and handle it properly in common-gpu.c
instead.
I wondered where all crazy libs checks came from. They are
OS-specific! So let's do them only when appropriate.
Silly typo
Revert the redundant "=1" for -D. Drop a large block of comments
that does not belong in source. Change more 'dnl' to backslashes.
Revert to a somewhat safer krb5 test (hopefully working for MIT as
well as Heimdal now). If we do not even have the
krb5_is_thread_safe() function, disable OpenMP for krb5-18/23
formats to be safe.
Don't try to use HAVE_LIBKRB5 as an aggregate - create a new one.
Better Kerberos 5 detection. Detect MKShim and Heimdal.
Add krb5support to list of libs to search for Kerberos 5 functions.
Revert last patch and simply disable krb5-18/23 formats if Heimdal
was found (until we know, and handle, the differences).
Fixes for Heimdal Kerberos.
Add support for specifying AS and LD to configure.
Update doc/INSTALL for OSX builds.
configure re-built after 0cd5e47. Also, move x86-mmx.h back from
unused, and fix MMX targets so they use core assembler code +
Alain's NT and Deepika's DES.
Drop HAVE_SSE2 et al from blake2 code (in favor of standard ones like
__SSE2__). Also drop JOHN_AVX and JOHN_XOP from autoconf - they
were never needed.
AC: On OSX, detect when 'as' can't assemble AVX instructions and
inform about the workaround.
Workaround dynamic's requirement that MD4_SSE_PARA == MD5_SSE_PARA.
Add `--param allow-store-data-races=0` if supported. Closes #632.
Minimize diff against core.
Drop a redundant -DAC_BUILT
Drop a redundant ';' from mozilla
Add more granularity in SIMD algorithm name.
Dynamic: Hide OMP-only function when not building OpenMP.
Add a detail to OSX build instructions in doc/INSTALL.
Suppress some clang warnings.
Debug build fix for systems with no CLK_TCK. Closes #642
New plugin format, capable of optional plugs.
Convert non-plug formats to new-style plugins.
Convert all OpenCL formats to plugins.
Convert more optional formats to plugins
Plugify pfx, rar, ssh, wpapsk and zip.
Plugify mozilla format.
Fix for legacy Makefile vs. new plugin format.
Plugify HMAC-MD5, HMAC-SHA1 and raw-SHA0.
Plugify krb5-18/23 formats.
Plugify CUDA formats and add some missing glue for other formats
as well.
Minor fixes for new plugins.
Move raw-sha224/256 CUDA formats back to being non-plugs and fix other
issues. All known problems gone now.
Initialize the Unicode system before calling listconf_parse_late()
and speed up --list=format-tests for GPU formats.
listconf.c: Handle the case where field 0 is given but no others.
Example:

{WOWSIG"6D00CD214C8473C7F4E9DC77AE8FC6B3944298C48C7454E6BB8296952DCFE78D$73616C74",
"PASSWORD", {"SOLAR"}}
Some --encoding issues fixed (see #664).
Make it possible to build x86-64 without SIMD, for example like this:
./configure --disable-native-tests CFLAGS="-O2 -g -mno-sse2
-mno-mmx"
Add a note in Unicode external formats about them being generated from
Unicode version 6. Unicode v7 is pending publication, planned
October 15.
Some more or less no-op changes to SAP F/G format while investigating
a problem.
Minor changes to --encoding (et al) usage output.
Fix for x86-64 no-SIMD build, vs. new plugin interface.
OpenCL speed-ups for --list=format-[all-]details
pwsafe OpenCL kernel overwrites input buffer, so the "new_keys"
optimization introduced in 6a2e122a breaks the format unless
only one salt is attacked. Closes #640
pwsafe CUDA kernel only does one limb of SHA256 and its salt size
is 32 so max. plaintext length simply CAN'T be more than 23.
Closes #641
EPiServer: Fix a bug in binary() as well as some Unicode bugs.
Closes #643
CUDA SHA-224 was given a wrong binary size. Closes #645.
SAP F/G format: Support up to 40 characters of ANY length Unicode
for SIMD too. Fix a buffer-selection bug. Issue #662 is still yet
to solve.
sapG bug fix. Closes #662.
HAVAL fixes. Closes #652.
Reorder test vectors so an untagged one come first if applicable.
Minor Unicode/encoding fixes.
Move the recent --list=format-tests changes to a new function, and
use it also for --list=format-all-details.
Listconf: Drop trailing ':' from example cipher text.
Fix peculiar bugs introduced by 5bd568d1
OpenCL: Make sure our COMPUTE/DISPLAY tweak works for
--list=opencl-devices
Fix a bug in KRB4 that made it unreliable unless used with a
single afs salt or with des salts only. Closes #653.
It turns out krb5-23 are just NT hashes. Drop the krb5-23 format
(it was a lot slower) and change kdcdump2john.py so it outputs
$NT$ tags for those.
Office2007-opencl: Some debug stuff for future use. And drop a segment
of code if not needed (depending on HASH_LOOPS figure).
Add a check for -Q in compiler argument tests. Closes #682.
krb5pa-md5: Unify input formats (always write new style format to
pot). Closes #654
krb5pa-sha1: Drop a test vector that confused us. Closes #655
Revert 58a02ba and implement a better scheme: We only let USED
fields through split(). This way unused fields can differ and it
won't be a problem. This enhances solutions to issues #654 and
#655.
Revert "Revert 58a02ba and implement a better scheme: We only let
USED"
Proper version of f8ced75 that was reverted earlier. There was an
off by one error. Also fixes the OpenCL versions of the formats.
Hopefully this settles it for #654 and #655.
Add the example from
http://www.openwall.com/lists/john-users/2014/06/23/1 as a test
vector in the known_hosts format.
Make full Unicode (4-byte UTF-8) optional for fast MS formats,
because it means a performance hit of 10% or so. Default to
disabled.
Cosmetical changes to ZIP source from merging changes to OpenCL.
ZIP-opencl: implement Jim's changes from CPU format.
ZIP formats: Bugfix for (unlikely) bad salts caught late. Actually
I think we should bail out with error in get_salt() instead but
this bugfix is needed as long as we handle it this way. Any real
problems are very unlikely though.
Drop some obsoleted variables from zip-opencl.
ZIP format: salt size fixes. Pot sync would not work without the
same quirk in cracker.c that RAR already had. And salt_hash()
should iterate over the entire salt.
bash completion: Format class enumeration missed stripping the commas.
zip and pkzip formats does not unify case, so should only accept lower
case.
Minor corrections after compiling with -pedantic.
"Enable" the 'cpu' format class for non-GPU builds. Actually it was
just not mentioned in the usage blob for non-gpu builds.
Autoconf: Cosmetical, crypt(3) is a format, not a mode!
Mute bogus OpenMP warnings when running MPI.
Revert to using rexgen if found, but only if it's the version we
support. We can expand this to recognize newer versions once we
support them. You can still use --disable-rexgen to manually
disable it.
Drop the SHA2 ng-i formats. They were interim ones before the
generic ones got SIMD support. Closes #677
RIPE-MD128/160 bug fixes. Closes #675
Oracle, unify case in split(). Closes #657.
For FMT_NOT_EXACT, --show=left should only output hashes we did
not found *any* candidate for. Closes #671.
"Found no" or "did not find any", pick one.
OpenVMS bug fix. It would not even load its test vectors when put
in a file.
Change self-test so it detects problems like the OpenVMS one that
was fixed in 84ff14a (valid failed unless init was called first).
Fix obscure bug in wordlist.c caused by 11e5191. It would make nodes
get out of sync when dupes was found after truncation. Closes
#699.
7c76d2c had some problems with multi-field test vectors. This
should do the trick.
Move the function null pointer checks to after fmt_init() where
applicable.
Further shuffling in formats.c - more tests should take place after
fmt_init().
Workaround for a thin dynamic problem resulting from recent self
test fixes.
Fix another case of wordlist w/ --fork getting out of sync. This
happened when --min-len or --max-len was used. See also issue
#699.
Change a couple of allocs into callocs in common-opencl.c, possibly
mitigating effects of buggy drivers.
Call prepare() and split() during pot reload. This should not be
needed (or so I thought) and has some performance penalty in some
situations but the dynamic format requires it for hex/dehex of
salts. Closes #702.
Initialize a variable introduced in c882813 so we don't parse any
garbage it might contain.
Pot reload: Move redundant initialization out of hot loop.
Whitespace fixes in formats.c and loader.c
Do not print candidates in status lines when in secure mode.
Closes #713 although we could improve this by printing the
"components" just like in a crack, eg: `1g 0:00:00:00 DONE 2/3
(2014-08-12 21:46) 100.0g/s 101200p/s 101200c/s 101200C/s
L6-?d..L6-?l`
Quick and dirty optimization for RAR5 format, for a 90% boost.
Fix OpenMP for previous commit.
When executing a "partial" john command during bash completion
enumeration, do NOT include any input hash files. This seems to
fix #701.
Fix a problem with --skip-self-test
Drop the "alleged" from RAR5 algorithm name. It actually is
PBKDF2. Also fix some bugs and comments in valid().
RAR5 valid() had a test done twice.
Add some alternative addresses for Dhiru to .mailmap so Git knows
he is one same person
Bugfixes and improvements for -external:dumbdumb
RAR3 OpenCL need init() before benchmark, in order to output
correct length of test vectors.
RAR5: Move some functions to a header file for sharing with OpenCL
format.
RAR5-OpenCL: Initial implementation. Quick'n'dirty.
pbkdf2-hmac-sha256-opencl bug fix and auto-tune, from rar5 format.
Do not add implicit target-encoding to session file for --stdout.
Autoconf: Enforce CPU formats' precedence over GPU ones. Closes
#724.
RAR5 and PBKDF2 OpenCL formats: Autotune tweaks and optimizations.
bench.c: init all OpenCL formats early, to avoid assorted problems.
RAR5 OpenCL: Minor optimization for post processing. We could do this
on GPU but it wouldn't make a difference. This way we use
PBKDF2-HMAC-SHA256 kernel unmodified.
Use shared code for auto-tune in pbkdf2-hmac-sha256-opencl.
Improve OpenMP performance of Siemens-S7 format w/ many-salts.
Mute some warnings in sha1crypt
Speed up OpenCL auto-tune in rar5 and pbkdf2-sha256
RAR5 OpenCL bugfix - I picked the wrong line in last commit.
RAR3 OpenCL: Use shared autotune.
crypt-sha1: Use correct name of function, for less confusion. 100%
cosmetic.
Add alternative address for Claudio to .mailmap so Git knows he is
one same person
Autoconf: Ignore case when sorting format list.
Ignore case when sorting formats for the usage blob.
Autotune bugfix in RAR5 OpenCL.
Add loop count output to shared autotune statistics
RAR5 & PBKDF2 OpenCL: minor tweaks.
WPAPSK-opencl: replace autotune with shared code, including fixing the
latter to handle vectorized kernels.
wpapcap2john: Fix a bug when calculating eapol size. Closes #728.
wpapcap2john: Fix bug when stripping encapsulations. Optionally do not
output incomplete (unverified) authentications.
Swap Claudio's addresses in .mailmap
Fix bogus line endings in configure.ac (it had a disgusting MIX of
LF and CRLF!)
Fix bogus line endings in jtr_local_conf.m4 (it had a disgusting
MIX of LF and CRLF!)
Our current HMAC formats are "salt is message, password is key". I
always forget which it is, so add this to algorithm name. We
could/should implement "salt is key, password is message" too.
Bump some artificial limits in our generic PBKDF2-HMAC-SHA1 format,
and add WPAPSK DK example (test vector) to it. Also a minor bug
fix.
Add OpenCL format for generic PBKDF2-HMAC-SHA1.
pbkdf2-hmac-sha1 opencl tweaks.
pbkdf2-hmac-sha1 opencl bugfix for weak devices.
OpenCL: Autotune tweaks.
OpenCL: More autotune tweaks.
Drop the FIXME comment in wpapcap2john. EAPOL packets have a 16-bit
length field excluding itself and the two 8-bit ones preceding it.
Fix some format/algorithm names
Fix some OpenCL algorithm names when running vectorized.
Rename pbkdf2-hmac-sha1-opencl source file
Minor fixes to Lotus5-opencl. Format is still b0rken - it is hard
coded for a LWS that not all devices support. It also does not
obey LWS/GWS environment variables (#601).
Lotus5-opencl bug fixes. Closes #601.
Lotus5 OpenCL bugfix when bumping GWS from default.
Various formats: OpenCL AMD bug workaround.
8-bit fixes for pass_gen.pl. The issues were not really caused by
recent dropping of Authen::Passphrase, but found due to it.
Obvious optimization for EIGRP format: Move some work to get_salt,
where it's done once instead of millions times per second.
Support meet-in-the-middle hint for Office 97/2003 hashes. Speedup
on CPU is about 2x but it doesn't show in benchmark. See #736.
Fix plugin headers dependency in Makefile for john.o.
Add critical section pragmas to all use of "any_cracked" variable, and
fix some bugs while at it.
OpenCL: Show source file name when a kernel build fails.
Move DEScrypt-opencl format to broken/
Switch to Lukas' (faster) SHA512 kernel for Office2013.
Workarounds for AMD bugs in Catalyst 14.6beta.
Change the message "Press 'q' to abort (...)" for -pipe and -stdin
modes.
Fix bugs and add some WLAN stuff to cisco2john. Still not much
tested.
Vigenere bug fix in cisco2john.
Various OpenCL fixes.
Move DEScrypt-opencl back in business, but make it disabled in
default john.conf instead. This way it's out of the way unless
you call it by name.
7z-opencl: Move back in business but default to disabled in
john.conf
Drop argument "arch sm_10" to CUDA compiler. It's been deprecated
and now doesn't work anymore on newest versions.
Grub kernel: Mute compiler warnings about unsigned vs signed int.
Keyring-opencl bugfix. A trailing zero was put in a buffer not
made for it, writing past end.
7z-opencl bugfix. A trailing zero was put in a buffer not made for
it, writing past end.
pwsafe-opencl and rar-opencl: Handle devices that limits LWS in
some OTHER kernel than crypt_kerne. There will be future
problems with this unless we fix all multi-kernel formats.
Show in --list=format-all-details whether format is disabled in
john.conf. Also mute a SAP F/G warning when running --list.
Various OpenCL formats: Honor device limits.
CUDA raw SHA224/SHA256 formats were broken since some time.
Change format struct name of raw-SHA0 so it sorts after SHA1.
Closes #741.
Loopback bugfix for 8-bit characters.
mozilla2john was not being built in an autoconf build. Closes #743.
pass_gen.pl: Fix a bug in the try/catch for LM encodings.
More encoding fixes for pass_gen.pl
OpenCL: Ensure AMD device topology output despite outdated headers.
OpenCL: Add a hardcoded ".0" after PCI string for nvidia, and fix
indentation.
OpenCL: It turns out PCI id's are 8-bit bus, 5-bit device and
3-bit function. I presume this is the correct way to parse what
we get from the query.
OpenCL: Fix stray output.
Unify some more format names in pass_gen.pl.
pass_gen.pl: Sort format names when listing them.
Add a --keep-guessing option, that sets FMT_NOT_EXACT for any
format and thus lets us search for plaintext collisions.
OldOffice format: If we cracked a hash and are in FMT_NOT_EXACT
mode (ie. --keep-guessing option was used), store a meet-in-the-
middle value for faster cracking.
OpenCL list devices: Show platform/device extensions if verbosity
was bumped.
getopt.c: Alternate dupe-options check for options which are
FLG_NONE and OPT_REQ_PARAM. This frees up options flags.
Trust the new options dupe-check to free up 15 flags for Jumbo.
Pacify a compiler warning in wpapsk.h. I think it was latest CUDA
nvcc that started complaining about the "deprecated conversion
from a string literal to "char *"
Stop mentioning krb5-23 format - it doesn't exist anymore since it
was really just the good old NT format in disguise.
Typo. Apparently I should use a larger terminal font.
OldOffice: Add intermediate key to .pot file. Functionality is
added but disabled for now. We need a core change first, or
--show will not work properly. See #736.
Using FLG_NONE does not work for the recent dupe checking, use
flg_set == 0 and req_clr == OPT_REQ_PARAM instead.
Add a FLG_ZERO for (in a sense) better readability of the Jumbo
option dupe-checking.
Drop DEFAULT_ALIGN from dmg-opencl.
CUDA formats salt cleaning fixes (sha256crypt and sha512crypt).
OpenCL formats salt cleaning fixes (agilekeychain, bcrypt, gpg,
keyring, rar and sxc).
Salt cleaning and other bug fixes to 7z and SIP formats.
Some tweaks for the new salt-cleaning self-test. We clear the
buffer again after our tests, mitigating possible issues.
OpenCL formats need a postponed init() for "poor man's multi-
device support". This caused problems for a few CPU formats so
we now ensure it only happens for actual OpenCL formats. Closes
#755.
Cosmetic: Status help message now says SIGHUP if SIGUSR1 is not
available.
Binary buffer cleaning self-test. See #757.
Fix bugs in Skein and Snefru formats, #757.
Fix a bug in IKE format, #757
Fix bugs in AIX, DragonFly4, eCryptFS and Dummy. See #757.
Support -encoding for -stdout. And tweak mask mode's encoding handling
a little: For consistency, it now honors --intermediate-enc if
used. Closes #756.
Drop the now obsoleted mask-mode code from rpp.c and rpp.h
mask.c: Re-add encoding support, and ?h ?H ?A place holders.
Minor changes to doc/ENCODINGS
sha1crypt-opencl format added. Split kernel is WIP.
Found a slightly enhanced version of that sha1crypt-opencl among
all my local topic branches %-)
Update CHANGES-jumbo.git and CREDITS-jumbo.
Jumbo options dupe-check bugfix.
I reverted too much in 945be4a... some Jumbo-specific stuff re-added
(namely, support for using \xHH notation in rules and ranges), now
with comments.
Deprecate "ansi" in encoding list output. We still support it as a
shorthand for ISO-8859-1 although it's ambiguous. Add support
for "latin1" as another alias for the same, even though that is
still somewhat ambiguous :-P
WIP for ADL/NVML mapping to our device id (#750)
ADL debug output fix.
Change --intermediate-enc to --internal-encoding. The old name is
deprecated immediately, sorry 'bout that! To my defense I call
the fact we haven't had any release with the old option...
Mask mode: Do not produce mixed-case candidates for case-
insignificant formats like LM. Closes #764.
Mask mode: Code cleanup.
Bugfix for bash completion of encoding option name change.
Mask mode: Start implementing custom mask (WIP, #762).
Autoconf: Add --disable-openmp-for-fast-formats (some CPUs can't
handle it well so it ends up slower than one core).
Add -<N (rule reject for --min-length=N) and U (reject unless valid
UTF-8).
Merging super old topic branches exploded in my face. Build bots
to the rescue.
Bugfix for resuming with an implicit internal encoding.
Mask mode: When !FMT_CASE, produce lower case candidates instead of
upper case ones. There's a slight difference with some
encodings.
mask.c: Always parse \xHH notation. Closes #772.
mask.c: Handle command-line arguments given in UTF-8 when internal
encoding is some codepage.
Minor tweak for UTF-8 handling in mask mode. Better safe than sorry.
Move a variable declaration to avoid compiler warnings.
mask.c: Allow escaping \ as \\. So \\x40 means literally \x40 and not
the character with ascii code 0x40.
Allow custom masks given in UTF-8 on command line.
Loopback mode: Improved handling of assembled LM halves.
Mask mode: Parse hex notation in custom masks.
Add support for a default mask in john.conf. The default one (same
as Hashcat) is is not too useful until we implement -min-len and
-max-len support for mask mode (#380).
Mask.c: Do not touch empty strings during de-hex.
Mask mode, resume bug fix. Closes #780.
mask.c: Allow using static placeholders within custom placeholders
?1..?4.
Mask: Do not touch empty strings during expansion.
AC: Add AC_PREFIX_DEFAULT([../run]) as part of trying to fix #612.
OldOffice: Revert to using core's salt copy, so a found "middle"
value does not get lost in set_salt(). See #736.
mask.c: Preserve existing escapes during pre-processing. See
discussion in PR #776.
"memdbg" fixes for a bunch of OpenCL formats. See #739.
MEM_FREE bugfix for rar5-opencl. A buffer was freed in done() but
should be freed in release_clobj()! See #739
Add some missing inclusions of memdbg header. See #739
Drop some debug output from mask.c, and only talk if we're the
main process.
Mask mode: Fix progress count for node/fork/MPI. See #771
mask.c: Cosmetic changes.
Mask mode: Fix progress reporting.
Make it possible to build 64-bit "any" or MMX-only builds, for
testing purposes.
Split the PBKDF1 kernel for sha1crypt-opencl.
Minor fixes to PBKDF kernels.
OpenCL: Drop some debug output now that the NVML problem is fixed.
Also move the ADL output to opencl_list_devices() so it's not
printed when emitting a status line (although this is currently
defined out by default).
CUDA: Ensure mapping between CUDA id and NVML id, using PCI id.
Add NVML device id to --list=opencl-devices.
Re-create ADL main control for each call to get_temp(). This is
probably just a bug workaround, it should not be needed. Closes
#784.
Fix "generic" legacy build. Closes #782.
OpenCL: Add possibility to override build options using environment
variable or john.conf. Also add custom build options capability to
sha256crypt-opencl and sha512crypt-opencl, as a PoC. If given,
they will be concatenated with global options.
Add clReleaseProgram() to Sayantan's formats.
Add a --stress-test[=TIME] option that is just like --test except
it loops the test(s) forever.
Memory leak bugfixes to mscash2, bcrypt and lotus5 OpenCL formats.
Office2007-opencl: Use shared auto-tune.
Office2010-opencl: Use shared auto-tune.
Office2013-opencl: Use shared auto-tune.
encfs-opencl: Use shared auto tune.
krb5pa-sha1-opencl: Use shared auto tune.
krb5pa-md5-opencl: Use shared auto tune.
ntlmv2-opencl: Use shared auto tune.
mysql-sha1-opencl: Use shared auto tune.
Minor fixes for the last eight commits.
Allow 10s total for encfs-opencl. It's a lot of iterations!
Drop some unneeded code from raw-md4/5 OpenCL formats.
Drop obsoleted code from OpenCL formats, and fix a bunch of little
issues.
OpenCL: Ensure unmapping of buffers.
OpenCL: Bugfix for reporting utilization from ADL OD6 devices.
Optionally include GPU sensor readings when printing status line.
GPU sensor status: Some GPUs report a utilization of 0% when they
actually do not support that query, mute that. Also, tweak output
a little for multi-device (as in mscash2, not -fork).
GPU: Abort job in case we hit the temperature limit set in john.conf.
Log GPU sensor readings at start/stop of session.
Allow 30 seconds grace time for a timer abort (-max-run-time) so we
don't lose the session save for slow/split-kernel formats.
Avoid overhead in inner loop of split kernel OpenCL formats.
Reduce overhead in gpu_check_temp().
Clean up (cosmetic) of GPU code common for CUDA/OpenCL.
Show sm_5x (Maxwell) core counts correctly in --list=opencl-devices.
Ensure initial MPI/GPU logging in -fork children.
Fix arch link issue for 32-bit SSE2 or better. See #793.
Cross-compile version of the fix in 087383c. See #793.
ZIP_fmt: non-inline data length bugfix. Closes #792.
#792 bugfix for the OpenCL version of the format.
Pure whitespace fixes in cryptsha512_common.h
Copy-paste bug in 8cd6cf53.
Copy-paste bug in 73246ae (duh!)
More fixes for building (test builds) x86-32/64 without MMX or SSE2.
pdf2john, fix problem introduced with 292b35c. Closes #789.
Resource cleanup fixes in various OpenCL formats. See #739.
Perform some obscure Jumbo self-tests only if --test. Closes #799.
Stress test bugfix: sig_done() must set SIGUSR2 to SIG_IGN if used.
Mitigate race conditions in SIGUSR2 handling. See #798.
Improve error reporting to log file: Eg. "Terminating on error:
john.c:144" Closes #800.
Add sm_50 SP multiplier for CUDA too (I did not remember we had to
calculate it from a table like in OpenCL).
Further mitigate race conditions in SIGUSR2 handling. See #798.
RAR OpenCL: Implement dynamic salt. cracker.c: drop the kludge we
had for RAR and ZIP formats. It's now taken care of by the
dynamic salt stuff. See #752.
ZIP OpenCL: Implement dynamic salt. See #752.
Add .gdbinit to .gitignore.
Fix a silly bug in CUDA-id to NVML-id mapping. Closes #801.
In last commit, a paren escaped from where it should be and ended
up where it should not. That's what you get when you have to
dry-run testing fixes :(
Fix -DDEBUG builds for a couple of OpenCL formats.
RAR formats: Use fmt_default_salt_hash_dyna_salt().
ClearQuest: Add some parens that Dhiru tried to do without.
RAR: Never include data blob in salt compare size.
Makefile.stub: exit with error if not configured.
Experiment with using mmap() for large RAR blobs.
RAR mmap: Stop using offset, because it's too hard to determine
page size in a portable way. And this has no real drawbacks.
Add debug info to dyna salt compare.
pkzip: Improve OMP scaling. It was hard-coded with a ceiling.
Dynamic salt: Adjust SALT_CMP_SIZE macro, it ended up wrong due to
struct padding.
RAR-opencl: Get up to speed with CPU version (ie. mmap() support).
Dyna salt debug.
Drop broken custom hash functions in pkzip and TC. Closes #791.
Add missing hash functions (and/or use default ones). Closes #790.
EFS: Bugfix for iterations count. BAD BUG, possibly false
negatives. Shame on @kholia. Closes #563.
AC: Create a GNUMakefile alternative. The old stuff is still there
too. See #805.
Case fix for GNUmakefile. We had it as GNUMakefile.
Drop the GNUmakefile if "make distclean", or users will be very
confused.
WPAPSK-opencl: Auto-tune fixes.
Revert "dyna_salt. Use 4 param COMP_SIZE macro" Revert "rar_fmt:
removed numerous warnings, and added comments where we can not
handle large file size"
rar2john: missing linefeed in usage blurb.
See #794. Add MAX_INLINE_SIZE to params.h and have keepass2john
honor it, with an optional -i override.
keepass2john fixes.
keepass2john bug fixes.
rar2john: adopt to #794, using -i for setting inline threshold and
defaulting to MAX_INLINE_SIZE.
Minor fixes to keepass2john and rar2john.
zip2john: Implement getopt (sorry, had to change some option names)
and MAX_INLINE_SIZE, see #794.
luks2john: Implement getopt and MAX_INLINE_SIZE, see #794.
Tiny optimization for RAR formats: Drop an assertion that is now
well tested. We keep it for -DDEBUG.
Unify RAR & RAR-opencl. Some minor fixes were not implemented in
both.
RAR formats: Use 64-bit fseek() if possible. We still can't fread()
larger than 4 GB but we can now seek 5 GB into a file for fetching
(hopefully smaller) data.
rar2john: Use 64-bit fseek(), just in case.
Mute a warning in legacy generic builds, addressing #807.
Makefile tweaks.
Cosmetic auto tune fix in NTLMv2-opencl.
ClearQuest format failed on 32-bit due to sign extension. Closes #806.
If we have gmake, use GNUmakefile and do not overwrite Makefile.
Closes #805. This also adds a missing @SET_MAKE@ that was likely
intended to be included in every makefile since we've been using
AC_PROG_MAKE_SET for long.
Fix numerous memory leaks in OpenCL formats.
ssha-opencl: Use shared auto tune.
Flush log file before signaling children we're done. Closing #798.
AES-NI code: Change a __declspec to something more portable.
Change name of
s/fmt_default_salt_hash_dyna_salt/fmt_default_dyna_salt_hash/g.
Refactor function names of opencl_autotune.h. The common_* names
always confused me.
With a fast enough GPU, auto-tune would overflow signed 32-bit
integers.
OpenCL: Allow auto-tune with a single kernel-invocation limit instead
of total crypt_all() limit.
Use new alternate auto-tune scheme for a couple of formats.
Fix a bug in Office OpenCL formats where cracked array was not
properly reset when running vectorized.
Salt cleaning in OpenCL Office formats.
pbkdf2-hmac-sha1 opencl bugfix.
Revert a memleak fix in OpenCL formats. Something goes terribly
wrong unless we do it this way.
Drop the Makefile stub. I causes too much problems. We can symlink
Makefile -> Makefile.stub in release tarballs though.
Office 2013, tweak auto tune
Fix an issue with --skip-self-tests and dynamic salts.
CUDA: cosmetic, device list.
OpenCL raw-md4/5 bugfix.
Keyring-opencl bugfix.
pbkdf2-hmac-sha1-opencl: Report iterations as tunable cost.
AC: Do not add -march=native in case we are OSX with broken as.
Add salt_hash, binary_hash and get_hash functions to ClearQuest.
Closes #810.
WPAPSK-OpenCL: Minor optimizations for GTX980, for a 5% boost.
Add stacked mask mode to Incremental, Markov and Wordlist modes.
It's not actually handled in mask.c yet. Also, resuming a stacked
session may (or may not) need work.
Autoconf: Assert that we don't have a stray GNUmakefile still in
the tree, after some of magnum's poor ideas in #805.
GPU: Initialization tweak and other minor fixes.
Benchmark: Print GPU utilization (if available) after benchmarking
OpenCL or CUDA formats more than one second.
In hybrid mask mode, do not use candidate alone. While it could
sometimes be a feature, it could also produce up to 50% unwanted
candidates.
Bug fix for hybrid Markov + Mask mode.
Optimization for short masks: Avoid repeated strlen's that the
optimizer would not dare taking away as written. Also make key a
const char* so we don't screw up.
Bugfix for non-hybrid mask mode.
Bugfix for hybrid mask w/ node/fork: For now we always let the
parent mode distribute the work. For large masks it might be
better to let mask distribute but that is a more intrusive
change (to all modes).
Fix non-GPU builds for bug introduced by 9a5e3ae
Fixes for stacked (eg. hybrid mask) session save/restore.
Fix progress/ETA reporting for hybrid mask/stacked modes. Wordlist
mode still has coarse reporting in some situations (mmap) when
wordlist is small and mask is big.
Fix some missing pieces in the Regex mode.
Cosmetic bugfix: mask_done() was called a tad too early so final
status would be empty for short runs.
Bugfix for save/resume in Hybrid mode. If we are about to abort,
we must not call parent's fix_state(). Closes #823.
Further tweak for #823. In extreme test cases using -max-run=1 we
sometimes did not get any progress for a (one second) run.
Change default custom masks (which resembles Hashcat's) to use eg.
a-z instead of ?l so they are not affected by internal encoding.
Add mask placeholders ?L and ?U which is non-ASCII lower and upper
case characters.
Reject ?L and ?U placeholders unless an 8-bit codepage is in use.
pkzip format: Mute warning about missing files if we're just reading
pot lines.
Remove some #ifdef DEBUG, or change them to something more specific
like POTSYNC_DEBUG or DYNA_SALT_DEBUG.
Max length fixes in rules.c for internal encoding.
Fix handling of invalid UTF-8 in mssql05. Closes #830
Ensure key cleaning on invalid UTF-8 in same fast formats. No
problem seen with these but #830 hinted we might get problems so
we play safe.
Mask mode: Add support for format's max length. See #834
Mask mode: Fix bugs for using default mask (bare --mask option).
Mask bugfix for default mask. See #834
Mask: Cleanup of previous changes. This is a no-op except we now
keep a pointer to the actual original mask in case we'd need it
for debugging.
Use a separate default mask for Hybrid mode.
Hybrid mask: Bail out with error if [the used portion of] hybrid
mask does not contain a ?w placeholder. See #834
Mask mode: Ensure max length is not exceeded after conversion to
UTF-8 too, if applicable. Hopefully this is the final fix for
closing #834
Drop CP/M linefeeds from Jim's files.
Oracle: Address #832 (overlength salt segfault)
Common OpenCL: Do not fail if we can't get PCI info. It will only
happen when we don't need it anyway. Addresses #836
OpenCL, cosmetical: Strip leading whitespace in device names.
OpenCL: Improve handling of --fork vs. (lack of) --device.
Mask: Better handling of max length when internal encoding is used.
Fix non-OpenCL builds. Missing #ifdef.
Minor fix for using default mask.
Wordlist: Unicode length fix when internal encoding is not UTF-8
but target encoding is.
Fix for john.o in debug build target.
Add a 'memdbg' build target which can be used without editing
anything.
Mask mode: Use mask_add_len in hybrid parent modes. See #837
Mask mode: Use mask_num_qw in hybrid parent modes. See #837
Comment out -DMASK_DEBUG that was accidentally committed.
Mask mode: Various tweaks. See #837
Mask mode fixes. See #837
Hybrid Mask: Fix detection of missing ?w when mask was not
truncated. See #837.
Mask mode: Do not allow ?w unless running hybrid/stacked.
Mask mode: Change meaning of ?l, ?u, ?d and ?s to always mean 7-bit
ASCII, and add ?S (high bit specials) and ?D (high bit digits).
Mask mode: Escape fixes. Some things were lost by recent commits,
others were not really good to begin with: We must never look
backwards for detecting escapes, only forward. See #776 for older
discussion.
Mask mode: Escape fix for \xHH hex. See #841.
Despite generated from the "Unicode database", encoding_data.h
contained a dupe greek character.
Include ASCII in list of encodings, mostly for tab completion to
include it.
Add a "make clean" for Travis CI, just to be 100% sure. See #711
pbkdf2-hmac-sha256 bugfix for buffer overrun, see #711.
Mute the "Using default input encoding ..." if we actually do not
use any input.
Mute the "Press 'q' or Ctrl-C to abort" when using -stdout and
output is a terminal. If you could read it, it wasn't needed...
Mask mode: Warn if \x00 is used in mask.
Overhaul of all formats that use base64decode(). It adds a NULL
string terminator that the destination buffer must be sized for.
Mask mode: Allow ?w in pure mask mode, just warn that it doesn't
have any special meaning.
Mask mode: Support -min-len. It will call mask_crack with each
length between min-len and max-len.
Bodge for bash completion of eg. "john -stdout -list=...", see #842
Mask mode: Fix for -min-len=0.
OpenMP optimizations: Use 'atomic' instead of 'critical' when
possible. In oldoffice, keep using critical but make it a block.
Mask mode min-length session save/restore bugfix. See #845
Mask mode initial documentation. Closes #824.
Mask mode: Do not "use" min-len in hybrid mask mode. Parent mode
will honor it after taking mask_add_len in account though. See
#848
Fix OpenCL build after 38218fe3
Mask mode: Progress reporting fixes. See #837
Signals.c edge case fixes.
Mask: Cosmetic: Print some warnings/errors in main process only.
Mask mode: Drop redundant code, fix max_add_len for truncated
hybrid masks.
MDC2 format: Fix build error. And indentation style..
Mask mode -max-len fixes. See #837
Mask mode: Warn if mask is shorter than supplied -max-length
parameter. See #837 for discussion.
Add base64conv to .gitignore
Rules.c: Do not convert from internal to target encoding in case we
are running hybrid mask. It will happen in mask.c after applying
the mask.
Mask mode: Reject 8-bit "codepage" placeholders with UTF-8 encoding.
Mask mode: Cosmetic/whitespace.
For pure mask mode using internal encoding, skip conversion if our
mask (after current truncation) can't actually produce any 8-bit
characters. This can make for up to a 2x performance boost.
Fix bug when using -min-len with pure mask mode.
OpenBSD-SoftRAID: Show correct ALGORITHM_NAME. Also drop the
FORMAT_NAME as it's identical enough to the FORMAT_LABEL.
Add memdbg info to --list=build-info
Mask mode: When iterating lengths in pure mask, show progress for
current length. See #854
OpenCL: Rename opencl_autotune.h to opencl-autotune.h to prevent
it being copied to the kernels directory.
OpenCL: Move GPU-side Unicode stuff to a shared header.
DEFAULT_ALIGN. See issue #317. Fix for double-format source file.
Break out common OpenCL kernel stuff to headers.
Oldoffice-opencl format added. Closes #719, see also #736.
OpenCL: Optionally use local memory for RC4.
Shared OpenCL headers: loop protection, dependencies and other
things.
oldoffice-opencl fixes. MitM has to be disabled during autotune
and benchmarking. Also some RC4 tweaks.
oldoffice-opencl: Workaround for AMD bug.
OpenCL RC4 tweaks.
OpenCL: More stuff moved to shared header.
Mask mode: Resume progress/ETA fix for -min-len. Purely cosmetic
bug.
AC: Mention --disable-pkg-config in doc/INSTALL (#864).
OpenCL: Fix a silly problem with Intel compiler for vectorized
bitswap.
Fix new unneeded lib dependencies.
OpenCL RC4 tweaks. Mainly no-ops for easier profiling.
OpenCL RC4: Use local memory if device is GPU. Actually this is
extremely detrimental to performance on some (weak? integrated?)
GPUs like my laptop GTX 650M but I'm not sure what to base the
choice on and it's up to a 290% boost on flagship cards. We
have to work around AMD bugs as usual though.
OpenCL RC4: Regression fixes (driver bug workarounds) for Macbook
(nvidia GT 650M & Intel HD4000).
OpenCL RC4: Fix some macro names before they cause trouble.
OpenCL: Fix some header includes using brackets instead of quotes.
keyring-opencl: Optimize for 2.5x boost, add auto-tune, bump length
limit.
OpenCL oldoffice & krb5pa-md5: Fix --test=0 (they failed because we
required an LWS of 64 - but we can do with anything up to 64).
Add auto-tune to pbkdf2-hmac-sha512-opencl.
EIGRP format: Add cost support.
OpenCL: Fix a bunch of OCL_CONFIG names.
pbkdf2-hmac-sha512-opencl has a split() that unifies case but
missed the format flag telling about it.
raw-md5u and raw-blake do unify case in split() but lacked the
format flag telling about it.
Mait for events typo.
7z-opencl: Split kernel, auto-tune and use shared SHA2. This format
is so extremely slow that we still need to have it disabled in the
default config. It can takes minutes even with --test=0. Closes
#754.
7z-opencl: Modify algorithm name, reflecting that we do any AES on
CPU as opposed to GPU.
OpenCL shared SHA256: Optimize memcpy for 30-50% boost of 7z-opencl,
plus some device-specific tweaks. An alternate memcpy is defined
out right now but it may be better IRL (or once adding some test
vectors of varying length to 7z).
"Enable" the 7z-opencl format in john.conf.
pdf2john: Unicode fixes, and lots of fixes/fuzz for parsing files of
various origins/versions
MYSQL: Fix a bug with OMP for single-thread, plus some no-op changes
that makes for easier testing.
7z-opencl: Proper Unicode/codepage support.

JimF (657):
get_source() supporting salts too. Added to crc32 and sapG.
raw-sha1_li: always store complete (repaired) hashes
Loads of minor fixes for Sparc (endianness, alignment)
Sparc_Porting_and_OtherStuff-bleeding.diff
Use first two salts when benchmarking instead of top one.
wpapsk get_source()
Portability_issues_bleeding.diff
Use our own SHA-2 unless we have it in OpenSSL. This enables all SHA-2
formats even for users that only have OpenSSL 0.9.7. This also
means we can have the formats as plugins.
Reflect what SHA-2 we use, in ALGORITHM_NAME
Enhancements to cryptsha256 (17% boost)
--list=format-methods[:WHICH] option added
Updates to the dynamic format
Fix for disabled dynamic_7 leading to all dynamic >7 busted
JtR-Bleed-make-generic-fixes.diff
Jumbo-Bleed-ssh2-and-other-small-changes.diff
JtR-Bleeding-Linked-in-MMX-fix.diff
Dynamic-Sha256-addition.diff
Added numerous types to dynamic. New fake-salt code and format.
formats.h version update. pass_gen.pl update
JtR-Jumbo-dyna-fixes-after-source.diff
loader.c: Fix for loading bare hashes.
JtR-Bleeding-Dyna-SHA2-size-fixes.diff
Dyna-bleed-fixes.patch
Added OMP, removed a few compile warnings, depending upon compile
conditions, oSSL/GMP builds
Bug fixes for dynamic union crypt_key
SSE2 support for WPA-PSK. The code was taken and modified from my code
in mscash2. They are pretty different, due to how the main
format logic is (mscash2 split out just the inner function, this
one did not break out the crypt). But they do about the same
things. Also, in SSE2, mscash2 BE's the binary data. I do not
do that here, since the wpapsk.h is common code to
CPU/CUDA/OpenCL, and that is where that functionality is. So, there
simply is a call to alter_endianity_to_BE when the results are
stored at the end of crypt. There really should be no speed
impact, due to this fact.
wpapcap2john utility by Jim. C port by Dhiru.
wpapcap2john fixes from Jim
Here are a couple more fixes
Implement ldr_sort_salts(), currently hard-coded to only apply to
wpapsk formats. In the future we will probably want a format
struct entry for format->methods.salt_compare().
Some porting items. The typecasts are due to void* having an undefined
size (on some compilerrs). error C2036: 'void *' : unknown
size
Dynamic: Remove many more of the typecasts, putting them into anon
unions.
listconf.c: Ensure we have a proper version of NSS lib before calling.
bench.c: Get around a crash in VC (and mingw), in -test=0 mode.
These only use clock(), so if the bench is fast, there are 0 clocks
used. I simply put a 1 in the time slot, if it is 0.
mingw port issues
More mingw port issues
Another version check for NSPR in listconf.c
Some warning pasifications
pass_gen.pl: Support creating WPA-PSK test hashes!
dyna_17_BE.patch from Jim
Portablity fixes for VC.
basename portability 'fix'.
fix wpapcap2john warnings
Dynamic bugfix, spotted by new warning in gcc 4.8.0.
Fixed mem leaks, found by mshell.
Minor fixes.
Fix portability problem with "extern inline" stuff in misc.h
Bugfix for NT format, 32-bit x86-sse.S.
rar fmt in bleeding (VC), mem leaks, and trailing WS.
JtR-jumbo-dynamic_1014_fix_non_sse.patch
Move alloc/free out of parallel region in putty format
Move alloc/free out of parallel region in Gnome Keyring format
OMP fixes for FGT & RAR
JtR-Dynamic_validation_raw_hashes.patch
JtR-Dynamic_validation_raw_hashes-2.patch
Re-apply JtR-Dynamic_validation_raw_hashes-2.patch but with some
missing stuff added.
JtR_Bleeding_Dynamic_Salt2_UserID_Salt_Bug.patch
JtR_Bleeding_Dynamic_MEM_ALLOC_SIZE.patch
Dynamic_OMP.patch
JtR_bleed_Dynamic_bare_hash_fix.patch
JtR-bleeding-dynamic_SSE2_OMP_12_13_fixes.patch
JtR-bleed-dynamic-OMP-preformance-increase.patch
JtR-SunMD5-SSE2-scale.patch
JtR-Dynamic-MMX-Fixes.patch
Disable OMP for MMX in wpapsk format
Dyna21-crash.patch
dynamic-valid.patch
JtR-bleeding-dynamic-OMP-fix.patch
JtR-Unstable-crash-fix-dyna_21.patch
JtR-Bleeding-Dyna-big-hash-fixes.patch
Portability issues fixed. fork/kill are not standard. They are *nix
specific. I have taken it out of VC builds, and also removed the
options from DJGPP builds. I would imagine that mingw also
would have problems, but I do not have a build env under that
any more, so did not add defines for it.
SHA-256 incorporated into sse-intrinsics.c - and a test format for it.
Raw-sha-224/256: Use new shared intrinsics.
JtR-bleeding-SSE2-pbkdf2-headers-v0.patch
JtR-bleeding-agilekeychain-fix.patch
JtR-bleeding-encrfs-any-pbkdf2-fix.patch
bleeding-vcport.patch
testpara32 fixes for bleeding branch.
JtR-bleeding-pbkdf2-256-upgrade.patch
JtR-sha512-pbkdf2-and-aix-ssha-enhancements Conflicts:
src/aix_ssha_fmt_plug.c
JtR_OS_H_improvements-bleed.patch
JtR_OS_H_improvements-v3.patch
JtR_Dynamic_statics.patch
JtR_CC_pbkdf2_sha2.patch
../JtR_bleeding_Dyna_enhancements.patch
JtR_Dynamic_1300.patch
JtR-bleeding-Dyna-add-SPH-Tiger_Whirlpool.patch
A small patch to get the new rar5 to build under VC
Enhancement to RIPEMD
Dynamic enhancements
Dynamic speed increases, RIPEMD speed up and new Dynamic functions
missing parentheses in dynamic_fmt.c
JtR_bleeding_pbkdf2_sha512_bug.patch
JtR-bleeding-regen-lost-salts-rewrite.patch
JtR-rules-avoid-double-include-char-classes.patch
JtR-bleeding-defines-cleanup.patch
small changes to regen-salts
SHA512 into intrinsics, normalizing SHA1 SSE2i interface to be same as
SHA2
SHA512 into intrinsics
removed password len restrictions from pbkdf2_hmac_sha*.h files
improved speed of scrypt, about 2x
more changes to scrypt and correct valid
missed 2 files on last scrypt update
SSE added to raw-sha384/512 and some fixes to other raw SHA formats
SSE added to raw-sha384/512 and some fixes to other raw SHA formats
use a var, to allow for easier step debugging, to not have to walk
into the longcand function
some small changes in SSE SHA2 code
fixed bug in recent changes, if compiling in oSSL mode
Added OMP to raw MD4 MD5 SHA1 formats
remove OMP in MD4 MD5 SHA1 formats if built with 32 bit mmx-*.S
file(s)
Merges some of the macros roti now handles ROTR as well as ROTL.
Removed some if XOP defines, since we now have the cmov instruction
memicked in non XOP builds
added aix-ssha* pbkdf2 hashes
added 125 byte password self tests (max size). Removed old oSSL
commented out code. Fixed issue where a SHA256 constant was used
instead of a SHA512. Should have caused no crashes, since the 512
constant is smaller, but waste of memory
Use code from pbkdf2_hmac_sha512.h. 2x speedup for oSSE, and gets
about 4x+ speedup for SSE2 (XOP gets more)
Allow the oSSL pbkdf2-sha* code to also be included in SSE2 builds.
Now pbkdf2-hmac-sha512_fmt_plug.c can fully use the header
functions, even when built with SSE. No reason to keep the internal
hmac function in this fmt file any more. It was used in cmp_exact.
Added max length password and salt to test cases. Fixed serious bug,
doing strlen on salt, vs using salt->length. The static salt buffer
is not memset (probably should be) in the get_salt, and thus, a salt
record 'can' have extra crap after the salt. Does not hurt anything
AS LONG AS you only look at salt->length amount. The recent patch
to use pbkdf2_hmac_sha512.h file lost the usage of salt->length and
instead used the strlen, which was bad busted. Found when a shorter
salt followed a longer salt in self tests. Things started to fail
unexpectedly, and were hard to track down as why they were failing.
added new file to help within pass_gen.pl
Fixed compile issue in XOP from recent changes
added loop count to sha*Crypt formats
Added an ifdef in format.c to allow development work to temp turn off
validations. Found useful in testing theories in format changes,
and testing speed, without having to fully get the format working
Added SSE intrinsics to SHA256Crypt. Still more work to do, but
currently this is working and faster
updated the sse-intrinsic .S files, removed memdbg.h from cryptsha256,
and fixed possible overwrite isse, and fixed rawSHA256_ng_i code
that eliminates final crypt adds. We were using SHA512 IV's and not
SHA256, boom
sha256-crypt: Turn off SSE for OMP builds, until OMP crash bug found
raw-md5: modified OMP threading computation, to hopefully improve AMD
scaling
Added max length passwords and max length salts to all values in
dyna_preloads. Also fixed numerous items within pass_gen.pl which
were for building dynamic hashes
Reverted 01a920146, raw-md5 OMP scaling attempt
Added max length passwords etc to dynamic in dynamic.conf, Updated
DYNA docs and a fix or 2 in pass_gen.pl
generic was broken, needed to use salt->length and not strlen of salt
Added SIMD code to SHA224/256 within Dynamic, and started some
significant core changes to dyna, to help use SIMD code for dyna
large formats
fix compile problems on x64 builds
moved the rounds= #define into the header
Major modifications to dynamic. SHA1 re-written from ground up. Now
uses 'flat' input buffer method, the same as SHA256. This improved
perforamnce of ALL sha1 formats, except sha1() (raw-sha1). That
format lost 15% speed or so, due to not being able to use
specialized key loader. However, it was already 20% or more slower
than the hand tuned raw-sha1* formats, so losing this speed race
within dyna is not a major concern, when all other formats that have
more complexity DID increase in speed, some up to 200%. Also, we
are NO LONGER limited to 55 bytes on SSE for SHA1. This patch also
removes the depricated formats dyna-27 and dyna-28. These were
depricated, and only ran in sse builds, and were 20% slower than
cryptmd5, so were not of any use, and had a LOT of code spacer (1000
or more lines of code), and that code was VERY buggy. It simply has
been removed totally
increased max length of non MMX password input from 80 to 110 bytes.
all formats other than MD5/MMX layout have been increased. Also
formats NOT MMX safe will get 110 byte inputs even when the build is
an SIMD build. Before, these subformats were also honoring the 55
byte max length, even though they did not need to. Also fixed a bug
in parser which was not computing test counts properly if a TestM=
or TestF= was being used.
Added large hash FLAT sse code for MD5/MD4. Also added some native
FLAT format md4/5 to dynamic, and started adding these as 2nd re-gen
hashes for dynamics where the older mixed layout is faster. The new
FLAT is not limited by short max length passwords
new dyna conf file missed, and some problems with dyna generic builds
missed checking this new dyna conf file in
failed to build in OMP builds
Fix build problems on XOP systems
Fix build problems on XOP systems
increased PW length of mscash2 from 27 to 125 and username length from
22 to 128
OpenCL mscash2 password length bug fixed, and PW length increased to
125 byte JtR max length
mscash2-opencl: fixed bug in new 125 byte password code
Changed dynamic format names. Moved the expression to the algorithm
section
fixed algorithm name
Portablity issues, VC, and some other fixes
add some useful dynamic sub-formats
Better OMP for whirlpool. Use oSSL Whirlpool functions if oSSL
version high enough (much faster)
pass_gen.pl, add a -tstall switch. If that switch is used, then
it calls all of the functions, crypting 'password' with each.
Fix debug builds for dynamic formats with TestD= test cases
Cygwin64 make target!
Cygwin64 / MinGW64 self-test fix
#ifdef out some select() stuff in tty_getchar() that was used for
Cygwin but isn't needed (anymore?).
Update to hi res timer code.
Add a build target for win64-cygwin-x86-64-opencl and drop -static
from Cygwin64.
Dyna fixes.
Band-aid for Dynamic 1300 in generic build. Closes #361.
VC fixes
scrypt fixes
Add Jan Starke's rexgen cracking mode (depends on external library,
so default disabled in Makefile)
regexp now possible w/ wordlist
Dynamic salt fixes, salt sort and enhacements to raw2dyna
Dynamic "flat buffer" formats salt length bump
Fix for the new AESNI stuff vs. Redmond Operating System.
Fix VC build
Rexgen fixes.
More rexgen fixes.
Rexgen fixes (patch 3).
Memory debugging stuff.
add missing "memdbg_defines.h" file
Rexgen update 4
JtR-bleed-rexgen-updates-5.patch
pass_gen.pl update for dynamic 2000's formats
mmap() fixes for Windows
Disable Kerberos 5 18/23 formats for Cygwin
JtR-all-pass_gen_pl-2.patch
HMAC-sha256, allow longer salt. Original patch provided by Colm
O'Flaherty but this is reworked for current tree.
Autoconf, initial work.
JtR-autoconf-2.patch
JtR-autoconf-3.patch
JtR-autoconf-v3.patch
JtR-autoconf-v3a.patch
added use icc-S intrisic files fixed code in md5.[ch] and md4.[ch]
where they were not detecting we had oSSL. They were always
compiling the john_md5 stuff, even if ssl was there. modified
x86-64.h and x86-sse.h (arch.h) so that they include autoconfig.h
AND started to comment out things hadled in the autoconfig.h file
Modifications to sha2, to hide name clash problems, and MANY BE bugs
fixed
Starting work on getting sparc working with autoconfig
Added ability for setting env var CONFIG_MAINT=1 to re-enable the
auto-reconfigure logic in Makefile. Normal users will never set
this, so will NEVER autoconfig. Developers working on configuration
scripts can set this env var, to make sure they always have proper
changes in autoconf handled properly
Added better logic to SSEx code probes. Added a couple comments on
some should be done stuff (zlib and openssl). Fixed LITTLE_ENDIAN
setting logic, using proper variable
Updated CPU probes again. Looked at compiled ASM this time, and I
think this is it
Missed updating configure
Added rm -f to arch.h before we link it, so that it will be ln-s
properly.
Stripped out most of the targets from Makefile.in Now Makefile
will not contain the fat targets which we had in the original
makefile. The original makefile is still present for these fat
targets. make --file=Makefile.orig target will still work,
producing the output.
Added a tiny comment, to list end of the default target. Let it
'show'
Allows this to compile on sparc (generic sha2). It still fails, but
now compiles
Still had a few alignment issues to clean up
Changed HAVE_PCAP to be a proper define, in the makefile
Changes to makefile for cygwin/mingw building. Also added -DAC_BUILT
listing this was an autoconfig build. We will have to edit c and .h
files to allow them to do special things for non-autoconfig builds,
i.e. Makefile.orig builds. Not all of that work is done yet, but
now we CAN do it
Got make -f Makefile.orig working properly. autoconf stuff still
works properly also.
added size checking for all common elemental data types. Changed the
ARCH_INT_GT_32 check to use this information
Revert changes to makefile
Try to ignore Makefile in src, by explictly specifying that one
src/Makefile as a true file (cp Makefile.orig Makefile). Trying to
get rid of git seeing Makefile, even though it is in .gitignore
added config.cache to .gitignore, and set Makefile back to a ln -s.
NOT SURE HOW to fix Makefile to have something there, BUT be ignored
moved x86 special logic into a macro. PUtting this into macro cleans
up configure.ac, AND it makes it much easier to start adding logic
for other systems, and then within configure.ac, simply have a
switch on the system type, to call the right one. Also, moved the
ax_lang_compilerr_ms into a macro to clean house a bit, and a few
other small cleanups
Moved logic to build fmt_*.h and john_build_rule.h from the
Makefile.in, into configure.ac (configure). Also, these files are
NOT cleaned up by a make clean. They are cleaned by a make
distclean
Removed last legacy target for plugin stuff, it was not needed
Found a bug, where a john.local.conf was not loading properly, if last
line did not contain \n char. Now, adding the blank line and the
comment in john.conf AFTER the include of john.local.conf, it does
not matter. JtR will load the john.local.conf file no matter what
it ends like
Missed a need alignment core. Hopefully we are all 'good' now
Fixed BE failures
sha1 and sha512 were not quite right. Rewrote pbkdf2-hmac-sha256.
The inline code was a nightmare. Now all of these should be BE safe
Added AVX2 probe logic to x86 detection
The C source for apple was busted. The closing } was in the wrong
place. Also reduced some line counts in configure. Configure not
checked in, because I have another change coming also in a minute
Changed the openssl probe from simple lib probes, to using
PKG_CHECK_MODULES. Now we get proper cflags and libs required for
oSSL. This depends upon pkg-config 0.9.0 being installed. This now
[almost, some includes and unrarppm.c still need help] allows my
sparc box to properly work with ./configure && make
This file goes with prior commit (the moving oSSL logic into
PKG_CHECK_MODULES changes)
Fixed BE bugs in these 3 formats. Tiny bit hackish, but since they
were 3 combined formats, it sort of had to be that way.
Some ifdefs. YES, this breaks (possibly) the rar for sparc. But
without this, the compiles HANG on this file. We can fix it
properly when we have time. Right now, lets at least have this file
fully compile. As a bonus the self test still passes! Do not ask,
but it does
removed legacy stuff, which was causing an unused function warning on
SSE builds. Legacy format did not do SIMD code and needed this flag
still had a core in this one on BE systems
Fixed BE failes for dyna_17 and phpass
Fixed BE bug in format
Fixed BE bug in format
Fixed BE bug in format
Fixed BE bug in format
Fixed BE bugs in these formats
Fixed BE bug in format
Fixed BE bug in formats
Fixed BE format. This one sucked, due to only 2 bytes not even
containing enough to byte swap. NOTE, pbkdf2's have to end on
'even' wordsize for the pbkdf2 so we can swap them
Revert prior hack. Now, on some OLD sparc gcc compilers, this can be
built with -O0, and it builds. This still does not find the
problem, BUT we can not turn the proper code back on on a sparc
system in general
Fixed BE problem with this format
Fixes problems with BE OMP in this format
Removed the LIBS = for rexgen. This was blowing any install that has
liblibrexgen.so, and causes almsot ALL ./configure compiles past
that location to fail, and it gives an unbuildable end result
Fixed for andriod FDE format, AND got it working on a BE system
Fixed BE problems (this one SUCKED to find)
Alignment not assured, but needed to be word sized
Added new utility macro m4 file Added macro to detect usablity of
gcc command args. Now CFLAGS extra args, OPT_NORMAL and
OPT_INLINE flags detected using this macro. Moved the include
and lib path resolver code into this utility class Added x86_64
and x86 lib path into possible OpenCL lib paths (after we detect a
32 or 64 bit build) Fixed --disable-openmp still showing
openMP=yes on status. Fixed sometimes blank GMP on status
rolled back this change. Having a CPU that does not align, is not
critical. Most aligned needed was in MMX_COEF. We will have to do
this on a case-by-case basis, and when we DO have alignment needed
on systems which do not support aligned.h, then we will have to do
the work in other ways.
With the order change of ossl, I was getting horrible failures and
cores on cygwin. This corrects the problem. NOTE, we may have to
readress this issue, this may not be the final solution
changed some test logic. Was not testing right on all bash
Added logic to check if the GCC argument testing code actually works.
If it does not work, we emit a warning, and revert to using only
-O2. Some additional cannonization of sh test clauses. Renoved
quotes from RHS, if they are only a small constant.
Commented out old CUDA logic in Makefile.in. Magnum, please validate
we can remove this, and then remove it
Added logic to add defines to CFLAGS and ASFLAGS for CYGWIN64
added win32 .exe to ignore
use x86intrin.h exclusively in XOP probe in configure script
Issues found in BE builds
Pacify cygwin warnings
Removed malloc/realloc which put BAD code out there when we have
configure compiling problems. Removed openssl header and linb auto
checks, moved them to their own macro and then put a commented
call to them in the non pkg-config probing of ossl Removed the
bogus check using -Wbogus Sparc compiled that one, so spurious -W
warnings might be passed in. The -f and -m seem to trigger the
compiler to sqwak and not compile (which is proper).
Added code to add AES into openssl, for the aes/aes.a IF oSSL does not
have aes. This was tested on my sparc system. It has oSSL, but
not aes. Now o5logon format works, and builds properly
added oSSL header comment to the CBC128 functions borrowed for AES
Set FULL_UNROLL on by default for AES. Now same speed as my oSSL
build
CFLAGS_EXTRA was needed, to get things like the defines for Cygwin64
handle string.h/strings.h wherever strings.h was being used. This is
now AC proper code
Added lower level AES functions to aes/aes.a These are oSSL
compatible. NOTE, we need to do this for the SIMD code
Updated the oSSL function checks This should work properly when a
system has pkg-config with some very non-standard oSSL settings.
It still should work if not using pkg-config, by doing the search
for the lib ssl and lib crypto.
added aesni asm for cygwin32 and cygwin64 builds! about 180% speed
improvement to o5logon
added the type string for WHICH type of AES code is being used. We
have to set this in the init() function, getting the algorithm
element, adding this to it, and then resetting it. This is
because this is a RUN TIME check, not a compile time check
changed AES type strings
changed logic for cygwin/mingw .exe vs ln -s building of *2john
helpers
added quotes to AC_SUBST variables which might contain spaces. In
the AC_SUBST for CFLAGS_EXTRA we now pull in existing . Now with
this, a user can pass in CFLAGS_EXTRA, get those put into CLFAGS,
and NOT lose the configure handling of the CFLAGS variable. This
may help on some systems that are not cross compiling, BUT which
need to have some unique CFLAGS data entered. NOTE, I do not
know how to add this to the help screen. That would be VERY nice to
inform the users of. Also, we might want to add ways to do ASFLAGS,
and LDFLAGS without messing with the REAL variables and having
configure not auto probe them.
Correct fix for FreeBSD. Created a new m4 class for system specific
probes. Moved cygwin stuff here also, and streamlined cyg64
checking (no compile needed
the emms kills ETA on cygwin. I am not sure why it was added, but I
bet it kills MANY other system's ETA
Added 64 bit file handling for 32 bit systems. Moved 2 functions from
misc.[ch] into jumbo.[ch] which are new files
removed spurious execute bit from these files
Only do the LARGEFILE64_SOURCE if compiling 32 bit versions of these
OSs
added warning for 32 bit fseek/ftell
was not building on my sparc system, with ossl. The flags were not
there any more.
Some configure tweeks. aes Makefiles not quite right, moved some
system_specific stuff around in the macro
Added host os to the john BUILD string
64 bit on 32 bit compiler changes, required for solaris.
fopen64/_fopen64 options added. Also, _POSIX_SOURCE can NOT be set
prior to stdio on sparc if we expect any 64 bit file mechanics to
work properly
Patch needed to compile in VC
Fix for open issue of TS failures. What was happening was the
length of the input buffer was being cleaned, BUT the input buffer
was left dirty. This would cause subsquent runs to fail.
Since this is a MMX_COEF build, we needed to keep these buffers
clean, and losing the length of how much has been dirtied was
NOT a good thing.
Some fixes found in my alias code project. The alias still has work
left to do, but these bugs fixes can be pushed now
Fixes problems with krb5 not being detected and not showing in status
of configure run
Added AC_BUILT define wrapper to 32 bit fseek warning
Made Sybase-PROP BE compatible, AND changed non-static functions to
static or made them feal_ specific
set the krb5 check back to using AC_SEARCH_LIBS, instead of 2 separate
lib tests. Now we also ONLY set HAVE_LIBKRB5 instead of 2 of them.
This should make incorporation fo HEIMDAL easier, I hope
Still more krb5 issues (when krb5 was found, it was not showing yes
Fixed bug where OMP builds (x64), were failing with multiple defined
DES_bs_crypt functions
Fixed problems building with legacy Makefile.orig
Added SKEY algorithm into JtR as native code.
changed status to list skey now being built using internal code
Overflow bug fixed, now using temp var for crypt results. Using
unsigned int as parm type, to work around silly compiler warnings.
added the 4 SKEY formats
fixes for SKEY formats
Improved SKEY jtr native speed about 20%. Still just oSSL, but faster
fully handle 64 bit files, using autoconfig functions found (if using
autoconfig). If not, then origina fseek/ftell used. Also, we were
calling free on a mem_alloc_tiny object (that would be a core)
Needed to add jumbo.o to luks2john. Only needed for some builds, but
is needed
bare minimum MinGW port to build john. There will be more to do
moved sleep() for Win32/Mingw into jumbo.[ch], and added sleep() to
autoconfig
"Moving non-portable functions into AC detection. Handle !HAVE_LIBDL.
Move things from misc.[ch] into jumbo.[ch], and use AC, and non-AC
detection logic. There is still a LOT of functions to do. Some
are still not even in autoconf.ac. I simply did not want this patch
to grow too large. Better to put it in now, than later. Also,
there were several targets in Makefile.in where -DAC_BUILT was not
being set. Now that we are using more AC logic, we NEED to know
that. There was also a failure on non-standard path for one util,
needing openssl cflags
wow, huge problem in internal strcasecmp, BUT there probably will not
be many systems using that code
Fixes legacy builds
allow wildcards. I use config-cygwin.cache or config-mingw.cache in
the same dir
Bug fixes in the setenv jtr built function
Allow disable usage of pkg-config
Moved a few more non-portable functions into jumbo.h, and a few blind
function defines for _MSC_VER from misc.h
Added check for -ldl OR windows.h and if neither, then do NOT add any
GPU code. There is a warning emitted in such case for intel chips.
Also changed common-gpu.c to properly use the WINDOWS_H code. This
still should work on Makefile.orig, since HAVE_LIBDL is defined for
GPU targets
Fixes for HAVE_LIBDL or HAVE_WINDOWS_H for work. Also added to
plugin.c
Set AC_BUILT to 1. Also, added @PTHREAD_CFLAGS@ to uaf2john. It would
not link on mingw without this
Wrapped all unistd.h in wrappers. Made a wrapper for other headers
(fcntl.h, etc). Switched to using -std=c99 in MinGW, which
eliminates most of the printf formatting issues, BUT which caused
some porting issues
Reduced this OMP_SCALE a lot. This was taking a LONG time to run even
-test=0
Fix for legacy build issue with LLd
Fixes for broken krb5 systems, like cygwin. Removed the not HEIMDAL
defines. Changed ifdefs to #ifs for some HAVE_XYZ defines. WE
should do that across the board
added lbz2 to gpg2john. Code was there, just enabled it in autoconf
Removed 32 bit MMX/SSE asm. I still have Makefile.orig and dynamic
left to do
Added logic to fall back to MMX, prior to x86, IF SSE2 native test
fails
Changes needed to properly build a MMX, now that 32 bit mmx.S are gone
Reduced the OMP scale.
Removed legacy mmx.S code, mostly from dynamic formats
This should be the last file needed for the 32 bit *-mmx.S removal
Removed last traces of mmx MMX_COEF code. This was causing serious
problems in dynamic, and other formats. Even things were having
probems building. NOW, DES/BF, etc still use MMX, but all MD[45],
SHA1 do not
Renamed Makefile.orig to Makefile.legacy. The .orig was a BAD idea,
as this was a special extension and prone to be overwritten and lost
Made a little more robust. Had some old projects with HAVE_REXGEN
defined. By adding this simple logic, it will work either with
HAVE_REXGEN or HAVE_LIBREXGEN being defined. It will still unset the
logic IF the lib is found and too old
small warning removal for MMX build code
pkzip is better, but still not 100% fixed
fixed pkzip format (old pkzip). Now we store both crc and timestamp
checksums, and test BOTH inside the format. If either matches we
assume the checksum is 'ok'. There will be a few more false
possitives, BUT there is no other way, since there is no idication
of what zip compression tool built the zip, and WHICH of the 2
fields were used. Also fixed bug where if the decompressed item was
128 bytes or less, we would fail
Fixes bug #245. The fix was also done in some of the fix of prior
commit
fixed many warnings from cygwin build, due to this function NOT being
defined in a header, even though it is exported and usable.
changed if statmenents to allow dynamic to properly use OMP
Removed MMX_COEF==2 logic from dyna, and output sph_ripemd for the
ripe_md functions
Not a 100% fix for dyna OMP, but shows what MUST be done. I can fix
this, I just have to add some logic to detect pure MD5/MD4/SHA1, and
make appropriate inc computations. WE ALSO have to deal with para
sha2 formats. The formats are ok if they evenly divide the para
used. THat is why the SHA1_para == 1 worked fine for MD5_PARA 3, but
SHA_PARA==2 would not
Fixed issues in Dyna OMP, for SSE types. Now all builds should be OMP
happy
Got the problematic dynamic formats working on OMP builds. These are
the ones that can NOT be done with OMP. They now are built, but run
without OMP, while all the other dynamic DO run with OMP in the same
build
Removed code that was commented out (OMP run of non-OMP-compliant
formats)
2 new dyna functions, 39/40. net-md5 and net-sha1
Fixed bug in new formats
Added a hybrid fat/thin dynamic into the net-md5 format. All salts
less than 230 bytes are handled by dyna. The others are handled
by the original fat code in net-md5-fmt.c
fixed silly compiler warnings
Bug fix for #644
make sure these dyna formats are allowed to use max length passwords
the hash will allow
changed prepare to NOT add 5768U and 5768Fx if the data is not valid.
We were making invalid hashes pass valid by doing this before.
This function should also be calling prepare
rolled back prior forced prepare change. Added code to output user
name IF it is seen in the fields. We may want to do this for other
fields also
If salt bytes had high bit set, then char would sign extend, and put
out fffffff0 instead of f0. Typecasting to unsigned char for
each char avoids the sign extend
Added hybrid partial thin Dyna_40 to net-sha1. Changed net-md5 to
show dyna_39 in algorithm. Changed net-md5 to use a non-numbered
variable (made it easier to port net-sha1 to dyna).
Added proper prepare to haval. Also split up to have 2 valid
functions
Added matching test string as we have for the raw hashes
added prepare function and matching test string to these formats
Added prepare where needed, multiple valid functions (where needed),
and duplicate test cases (where needed)
Some changes spotted on sparc system
Added code to create FULL passwd compatible strings in
-list=format-tests. These formats now generate these types (GPU
formats not tested): dynamic (15,35,36,37,1015,1401), MSCHAPv2
mschapv2-naive, nethalflm, netlm, netlmv2, netntlm,
netntlm-naive, netntlmv2. They probabaly should be retestd
Changes for msvc building
Additional test on dynamic thin encoding
Added longer salts to net-md5/sha1 formats
Some more VC ports
Make sure when we remove HEX from dyna, that we do NOT remove it for
unsafe characters (line feeds, colon, etc). This is for .pot display
changed utf-8 encode size for UTF_8 formats
Added call to prepare to .pot file loader
Rolled back f89acf9 and added split forwarding into dyna thin formats,
so they call dynamic.split when needed
re-wrote length function to deal with 4 byte utf characters in a JTR
correct manner
Enable 4byte utf-8 characters. Surprisingly, I saw a very slight
performance gain (in -test mode)
Handle 4 byte utf-8 characters #685
prepare normalize short hashes, part of bug #650
Cannonized MSCHAP. The cannonical format is the short format, with no
extra fields
removed dependancy on openssl
Removed openssl dependancy
Fixed long standing memory buffer overflow issue, listed in bug #690
zip-aes: This format did not actually work
zip2 format. #434 #691 Removed FMT_NOT_EXACT. Now fully detects
passwords.
Comment chagnes in zip2john, and OMP tuning in the format)
Removed PLUGFORMATS_SRCS from makefile. This was a legacy requirement
for knowing when to make fmt_structs.h headers. Now we do this in
configure, so this variable is totally unused (and HUGE). This is
cleanup
Better information given for buffer over/under flow issues. If block
listed as not being freed, then a memory dump (some of the start and
some of the tail of buffer) will be output. This helps track down
just WHAT was the problem, and is helpful, especially when a COMMON
allocation function was where the data was allocated.
rexgen is now disabled by default. If the user wants it, and has a
working version, then --enable-rexgen is required to get it used
added defined simple dynamic formats to the -tstall function
added split to static linked methods in dyna thin formats. Added
FMT_DYNAMIC to all dyna thins. Did some other work on dyna thins to
make sure they were linked properly
cannonical issue (embedded nulls). Bug #705
document trailing WS in dyna salt can be a bad thing, where core JtR
will strip it. raw2dyna now detects this, IF the user uses it
Fixed problems with thin dyna. Should fix #704 and corrects 6cbc306.
6cbc306 was needed, but moving the function linkage out of the thin
formats init, and always calling dynas own init was wrong. This is
now corrected
Removed Gladman HMAC code, choosing a faster saved state model, like
we do in PBKDF2
wrap the intrinsics.h file in #define fence posts, so it is only
included one time
Modified pbkdf2_hmac_sha1.h to also do PBKDF1 algo, and modified
crypt-sha1_plug.c to use it
Added SSE2 logic to crypt-sha1. Proper salt handling in crypt-sha1 and
fixed the get-iteration function. Removed crypt-sha1_plug.c that
code was not needed at all
added copyright, and changed algo string from PBKDF2 to PBKDF1
(copy/paste bug)
Fixed crash bug
better validation. Salt up to 64 bytes. use strnzcpy where needed
added Local config processing from john.local.conf. The documentation
was changed also, and configure will create a commented skeleton
file. Any non List. section can be handled in this way, updating
the param values to our local value. This keeps the user from having
to edit the john.conf file, which is a BAD thing to do, since it is
owned by JtR developers and user changes get smashed
Added code to handle HSRP hash, and removed Crypt::PBKDF2, by writing
better inline pure perl PBKDF2-hmac code, and using it
Added -genall and -rgenall functions
fixed a bug in LM and mschapv2. Compute rand salts by hand for all
Authen::Passphrase stuff, so that -nrgenall logic works. Added
non-rand for -nrgenall into the random generation functions. This
version now fully mathces (regression test), my version that drops
Authen::Passphrase usage.
Removed dependancy on Authen::Passphrase
added keychain to pass_gen.pl, and generated some extra test strings.
NOTE, the data which has been encrypted is the EXACT same data, it
is just done with differnt password, salt and iv values
2 pass_gen.pl updates. Added additional encoding tries in LANMan
function. setup_des_key now generates a deterministic key,
setting all parity bits to 0.
pass_gen.pl: Added word_encode as param #2. Changed output on
messages to STDERR
Updated to v1.20
mschapv2: improved speed of cmp_exact by elimination of very costly
call to binary() for each found word
mschapv2 - ntlmv1: Fix to cmp_exact needed to work for both formats
pbkdf2-hmac-sha256: bug fix. prefix check did not work at all
pass_gen.pl: some name normalization. Fixed salt smash bug in pbkdf2
code. added pbkdf2-hmac sha1 and sha256
pass_gen.pl name normalize for dynamic (now dynamic_xxx works for
all)
pbkdf2-hmac-sha256 validation bug. Same in the CPU format
rar5 SSE: Work started. This code change now uses
pbkdf2_hmac_sha256.h It does NOT yet do SSE2, but is starting to
set things up. NOTE, we will have to do the last 32 hmacs
outside of SSE2 (probably)
Got RAR5 working with SSE2. NOTE, OMP is broken. I have looked, but
see nothing wrong
rar5_fmt: Found my OMP bug (stupid me)
pass_gen.pl: fixed sub name broken by 742f99c
Dyna: Some debugging logic, dealing with seeing what was going on at
setup time for split
net-md5/net-sha1: Fixed so they properly process dynamic_39/40 format
files
net-sha1/md5 still did not properly handle dyna_39 input files
salt() self_test for proper cleaning
fixing salt() not properly being cleaned. Many formats to go
fixing salt() not properly being cleaned. Many formats to go
fixing salt() not properly being cleaned. Done with Cygwin64
Mozilla format: was getting memory overwrite error. Not sure WHERE it
was, but it's gone now.
krb5-18 has salt non-clean on ubuntu-64
formspring, proper binary size and binary/salt align for dynamic
Fixed binary size, binary align, salt size and salt_align for all
dynamic thin formats
a few MSVC specifc changes
Fixed memory overwrite bug
a couple changes to memdbg
bcrypt_pbkdf2 portability issues
RAKP: fixes the pre-clean buffer seen on sparc #763
sha1crypt: BE fixes, #763
hsrp: fixed BE problems #763
sha1crypt: small fixes to BE code
rar5: BE fixes for #763
mozilla: fixed comment
config.c: fixed bug #767
Config.c: bugfix for last change. appends option properly, and works
with an empty section without core
crypt: fixes bug #779. Adjustments made for crypt format, to properly
work with subformat or salt being passed in.
First draft of dynamic salts. Inserted into zip format. Not used yet
by John core processing
Fixed warning about salt alignment issues
dyna_salt. zip format now compares salts properly
dyna_salt Fixed possible bug, if salt1 size was larger than salt2
dyna_salt: Made a fmt_default_salt_hash specially for dyna_salt
formats
dyna_salts: added fmt_self_test salt smashing logic for dyna_salts
VC bug, strdup defined for memdbg builds was undone by this define
dyna_salts: added cleanup of salts dynamically allocated
dyna_salt, added defines for easier debugging
rar: added dyna_salt code. Also removed 2 unneeded vars from salt
struct, filename and pos. They are temp vars
rar dyna_salt size problem. Stupid bug
rar2john: Removed static sized HUGE inline buffer. Now it is
variable, and can be controlled on command line. For -p type 1 files
rar2john: fixed overflow and logic that would not find values if
maxinline set too small
cracker.c wrong data type used. Both linux and Win32 man page lists
clock_t as type
dyna_salt. Use 4 param COMP_SIZE macro
dahua: removed warning, properly typecast char* to int, and just use
single isalnum function/macro to do the work
rar_fmt: removed numerous warnings, and added comments where we can
not handle large file size
legacy makefile needed dyna_salt.o. Fixes #807
cygwin-64 Makefile.legacy build fix
dyna_1300. Fixes #786
Wrote myself some TODO notes. All set length function may need to
clean buffers for md5_go builds
rar2john: added trivial getopt for VC
dynamic_format: Bug in MMX raw md5 code
getopt: Added a missing_getopt.[ch] set of files for sys without them
msvc: getopts ports, many external processes now compile also
correction of 339052e and getting #825 working. Prelim and not the
final fix I want, but better
dynamic: finalized #825 fix
net-md5 handle core for --skip-self-test. #828. Bug much worse than
just the skip-self-test case. It could have given many false
negatives
net-sha1 handle core for --skip-self-test. #828. same bug as net-md5
oracle: Correct max length for user name
oracle: increased to 30 character user name
oracle: added a user name length manifest, to clear things up a bit
opencl pbkdf2_sha512: removed warnings about using char values in
array access and operations
opencl-hmac-sha512: changed typecasts to ARCH_INDEX calls
dynamic fmt. pure comment change
dyna salt. debugging flag was in wrong place.
common-opencl use ARCH_INDEX for char value to avoid warnings
dyna_salt fix (memleak) in opencl formats
pass_gen.pl: added cisco4, and added hooks for cisco8/9 when I find
out how to do them
pass_gen Added cisco8 and cisco9 hashes
cisco8 hash added to CPU format
cisco8: added to GPU. Fixed a few things on CPU side also
pass_gen: added scrypt and django-scrypt hashes
oracle8, trying to correct crash on travis
oracle8, bug in last push
memdbg: correct 64 bit issues. make memdbg_extra NOT be default
pbkdf2_hmac_sha256: Travis fix (I hope)
pbkdf2_hmac_sha256: try again, Travis (my last try)
cisco8: prepare, no need for allocation. Flat static buffer is just
fine
memdbg: stop huge error dumps. Also catches crossed pointers (infinite
loop), and shows start of memory
cisco9: Modified scrypt_fmt.c to also handle cisco9 hashes
pure text formatting changes
escrypt: use functions from JtR memory.c
removed a dupe comment line added in some prior checkin
memdbg: had OMP commented out. Fixes #843
pass_gen.pl: removed scrypt include from global, and put into subs
makefile.legacy: Added OMPFLAGS to link for extra programs, since
they link memdbg.o built by john build
Numerous files, removed trailing whitespace
base64 conversion changes. Only minimally hooked into Jtr right now
removed execute bit on base64_convert source
scrypt, fix stack smash after base64_convert changes
base64_convert: adjusted some memory size values
memdbg: ex mode, fix for #843
base64_convert: changes buffer size logic. Added tests for overflow
logic to exe file
scrypt: added ScryptKDF format, #368 fixed
snprintf: Fixes #851
scrypt: allow scrypt hashes built with more than 32 bytes
base64_convert: Enhancments and bug fixes. Added flags to contol
processing
base64_convert: missed flag
base64_convert: missed changes to opencl
oracle: fix crash on garbage file
scrypt: fix #852
SKEY: valid() must pass checks in salt() also
base64_convert: full pass test suite. NO memory allocation required
any more
base64_conv: added len functions. Added mime with dot handlng. Removed
inline base64 code from scrypt and pbkdf2-sha256 formats
Fixed broken dyna40 as required by 01c44fd
dyna40 removed commented out broken hashed
net-sha1: needed to extend plaintext length
oracle: Partial fix for names > 16 <= 30 bytes
pcap2john: merged all pcap files. #838
cleanup of pcap2john.py
pcap2john: fixed var bug, commented out a couple for now
pcap2john.py: all handled now. Exceptions caught and ignored
configure: wpcap lib added to get cygwin working with pcap
pcap python, moved orignal files to unused
memdbg: moved from targets in Makefile.in into configure --enable
values
base64_convert: added flags to converts and flags to command line tool
pass_gen: added ODF, cleaned up many commented out code blocks. Added
some stubs
memdbg: added back as make targets. Removed memdbg_defines.h
pass_gen: allow -conten=xxx for ODF format
configure: cygwin with latest compiler release requires _GNU_SOURCE
also
NSS removal, some extra stuff still was left
base64_convert: fixed some bugs in base64-hex, added new mime alphabet
pbkdf2-hmac-sha1: added 2 new hash types in a prepare()
change signature to show this hash should get a utf-8 password
pass_gen.pl: added mozilla format hashes
mozilla: optimizations, removal of gladman hmac code
opencl_pbkdf2_sha1: add new passlib types in prepare
ODF: memset missed in salt function (found by TS)
pass_gen: put in wrong value into iteration for ODF (found by TS)
pass_gen: bug fixed in odf-aes code
pass_gen: wrong quote used
DEFAULT_ALIGN. Worked on cleaning up some of these (issue #317)
fixed BE core caused by f5366a2. NOTE all fmt_default_binary_hash_x
requires this alignment
openbsd-softraid: split long test string.
openbsg-softraid: fixed compile issue on certain versions of oSSL
openbsd-softraid: Fixed BE issues, reduced bin size
openbsd-softraid: wrong spelling
openbsd-softraid: reduced the binary size
zip: fixed crash on aligned systems, sparc, etc
zip, fixed BE and alignment issue
zip: one of the BE changes were missed
DEFAULT_ALIGN. Worked on cleaning up more of these (issue #317)
gpg: core fixed in BE caused by 6c1b599
DEFAULT_ALIGN. Worked on cleaning up more of these (issue #317)
DEFAULT_ALIGN. Worked on cleaning up more of these (issue #317)
DEFAULT_ALIGN. Worked on cleaning up last formats (issue #317)
DEFAULT_ALIGN. Removed define from formats.h. Fixes issue #317
dynamic BAD_OMP. from issue #375
rar: On vc, pthreads is likely not there
salted-sha1: added OMP support, fixes isssue #424
gpg: better valid. Will be a fix for #499, when ported
gpg-opencl: ported valid from CPU, with caveat
VMS: disable from BE builds
configure: BE output small bug
SIPdump: remove array index of char warning
tgtsnarf: warning about no trailing end of line fixed
EPI: sped up some, removed numerous punned pointer deref warnings
aix-ssha: removed some punned pointer warnings
several formats, removed punned pointer warnings
several formats, removed punned pointer warnings
configure: add ARCH_LITTLE_ENDIAN=1 to CFLAGS
configure: missed autoconfig.h.in in last commit
john: allow command line switch vs name of exe for extra utils (VC
only for now)
gpg2john: Fixed #477
gpg2john: mute subkeys (unless -S is used). Static added to many
globals
gpg2john: bug in last code. Algo 16 was broken by my recent changes
wpapcap2john: removed unverified key output (fixes #729 )
opencl-GRUB: add LWS/GWS output in verbose mode, as listed in #839
rar2john.c: POC code to add RAR5 support
crypt: problems with #defines and strdup
rar2john: switched vint handing from 32 bit to 64 bit in rar5 code
rar2john: wrong value in hash line, removed some comments, split
defines into header
removed exe bits from header
rar2john: Completed, merge rar5 into rar2john
rar5tojohn.py: moved to unused
dynamic_40: updated comments and screen output listing pad20, vs pad16
sse-intrinsic: SHA512 interface was 64 bit, but implementation was
using 32 bit../run/john -test=0 -form=bitcoin Now both use 64 bit
bitcoin: OMP bug in 32 bit linux, caused buffer to not align 16 bytes.
New helper functions created
memory.h: fixed spelling error
pass_gen.pl: odf making null padding on content too large. It worked,
BUT was more than needed.
rar2john.h some DOS eol in the file removed
rar2john: handle rar files where main header record is longer than 13
bytes (seen on rar files with ascii comments
benchmark-unify: updated to v1.8.0 formats
benchmark-unify: missed an older md5crypt
rar_fmt: removed allows_unaligned stuff in crypt all, and speed is
faster (5% or so)
rar_fmt: additional simplifications, simplifying prior to SIMD port
rar_fmt: even more simplifications
pass_gen: added rar4 -hp mode, -p mode should be doable
pass_gen.pl: added rar -p stored file processing
pass_gen.pl: added -p for compressed data
pass_gen: merged all 3 rar4 types into a single rar function
rar: put a hash of the data object into the salt structure
pass_gen: some cleanup
rar: -hp was also having same salt problems
opencl-rar: same issue (same salt) in this format as seen in the CPU
pass_gen: odf-1, found a bug in Crypt::OpenSSL::AES, and worked around
it
pass_gen: work around AES decrypt bug in a different way
pass_gen: hopefully last fix for perl bug on ODF AES
pass_gen.pl: added zip (AES) format
zip: Speling eror in comment, lol
opencl-pbkdf2-sha512: working on #539 issues
pbkdf2-hmac-sha512-opencl: Added code to allow all input types, per
#539
pbkdf2-sha512-opencl: issue #539, failing on some GPUs. Hopefully this
helps
opencl-pbkdf5-sha512: converted 8 to 64 bit from password and salt
opencl-pbkdf2-sha512: disable $ until we can get it working better
configure: --help message, work towards #612
configure: Fixed #612
configure: removed a couple stray \n from --help
configure help macro: added copywrite to edits, and some comment
changes
ecryptfs: better valid, and custom salt was not working
ecryptfs: added another non-default salt test string
pass_gen: added ecryptfs handling
pass_gen: added Office_2007. functionized get_salt, get_iv,
get_content
BFEgg: adjusted OMP_SCALE, removed a FIXME
bitcoin: improved valid() and removed many FIXMEs
pbkdf2-sha512-opencl: switch uint64(32)_t to ulong/uint, some other
cleanup changes
7z: improved valid(), removed many FIXMEs
cloudkeychain: use better pbkdf2, updated valid(), removed many FIXMEs
cloudkeychain: Added SIMD code to the PBKDF2-sha512
androidfde: Added SIMD code for pbkdf2-sha1, and removed a FIXME
blackberry: set OMP_SCALE and removed FIXMEs
missed one of my comments
cloudkeychain: reduced size of salt object and removed a FIXME
eigrp: improved OMP scaling
dmg: Added SIMD and removed a FIXME
dmg: MMX code should continue and not return
Makefile.legacy: removed old no longer c project mozilla2john
base64_convert: quite compiler warnings
base64_convert: bugs in base64_valid_length, flags not being used
properly
django: better Valid() and removed a few FIXMEs
EFS: better valid, ported to SIMD, cleaned up code
EFS: small changes to valid
gpg: improved valid even more
gpg2john: removed a couple fixmes
hsrp: Removed FIXMEs, OMP tuned
EPI and hsrp: removed some fixmes and OMP tuned hsrp
hsrp: Oops. last commit had code being copied the wrong way and was
lost.
mozilla: improved valid()
Some fixmes in KRB4, md2
sip: changed benchmarks to get 1salt/many-salt tests
net-md5/sha1: fixed salt length bug, and removed a FIXME comment
twofish plug: removed fixme and changed code to not crash on
REQUIRE_ALIGN machines
removed a few FIXMES
tcp_md5: fixed salt size bug, remvoed a FIXME
keepass: added twofish test hash. We will want to test on Sparc also,
since twofish may have issues
VTP: better valid(), OMP scaling, improved speed a lot. removed FIXMEs
eigrp: improved valid()
dmg-opencl: comment removed same as in CPU format
rsvp: improved valid()
dmg-opencl: comment removed same as in CPU format
efs: format renamed
lastpass: improved valid()
odf: improved valid()
pbkdf2-hmac-sha512: improved valid()
rawSHA256: added cisco4 and base64 processing where needed
rawSHA256: left DEBUG turned on.
gpg-opencl: improved valid()
pkzip: removed a spurious fixme comment
pbkdf2-hmac-sha512: better valid()
new atou() function added to misc.c
7z: change to usage of atou() in valid and in getsalt */
7z: opencl fix to mirror CPU version
pass_gen.pl: added office-2010 and 2013 formats
pass_gen.pl: simplified the office formats with functions
OMP scaling for several formats which had OMP_SCALE=1 and FIXMEs
haval: OMP scaling (45x and 35x improvments seen)
nukedclan: improved OMP scaling (about 80% gain)
radmin: improved OMP scaling some
SIP: improved OMP scaling
openssl_enc: improved cygwin OMP speed 64x. Improved non-omp speed a
tiny bit
truecrypt: for sha512, switch to internal pbkdf2 header. SIMD for
sha512. Moved logic from cmp_all/cmp_one into crypt_all
truecrypt: salt align, fixed failure in not turning off sha512 and
ripemd160 in the whirlpool init

Dhiru Kholia (356):


Add support for cracking KeePass 2.x files.
Get rid of BOM.
Add support for cracking PKCS #12 files.
Use BIO_write instead of BIO_puts.
Add one more test vector in pfx format.
Fix OMP build.
Bump LINE_BUFFER_SIZE. Needed for pfx format.
Rename pdfdump to pdfdump_old and add new working pdfdump file
Add OMP support to TrueCrypt formats
Use correct value of BINARY_SIZE
Remove debugging code (linux-x86-64-clang-debug was giving warnings)
Fix warnings when building linux-x86-64-clang-debug target
Add support for cracking Siemens S7 authentication protocol hashes
Fix multiple bugs in sshng2john.py
Document usage of ssh formats
Fix problem in office format found by magnum by using valgrind
Fix problem in office OpenCL format found by magnum by using valgrind
The "cracked array" was not always reset correctly. Fix it.
Integrate dmg2john with john
Remove dmg2john target and stop confusing people
Fix warnings in wpapcap2john
Add wpapcap2john target in Makefile
Add sample test vectors for IKE PSK format
Add support for cracking Java KeyStore files (Ladghar special edition
patch)
Fix running of KWallet format on big-endian systems
The new split() in pbkdf2-hmac-sha512 did not use new interface
prototype in bleeding.
Add support for WinRAR SFX files
Fix warnings in dmg2john
Add ssh2sshng.py utility for converting ssh hashes into sshng hashes
Information on cracking Oracle APEX hashes
Misc. fixes for putty2john utility
Add support for handling multiple files in uaf2john
Add support for handling multiple files in truecrypt_volume2john
Dynamic type for md5($p,$s) for long salts
Remove redefinition (issue #233)
Move office2john.c to unused directory
Fix ASAN crash in pkzip format
make valid() "stronger"
Fix ASAN crash in dmd5 format
Document known ASAN related crash in ipb2 format
Python port of dmg2john utility
Commit another weird and custom format
misc. fixes
fix resource / memory leaks in dmg2john.c
Remove dead code
Remove dead assignment
Remove unused code
Fix ASAN related crash in nk format
Fix compilation failure with Clang (trunk)
Fix memory leak + "invalid read" in pwsafe formats
Fix "invalid read" in keepass format
Fix "invalid read" in ike format
Fix misc. "invalid read" problems
make valid() stronger in clipperz format
make valid() stronger in radmin format
make valid() stronger in pst format
make valid() stronger in mozilla format
fix potential leaks in dmg format
fix memory leaks in zip2john
fix typos
fix warnings in gpg2john
misc. small fixes in dmg2john
Fix ASAN crash (without any performance loss)
Fix problems pointed out by Frank
Fix ASAN crash in oracle format
Fix ASAN crash (still needs better valid)
Add support for cracking bitcoin wallet files
Fix problems found by Alexander Cherepanov in mozilla format
Fix ASAN crash and (get|set)_salt methods
Fix multiple ASAN related crashes
fix clang-analyzer warning in mozilla DES code
Fix mistakes made in commit 23dc44df
fix potential memory leaks in rar2john
Hopefully the "right" fix for the zip crash
misc. fixes for zip stuff
Fix a typo in keepass2john
Fix base64 decoding bug and add support for Cloud Keychain files
Add support for cracking Cloud Keychain files
Make agilekc2john work under Python 3.3 too
Make agilekc2john work under Python 2.4 to Python 3.3
Rename agilekc2john.py to something more correct
Agile Keychain optimizations (thanks atom!)
Calculate only what we will use (thanks atom!)
Even more optimizations (courtesy of atom)
Add support for SHA-3 (Keccak) hashing function
some less-than-ideal fixes for keyring2john
misc. portability fixes
more portability fixes
Make dmg2john work under Python 2.4 to Python 3.3
misc. Python portability fixes
even more portability fixes
Remove unused code from ml2john.py
Make odf2john work under Python 3.3 too
Make office2john.py work under Python 3.3 too
Make sshng2john work under Python 3.3 too
Make sshng2john work under Python 2.4 to Python 3.3
portability fixes
Fix crash for "qpdf" generated file and misc. PEP8 fixes
Add error handling in pdf2john
Fix various crashes found by Alexander Cherepanov
Document that mozilla format fails on big-endian boxes
Don't be too greedy. Fix failures caused by 07a3e05.
Add support for cracking AIX smd5 hashes.
Add aix2john utility
Add support for "standard" smd5 hashes
Add support for "SSHA variants" in aix2john
Add support for cracking AIX ssha* hashes.
Add "well-known" test vectors
Add one more hash posted on john-users as test vector
misc. fixes for AIX stuff, recommended by magnum
Fix aix2john to use existing MD5 format
Add more test vectors in MD5 format
Add more test vectors in AIX format
Fix build for older versions of OpenSSL
Add variant of aix-smd5 format to handle longer password lengths
fix crash in ike format
fix crash in dmg format
borrow valid from the corresponding CPU format
fix crash in keyring format
tighten check in episerver format
Add support for cracking HAVAL hashes
minor tweaks
Add support for cracking Tiger hashes
Add support for cracking ripemd hashes
Add support for cracking LUKS
fix self-tests in LUKS format
Add support for cracking Whirlpool hashes
fix yet another crash in dmg format
check maximum hash length in episerver format
check maximum username length in mongodb format
fix crash in putty format
New dynamic types from Alexander Cherepanov and "Waffle"
fix crash in clipperz format
fix crash in office format
fix crash in sxc format
fix crash in wbb3 format
fix crash in pdf format
fix leaks and a crash in LUKS format
pbkdf2 usage optimization in zip format (thanks solar and sc00bz)
Cracker for files encrypted using "openssl enc" command
Add support for cracking Android FDE
fix name ;)
Add support for cracking RAR 5.0 "hp" mode archives
minor fixes for rar5 format
make androidfde2john run under Python 3.3.x
Update OFFICE file
OMP and binary_hash fixes for bfegg format
OMP and binary_hash fixes for dominosec format
dominosec optimizations
try to fix build on old Mac hardware
try to fix build on old Mac machine
Add support for cracking MD2 hashes
Add support for cracking PANAMA hashes
Add support for cracking Snefru hashes
Add support for cracking Skein hashes
bitcoin format also works for litecoin wallet files!
Add support for cracking scrypt stuff
minor fixes for scrypt format
Add support for SHA3-256 hashing function
get rid of DEFAULT_ALIGN from panama format
get rid of DEFAULT_ALIGN from radmin format
get rid of DEFAULT_ALIGN from blake format
get rid of DEFAULT_ALIGN from Keccak formats
get rid of DEFAULT_ALIGN from ripemd format
get rid of DEFAULT_ALIGN from skein format
get rid of DEFAULT_ALIGN from haval format
get rid of DEFAULT_ALIGN from scrypt format
ensure salt alignment
fail a bit more gracefully for -p mode RAR5 files
get rid of DEFAULT_ALIGN from snefru format
get rid of DEFAULT_ALIGN from whirlpool format
get rid of DEFAULT_ALIGN from tiger format
get rid of DEFAULT_ALIGN from ripemd format (again)
get rid of DEFAULT_ALIGN from putty format
get rid of DEFAULT_ALIGN from putty format, this time for real
get rid of DEFAULT_ALIGN from md2 format
Add support for cracking blockchain "My Wallet" files
blockchain format actually works now ;)
Use SIMD in blockchain format
blockchain format optimizations
make use of IV in blockchain format
GPU support for blockchain format
fix build problem caused by blockchain format
fix function prototype in mscash2-opencl format
fix OMP build problem
some "dangerous" optimizations in the blockchain format
copy optimization made in blockchain CPU format
small optimization in ssh-ng format
add GPU support for cracking GNOME Keyring files
add support for cracking 7-Zip files using header encryption
add GPU support for cracking 7-Zip files (aka GPU killer format)
Fix Issue #311 (use Base64 instead of hex encoding)
remove unused code from bitcoin2john.py
remove broken feature from bitcoin2john.py
add support for cracking IPMI 2.0 RAKP (RMCP+) hashes
fix slow hash loading problem in RAKP format
somewhat better valid for RAKP format
ipmi_dumphashes2john utility is no longer required
fix whitespace errors
Cracker for BlackBerry Enterprise Server 10 hashes
avoid naming conflicts with OpenSSL
add documentation for cross-compiling MinGW builds
MinGW portability fixes # 2 (for Makefile)
MinGW portability fixes # 1
GMP is not worth the trouble for MinGW builds (revisit later)
a format for CRAM-MD5 cracking
CRAM-MD5 format actually works now ;)
format for cracking eCryptfs
add ecryptfs2john utility
add more test vectors in ecryptfs format
add another test vector in md5ns format
fixes for linux-ppc64 target
fixes for OMP linux-ppc64 target
ecryptfs format is actually correct now
early preview of EFS format for cracking M$ EFS
commit bwtdt format before I lose it!
move "bwtdt" format to unused/
pdf2john fixes for bugs triggered by CMIYC 2013 files
add more test vectors in pdf format
add another test vector in keepass format
add another test vector in odf format
add another test vector in pkzip format
some KWallet format "improvements"
more KWallet fixes, thanks to gaganpreet!
fix math in kwallet format
commit broken MD5 format
get the build target right
building gpg2john explicitly is no longer required
fix typo in "bitcoin-qt" string
document steps required to crack bitcoin wallet files
add a note for building JtR-jumbo on FreeBSD
misc. ASAN related tweaks
fix stack-buffer-overflow detected by ASAN
use our standard license wording in 7z format
"fix" licensing in blockchain formats
remove a "critical" function from ecryptfs format
"fix" licensing in agilekeychain format
fix licensing in agilekeychain OpenCL format
fix licensing in LastPass format
fix licensing in cloudkeychain format
fix licensing in 1password2john.py utility
fix licensing in office2john.py utility
fix valid() in fde format
fix valid() in blackberry-es10 format
fix valid() in cloudkeychain format
fix valid() in blockchain format
fix valid() in blockchain-opencl format
fix valid() in rar5 format
fix valid() in eCryptfs format
fix valid() in 7z format
fix valid() in efs format
clean up dmg stuff a bit
"temporary" format for cracking RIPv2 MD5 hashes
add more test vectors in net-md5 format
add OSPFv2 test vectors in net-md5 format
Start using Travis CI
add "win64-mingw-x86-64" build target
make "win64-mingw-x86-64" build target work
build putty2john.exe properly
add support for cracking TCP MD5 signatures (BGP RFC 2385)
stop using "bzero" function
make debugging of "win64-mingw-x86-64" builds easier
fix broken MD5 handling in gpg format (thanks Lukas!)
add support for cracking "SYB-PROP" hashes
fix ASAN crash in "sybase-prop" format
RAR 5 "-p mode" support
handle multiple encrypted files in a RAR 5 archive
add "-p mode" test vectors in rar5 format
change "join" to "john" ;(
Add support for Siemens S7-1500 PLCs
handle "SPEC_SALTED" case properly in gpg parser
handle "SPEC_SALTED" stuff properly in gpg format
add lotus2john.py utility
Add support for cracking Redmine hashes
fix issue #456 (lotus85 format is seriously broken)
eliminate false positives for PGP keys using 2 byte checksum
assorted fixes for GPG format ;(
add support for "IDEA" in gpg format
we have a local "IDEA" implementation now
partial fix for issue #472
more fixes for gpg format (issue #472)
remove multiple definition of "idea_options" (fix MinGW build)
add support for cracking XenForo hashes
slightly better support for XenForo hashes
tweaks required for building on FreeBSD 10 (32-bit)
enable static win64 MinGW builds
fix overflow in clipperz format (fixes #493)
fix building of luks2john with ASAN enabled
fix building of luks2john (again!)
whitespace fixes for dmg2john.c
LUKS fixes (format change!)
add python port of keychain2john utility
turn off debugging by default in "grub-opencl" format
make kwallet2john.py executable
Use existing LDFLAGS for vncpcap2john.c too
add support for NetBSD's sha1crypt
fix memory leak in krb5-23 format
add documentation about kerberos auditing
fix a possible typo in formats.c (promiscuous)
add support for cracking known_hosts hashes
Old habits die hard ;(
fix typos in keychain2john.py utility
add "known_hosts2john.py" utility for processing known_hosts file(s)
fix "crypt_key not specified in enclosing parallel" compilation error
SecureMode tutorial
add support for handling multiple files in rar5tojohn
RAR 5 hashes from CMIYC 2014
advertise rar5tojohn.py instead of simply bailing out
Fix algorithm name in RAR 5 format
Respect iterations in RAR 5 format. Hash re-extraction is required.
Add documentation for cracking Apple DMG files
rename DMG cracking tutorial
fix a very bewildering false positive scenario in o5logon format
Guard OpenMP block properly in o5logon format
Add support for cracking HSRP MD5 authentication hashes
add license in hsrp2john.py
add license in rar5tojohn.py
get the dedication bit right
Support cracking EIGRP hashes. Highly speculative!
Minor fixes for ssh-ng format
misc. minor tweaks for recent cisco formats
add support for cracking NTP authentication hashes
slightly better NTP packet parser
fix a weird zip overflow bug
Add support for cracking VTP (Cisco L2 protocol) hashes
add support for cracking sha1($salt.$pass.$salt) hashes
Add support for cracking Dahua hashes
add more dahua test vectors
Add support for cracking RSVP authentication hashes
Fix and enable SHA-1 support in RSVP format
slightly better valid for vtp format
Add support for cracking IS-IS authentication hashes
remove exec. bit from a bunch of files
Support cracking BFD authentication hashes
Support SHA-1 hashes in BFD authentication
slightly saner EIGRP format
more EIGRP fixes
Enable cracking of more EIGRP hashes
More EIGRP related fixes and improvements
Add support for cracking MDC-2 hashes
disable the old and crappy mozilla format
clean rewrite of the mozilla format
mozilla2john.py helper script
restore the partial hash pre-computation trick
Add support for HMAC-SHA-256 hashes in EIGRP format
Handle custom salt in ecryptfs2john.py [1/2]
Handle custom salt in ecryptfs format [2/2]
Add a test HMAC-SHA-256 hash in EIGRP format
Fix memory clobbering in EIGRP format
Clean up unused/ folder
Clean up weird comments in dmg format
Clean up weird comments in blockchain format
Clean up comments in pcap2john.py
Clean up kwallet2john.py (PEP8 fixes + a nasty logic fix)
More EFS clean ups
make little things right (TM)

Claudio André (192):


Selectively pick stuff from Claudio's experimental tree.
Get some nt-opencl fixes from Claudio
Rebase on bleeding and copied 'my' formats.
Fix small tweaks after merge.
Remove any (#if FMT_MAIN_VERSION > 9).
Small tweaks.
Another small tweaks.
Missing parameter.
Fix the misaligned in xsha512.
Change spaces to tabs.
Space to tabs in john.c (only at lines I put there).
Fix the misaligned in xsha512.
Change spaces to tabs.
Space to tabs in john.c (only at lines I put there).
Create comments that document new shared functions.
Use sha.h and sha2.h as recommended at
http://www.openwall.com/lists/john-dev/2013/01/21/20.
Replace spaces to tabs (only).
Fix some misalignments.
Reintroduced some missed code during bleeding merge.
Fix a bug in benchmark.
Print the result transfer speed.
Move the duration config control to opencl_get_user_preferences().
More BINARY_ALIGN & SALT_ALIGN stuff.
Put copyright information inside common-opencl files.
Remove some trash from comments.
Small tweaks.
pwsafe-opencl: Auto-tune global work-size.
Move some printouts to common code.
Move more code to common.
Cache compiled kernel for CPU too.
Event more code moved to common.
Applies the same idea of 84fda0e04d414a77bdaebf58997dfa119768c794 to
pwsafe.
Mute some over verbosity find_best_lws (as done in
016f973d34b7ca34981acb7f078a0750a6d15d29)
Revert some bad changes i did.
Forgot to declare an extern function.
During OpenCL initialization start only requested devices (not all
available ones).
As defined in guidelines, include the 'new_keys' test.
To be more error tolerant, only working devices will be listed as
ready to use (it makes sense). Well, if every requested device
fails, there is a new check that should make the experience nice.
Use shared code in OpenCL raw-md4 and raw-md5 files.
Remove a comment that does not apply.
Include the duration check for GCN and stop auto-tune if 200ms limit
was reached.
Use shared code in OpenCL md5crypt.
Revert the 200ms kernel execution check.
Now it runs an OpenCL build on a host without *any* working OpenCL
device or platform.
OpenCL formats will be listed only if they can be used.
More than 25% performance gain on sha512crypt on VLIW5.
Small tweaks.
Fix a misalign.
Great improvement on VLIW5 (buggy but passes self test).
Clean-up.
Hopefully the bug is gone.
Tested with TS and 'real' cases from
http://openwall.info/wiki/john/development/GPU#Acceptance-Tests.
Everything seems to be Ok and on VLIW5 (at least mine) it runs at 2x
faster.
Better bounds detection Or I fixed a bug (i haven't found) or I
create a new one.
Now opencl_find_gpu is called only if there is (at least) one valid
OpenCL device (previous patchs). So opencl_find_gpu must point to
one valid OpenCL resource (even if it is a CPU). It means
opencl_find_gpu will point: - to an OpenCL CPU. - or better,
to an OpenCL GPU (if any).
Allow sha512crypt to be used on no_byte_addressable hardware.
Refactor opencl_find_gpu() in order to show its real functionality.
GCG! Ah GCN! Are you kidding me?
Change a comment about binary kernels generation.
Fix a problem on office2013 kernel on AMD.
Try to detect if the OpenCL library exists on runtime.
OpenCL SHA2 formats have to follow CPU get_binary code.
Better auto-tuning setup (for split kernels).
Wrong profile event was in use.
Revert "Try to detect if the OpenCL library exists at runtime."
Fix for Sayantan's formats.
Use default uint64_t definition (stdint.h) for non-OpenCL code.
Include uint64_t definition (stdint.h) in common-opencl.h.
Add FMT_SPLIT_UNIFIES_CASE to a bunch of SHA-2 formats.
Fix bf-opencl after a bogus merge conflict resolution.
Fix des-opencl for bleeding
Move salt transfer to set_salt() for sha256crypt.
Move salt transfer to set_salt() for sha512crypt.
Move salt transfer to set_salt() for xsha512.
Proper event usage for LWS auto-tune.
Remove the sha256crypt-ng: it is not necessary anymore.
My branch becames the reference to the next merge.
Small tweaks in sha512crypt OpenCL code.
A proper fix to the incapacity to deal with passlen=24 AND saltlen=16.
Previous commit can handle it, but since it hurts performance a
litte, this is a best solution.
Remove unused blank lines.
Memory flags reviewed at NVIDIA OpenCL Best Practices Guide (chapter
3.1).
Fix a memory leak.
Mute some warnings on OSX.
Create a cisco type 4 OpenCL format (re-using raw-sha256).
Fix a bug inside -DDEBUG code.
sha256 (raw): support max. length of 55 and minimize transfers to
actually needed size.
Inform GWS auto-tune routine if the format has a maximum
global_work_size it can handle.
Transfer partial data while JtR is still creating keys.
Compute and show index transfer time for sha256 (raw).
Merge raw-sha512 and xsha512 in order to use only one file.
Fix a bug on GCN at bb06e7e589fa0e74c566f95861513c29f540f7cf.
Mute a warning on OSX.
strlen() was an important bottleneck.
Initialize all important GPU buffers.
Use a better default LWS for sha256 (raw).
Small performance tweaks for sha256 and sha512.
Remove the '__local' version of sha512 (raw) kernel.
sha512 (raw): support max. length of 55 and minimize transfers to
actually needed size.
Transfer partial data while JtR is still creating keys (sha512 [raw]).
Mute (again) a warning on OSX.
Cisco type 4 fix
Remove unused xsha512 file.
Unify valid() and binary() for crypt-sha512 formats
Finish 0b7a3f5efbbbad94c421e34855b7168f04d4d92d (unify common
functions).
Improve error handling and messaging while at --list:opencl-devices.
Call OpenCL related functions only at format init(). - also, use make
sequential_id an int.
Remove unnecessary OpenCL init() functions.
sha256crypt-opencl fix for opencl_preinit().
Revert to do a full check (device is really working) while
initializing a specific device.
Unify OpenCL raw-sha256 and cisco-4, just like the CPU formats.
Follow naming convention specified at: a77b867.
Unify valid() and binary() for sha256crypt CPU and OpenCL formats.
Remove (old) debug code.
Remove fake multi-GPU support from sha256crypt.
Improved shared LWS/GWS test (see 261d7b1).
Document opencl_find_best_lws()
Try to fix a regression on 13.4 Catalyst driver (revert performance to
13.1 situation).
Unify common/shared code in order to try new LWS/GWS enumeration
schemes. See: 24e0565.
Continuation of 24e0565. In order to apply the new LWS/GWS scheme,
some shared code is moved to a new function.
Remove duplicated (auto tuning) code.
Use common auto-tune functions for RAKP-opencl
Move duplicated code from OpenCL formats to autotune.h file.
OpenCL bug fixes and tweaks.
Move auto tune functions to its own source file.
Band aid fix for Intel HD Graphics auto "tune".
Use real auto-tune for Intel HD Graphics.
Start using pointers to OpenCL events. So, from now on,
crypt_all_benchmark() is not mandatory for formats using shared
auto-tune code.
xsha512 format will not crack OS X 10.8 or higher (see
6947648242ca51260945d2dab8e1af129362fbc2).
Use auto-tune always (at least, for this fast formats).
Replace spaces with tabs in common-opencl.c file.
User should be able to --list=opencl-devices -dev=0. See:
cb4d82165f6257fc710e1b6c2179514db83e9e2e
Replace spaces with tabs in common-opencl.h file.
Fix: select a proper name for a function.
Deprecate opencl_rawsha512_fmt_plug.c and opencl_xsha512_fmt_plug.c.
See #676.
Missed one file in 0287d486a8f21888ec9f111a74a790d00da6b5fa.
The get rid of the "-ng" part in OpenCL formats raw-sha512 and
xsha512.
Small tweak.
Fix a typo.
Grammar fixes.
Use shared code for auto-tune in rar5.
Small tweaks for LWS auto-tune (rar5 and PBKDF2-SHA256).
Fix a few errors in shared auto-tune code.
Refactored get_multiple macros. Improved auto-tune default behavior.
Small tweks.
Document the usage of john.local.conf for OpenCL settings. Remove
unnecessary examples.
John.local.conf should be used to keep OpenCL settings.
Shared OpenCL autotune tweaks.
Optimize raw SHA512 to be ready to latest driver (14.6beta).
Move shared macros to the header file.
Small tweaks.
Remove more unnecessary code.
Shrink the kernel a little bit more.
Remove one unused var.
Clean raw SHA256 code.
Rewrite some comments.
Remove one unnecessary math operation.
Comment about a pending task.
Fix #392 (at least on AMD driver 14.6beta). No regressions (at least
on bull).
Avoid unnecessary SWAP in cryptsha512-opencl. - 8% gain on GTX 570
(now it runs at 14.2K c/s) - Also, on HD 6770 (driver 14.6beta)
achieve the original performance (from 12.6 driver).
Clean up lotus5-opencl initialization.
pbkdf2-hmac-sha256-opencl off-by-one buffer overflow fix.
Optimize sha256-opencl further.
Fix an error in sha256crypt-opencl. Now it passes JtR-TestSuite.
Small tweaks.
Increase HASH_LOOPS for sha256crypt-opencl.
Remove commented code.
Autotune for sha256crypt-opencl (it is fast enough).
Fix a formatting problem in sha256 OpenCL kernel file.
On --list=opencl-devices show PCI information for NVIDIA cards.
Last but one improvement for sha256crypt OpenCL file.
Revert to use a safer memory access patern. Need to investigate what
is wrong with the program.
Changed the API of OpenCL auto-tune init(). Make a relation between
the ADL/NVML device to "our" device number, using PCI ID (#750)
Clean code in SHA2 fast OpenCL formats.
Fix a bug in auto-tune seen in NVIDIA boards.
Get the NVIDIA compute capability information.
Optimize sha512crypt-opencl kernel.
Fix a compilation problem on OSX.
Minor clean-ups on sha512crypt (OpenCL) prepare.
Shrink prepare binary code. On AMD driver 14.9 they reintroduced a
bug, workaround have to be applied again.
Well, use this setup to fool the AMD driver madness.
Fix a couple of comments.
Shrink sha512 prepare further.
Use __constant if possible (sha512crypt-opencl).
Do a sane job during OpenCL initialization.
Optimization for NVIDIA SM 30 and beyond . Gives 2000 c/s on GTX
Titan. - For future usage.
Fix to #739.
Ops: I missed one cast.
'Improve' Raw-sha1 initialization too.
Performance improvement on HD 6770 (4%). - also, apply magnum's
request to auto-tune always.
Better for auto-tune on NVIDIA.
Small tweaks for cryptsha512.
Fix for auto-tune using Intel GPU.
Avoid any type conversion between int and uint.

Frank Dittrich (166):


Add get_source to --list=help:format-methods output
Add binary and salt alignment to --list=format-[all-]details
Fix typo in doc/README-OPENCL
Fixed some more typos
Add binary_hash_[56] and get_hash_[56] to 16 formats
mozilla_des.c and .h: #if 0 unused functions
sap2john.pl: improve coding style (tabs vs. spaces)
doc/OPTIONS: remove the only [tab] which is not part of a heading
Remove dead code from mozilla_fmt.c - used #ifdef DEBUF
Fix grammar
Adjust benchmark-unify to jumbo-8 format name changes
Benchmark-unify: map KRB5 format names
Fix a bug when using --stdout, introduced in e14ac00.
benchmark-unify: adjust format name mappings Add "Mozilla SHA-1
3DES" mapping Adjust "pdf" mapping
Fix bash completion for formats if --list=hidden-option has
--format=CLASS
Bash completion: Workaround for --format=CLASS parsing
Let --list=format-methods handle new format methods
benchmark-unify: sort format name mappings
chmod a-x for several files that don't need to be executable
Rename formats: "Office 20xx" -> "MS Office 20xx", "M$ Cashe" -> "MS
Cashe"
Enhance doc/README.bash-completion, mention prerequisites
dynamic.conf: Move the dynamic_1501 format definition (Redmine)
chmod a-x run/dynamic_flat_sse_formats.conf
dynamic_flat_sse_formats.conf: adjust algorithm names
dynamic.conf: avoid nested brackets [ [ ] ] in john --test output
Add a space in dynamic_18 format name
Add --list=format-tests.
Ignore "reserved" dynamic formats for --list=subformats
Makefile: Detect which address sanitizer option to use for clang debug
builds
Revert "Makefile: Detect which address sanitizer option to use for
clang debug builds"
doc/Option: Add --list=format-tests description
Some bash completion improvements
Fix typos in comments (run/repeats16.conf, run/repeats32.conf)
doc/OPTIONS: "-example ciphertext" added to --list=format-details
Grammer fix in doc/EXTERNAL
In core doc files, use GNU-style double dashes for long option names
1,$s#-for=#-form=#g in run/DYNAMIC, because -for= is ambiguous
doc/DYNMIC_SCRIPTING: replace -form=$dynamic$ -sub=dynamic_1030
with -form=dynamic_1030 etc.
--list=format-tests: Handle tests that contain line feed characters
Improve valid() for clipperz, fixes issue #457
Improve valid() for openssl-enc, fixing #498
Improve valid() for django format, fixing issue #460
Build ../run/luks2john (luks2john.c and Makefile fixed)
Improve valid() in rar format, fixing issue #459
Django format: document undefined behavior of atoi in valid()
...and reduce risk of triggering that undefined behavior.
Improve valid() of NETLMv2, fixing issue #461
Fix --list=format-tests: for empty ciphertexts, call prepare()
Fixed some more bugs in Django format (valid)
Fixes for KeePass format's valid()
Fixes for Bitcoin format's valid()
Fixes for 7-Zip format's valid()
Fixes for 1Password Cloud Keychain format's valid()
Fixes for gpg format's valid()
Format LastPass, sniffed sessions, additional check in valid()
Fixes for ODF format's valid()
Minor improvement of PBKDF2-HMAC-SHA512 format's valid()
Replace 2147483647 with INT_MAX in valid()
Even more checks in gpg's valid()
Fix warning caused by ffc7812
Add poor OpenMP scalability flag to --list=format-all-details
dynamic_THIN_FORMAT_LINK: use PASSWORD_HASH_SIZES ... to make sure
all the binary_hash[i] and get_hash[i] methods get passed to the
thin formats.
benchmark-unify: add some mappings to make it work with older
versions at least as well as unstable does...
benchmark-unify: add/change mappings for changes in core 1.8.0 --test
output
benchmark-unify: adjust logic for dynamic_n and old md5_gen(n)
some relbench improvements and adjustments
Fix -Wdeclaration-after-statement compiler warnings in dmg2john.c
c3_fmt.c: support ./john --list=format-tests --format=crypt
--subformat=md5crypt
c3_fmt.c: Print errors to stderr instead of stdout
luks2john.c, use %zu for sizeof(), to fix compiler warning on
linux-x86
bash completion: reuse --pot= logic for --loopback=
bash completion: support --intermediate-enc= and --target-encoding=
sh completion: support --mkv-stats=
bash completion: support --bare-always-valid and --verbosity=
.mailmap: make sure git maps my commits to my new email address
Fix issue #494 (some log info was printed once per forked process)
fix typo in comment
Re-add an "if (john_main_process)" that is needed for MPI
formats.h:define FMT_MAIN_VERSION earlier than before
define a FLG_COST for new option --cost
First revision of testing for different tunable costs among hashes
Let 9 more formats report tunable cost values
Tunable cost values for 7z and keepass
Tunable cost values for skey format (S/KEY)
Tunable cost values for agilekeychain and aix-ssha* formats
Android FDE format: remove unneeded and misleading components from
salt definition
Tunable cost for bitcoin format
blackberry-es10: remove component "iterations" from salt definition
7z-opencl: prepare for FMT_FORMAT_VERSION > 11 even if broken
Tunable costs for cloudkeychain and Django
BF_std.c: Fix a typo in a comment
cloudkeychain: tunabme cost name "iteration count" instead of
"iteration_count"
Report tunable cost values: dmg_fmt_plug.c drupal7_fmt_plug.c
encfs_fmt_plug.c
episerver: report hash type as tunable cost (1: SHA1, 2: SHA256)
Revert "blackberry-es10: remove component "iterations" from salt
definition"
Revert "Android FDE format: remove unneeded and misleading components
from salt definition"
doc/OPTIONS: better --cost= examples
Minor adjustments to john's usage and --list=hidden-options output
doc/README.librexgen: use --regex instead of --rexgen as option name
commit b6b18713 broke KRB5 support for make -f Makefile.orig, fix it
Make sure -j option works for make -f Makefile.orig
Fix gcc warnings for non-autoconf 32bit Linux build
Wordlist.c: Fix clang compiler warning (or even bug) in
restore_state() caused by commit 0dcff5d8
wordlist.c: let all regex specific code depend on #if HAVE_REXGEN
Fix AES-NI support for legacy (non-autoconf) 32 bit linux builds
Format django-scrypt: report tunable costs N, r, p
Log tunable costs even if they don't differ among salts
ike format: report hash algorithm used for hmac as tunable cost
keepass: report version as 2nd "tunable cost"
keyring: report tunable cost (iteration count)
LastPass, sniffed sessions: report iteration count as tunable cost
odf: report "iteration count" as tunable cost
office: report "MS Office version" and "iteration count" as tunable
costs
oldoffice: report "hash type" as "tunable cost"
pbkdf2-hmac-sha1: report iteration count as tunable cost
pbkdf2-hmac-sha512: report iteration count as tunable cost
pbkdf2_hmac_sha256: report iteration count as tunable cost
pwsafe: report iteration count as tunable cost
rar5: report iteration count as tunable cost
sxc: report iteration count as tunable cost
adjust some formats in src/unused to FMT_MAIN_VERSION > 11
sha1crypt: report iteration count as tunable cost
broken/opencl_7z_fmt.c: tunable cost related fix
scrypt format: report N, r, p as tunable costs
Use "$(CC)" instead of "gcc" in Makefiles
some more Makefile changes
Makefile.legacy: fix two errors for generic build
Makefile.legacy: avoid make warnings for generic builds
Makefile.legacy: make sure we really use the intended compiler for aes
subdir
chmod a-x hmacMD5_fmt.c and aes/openssl/ossl_aes_crypto.c
wordlist.c: avoid compiler warnings for debug builds
doc/ENCODINGS: 2 grammar fixes
Skip tunable cost reporting if no hashes were loaded This fixes a
possible segfault
unicode.c: s/ansi/ANSI/
john.bash_completion: improve completion for encodings
listconf.c: call fmt_init for --list=format-[all-]details ...to
report an adjusted max. password length:
reorder ripemd-128 tests (untagged hash first)
Sync PBKDF2-HMAC-SHA256 CPU format tests with OpenCl format
Sync OpenCL ODF format tests with CPU format tests
Sync OpenCL RAKP format tests with CPU format tests
Sync OpenCL Raw-MD4 format tests with CPU format tests
Sync Raw-MD5 format tests (OpenCL / CPU / dynamic)
Fix debug build warnings in opencl_pbkdf2_hmac_sha256_fmt_plug.c
Raw-MD5: fix debug build breakage caused by 9aa03202
Sync raw-SHA256 hashes
opencl_keychain_fmt_plug.c: fix debug build warning
Sync Raw-SHA512 format tests (CPU/OpenCL/CUDA)
Bash completion: fix comletion for format classes
Bash completion: Fix issue # 687 for real.
Bash completion fix (format list still had "dynamic,")
Report librexgen version for ./john --list=build-info
listconf.c: '\t instead of ' ' between regxen's build time and runtime
version
Re-add reporting of load time versions of NSS and NSPR libraries
Fix a bug "use of logical '&&' with constant" in bench .c
Fix generic build (-f Makefile.legacy) breakage which was caused
by commit 7ec88f81a3826006e667ff8b2972ec89d87612fa.
Fix two compiler warnings for non-sse OMP builds
rsvp format: report hash algorithm used for hmac as tunable cost
Mute warning ‘sig_handle_reload’ defined but not used if SIGUSR2
is not defined
Report some more tunable costs
rsvp format: fix valid() to avoid segfaults
Make sure --list=format-methods also reports source()
Use "Disabled in configuration file" instead of "Disabled in john.pot"
in --list=format-all-details.
One .include [List.Rules:OldOffice] in [List.Rules:Jumbo] is enough.
Adjust bash completion bodge from commit a15e12e for --fork=
Fix gcc warning introduced in 172e933
OpenBSD SoftRAID: report iteration count as tunable cost and add
BENCHMARK_COMMENT
s/varient/variant in comments

Sayantan Datta (73):


mscash2-opencl:added multi-gpu interfaces,bug fixes
opencl-mscash2:no segfault when mixing devices with large difference
in speed
mscash2-opencl:code cleanup
mscash2-opencl:code cleanup
mscash2-opencl:code cleanup
bf-opencl:code cleanup
bf-opencl:code cleanup
bf-opencl:code cleanup
descrypt-opencl:code cleanup
mscash2-opencl:ciphertext format changed, no trailing white spaces
descrypt-opencl:cmp on gpu
shared valid,split,prepare for cpu and gpu mscash2
descrypt-opencl:improved compare
bcrypt-opencl: fixed AMD 7970 ASIC hang
mscash2-opencl: supports 128byte salts
mscash2-opencl: fixed warnings and other issues
mscash2-opencl:multi-gpu fix
mscash2-opencl:fixed quick benchmark
Raw-MD5-opencl: compare on gpu
Raw-MD5-opencl: fixed memory cleanup
Update opencl_rawmd5_fmt.c
Raw-MD5-opencl: status check bug fix
nt-opencl: no branching in coalasced loading loop.
nt-opencl: cmp on gpu
nt-opencl: use opencl_init instead of opencl_init_opt
raw-md4-opencl:cmp on gpu
raw-sha1-opencl: cmp on gpu
New format added, mscash-opencl: ported directly from mscash-cuda.
mscash-opencl: optimization patch #0
mscash-opencl: optimization patch #1
mscash-opencl: optimization patch #2
mscash-opencl: optimization patch #3
loader: added sequential id for salts
mscash-opencl: compare on gpu
nt-opencl: fixed bug causing inefficient keys transfer.
added mask mode interface
added new format param
mscash2-opencl:adhere to device limits.
mscash2-opencl: fixed zero min_keys_per_crypt bug.
mscash2-opencl: improvedpreprocess kernel.
mscash2-opencl: supports non-standard iteration count.
mscash2-opencl: expected to fix problems with weaker gpus.
Patch from the Hash Runner 2014 contest. Lotus5-opencl format.
descrypt-opencl:fixed memory leak. An unrealesd Event object, although
innocuous in most cases turned out to be the root cause of this
issue.
Updated mask mode. Now faster than incremental, as it should.
new mask mode ?H placeholder bugfix and some other optimizations.
duplicate check before inserting character following an escape
sequence.
improved performance when using node/fork with mask mode.
Generates skipped chunk using session/restore.
mask mode resumes accurately without any loss of work.
fixed compiler error introduced in 4b0612750841044
fix ETA calculation with affecting work division among nodes.
split mask mode functions.
Hybrid-mask enabled.
mask mode bug fix and performance improvement in hybrid modes
mask mode now supports --max-length
Hybrid mask: Bail out with error if [the used portion of] hybrid does
not contain ?w
Hybrid-mask: leaner code for supporting --max-length param.
Hybrid mask:added varibles mask_add_len and num_qw
Hybrid-mask:fix mask_add_len
mask mode escape sequence fix
mask mode add_mask_len fix following the escape sequence fix
mask mode escape sequence fix
mask mode leaner code for max/min len iteration
mask mode: fix redundant key generation after exhausting all
placeholders when using min-length
mask mode fix: 9 does not gets dropped with--mask=[112010-998-0]
mask mode fix: sequence of characters in a placeholder now conforms
with rules.
mask-mode: fix distribution of candidates when using -min-length
mask-mode: fix session/resume when using -min-length and fork.
mask-mode: leaner code.
mask-mode: update mask_tot_cand in truncate_mask()
stretch mask with last placeholder
mask-mode:fix issues with mask stretching.

Lukas Odzioba (27):


CUDA multigpu first draft for pwsafe
gpg2john: Handle multiple keys per in file, as well as multiple
infiles.
Add OpenCL 1.2 error codes to our debug routines.
Include OpenCL version information into --list=build-info
(re-)enable agilekeychain format
gpg2john fixes
CUDA versions in --list=build-info
Basename helper function in misc.c, also capable of stripping
extensions.
gpg2john GECOS support
fix crash in gpg format
SIP valid() fix.
SIP valid() fix.
Implement shared fmt_default_binary_hash_N() for the common case.
Last bunch of formats making use of shared binary_hash() functions.
Commit PBKDF2-HMAC-SHA256 format
Commit PBKDF2-HMAC-SHA256 OpenCL format
tool to convert gadu-gadu auth packets to JtR format
phpass OpenCL kernel tweaks
Add binary_hash() functions to phpass-cuda and md5crypt-cuda formats.
PBKDF2-HMAC-SHA256 Patch for splitted kernel.
label test vectors in gpg format
Fix some broken valid().
Fix keyring valid()
Multi-device bugfix for pwsafe-cuda.
MD5crypt-opencl optimizations.
pbkdf2-hmac-sha512-opencl
Workaround for buggy CUDA memcpy() of length 0 in md5crypt.

ShaneQful (20):
Added prepare method which checks for the old style pdf hashes and
converts them to the new style pdf hashes if necessary
Cleaned up comments and added self to credits
Fixed bug Dhiru found in pdf2john.py. There was an issue with one of
my regexs so that it didn't cover all situations
Remove FIXME(s) (Don't scare Frank and magnum anymore)
Removed assert which caused bugs in some documents generated with word
for the mac (cherry picked from commit
ddbbc65639305473a3311a339501da82473b1d77)
Update CREDITS-jumbo
Added License to pdf2john
Unicode fixes for python 3 in office2john
Added Python 3 support for pdf2john
Fixed spelling error
Changed is_meta_data_encrypted to return a boolean rather than a
string
Changed get_encrypted_object_id to get_object_id in order to get any
object id from the trailer
Impemented parse meta method, just get values methods left
Fix for checking meta data encrypted in python 3.2
pdf2john now gets the title and year created from xmp metadata
pdf2john now gets all relevant metadata when metadata left unencrypted
Fixed bug in pdf2john where wrong objects could have been used
Small fix to get_xmp_values method in pdf to john
Added ability to odf2john to generate a gecos field for meta data of
it exists
Removed pointless fix to pdf2john

Solar (20):
Fix breakage caused by commit aab646b42afe93ca909b
Bleeding Backports from john-1.7.9.6-c6.
john-1.7.9.6-selftest-1.diff
john-1.7.9.6-done-1.diff
john-1.7.9.6+done-reset-1.diff
john-1.7.9.6+reset-crypt_all-2.diff
john-1.7.9.6-LM-1.diff
john-1.7.9.6+crypt_all+LM-crypt_all-pcount-1.diff
PoC optimization for NTLMv1. Maintain a table for the third DES block.
2nd version of NETNTLM patch
Try to speedup cmp_all() by use of a bitmap. This only makes sense
when cmp_all() is called multiple times per crypt_all()'s actual
processing - that is, when cracking two or more C/R pairs at
once. There's a check for that in the code. Moreover, use of
the bitmap is automatically disabled when the C/R pair count
reduces to 1.
raw-SHA512-ng, trivial optimizations.
Licensing files
john-rawSHA1_ng_fmt-omp-reduction.diff
Add 'dokuwiki' external mode from
http://www.openwall.com/lists/john-users/2013/06/08/14
Added scrypt format
Mask mode for GPU
john-descrypt-opencl-section0-fix.diff
7z2john.py removal of some broken code
Patches from the Hash Runner 2014 contest.

Alexander Cherepanov (16):


Just a small patch to fix strncmp in NETLM format.
WPAPSK bugfix.
Some typos.
Typo in dynamic.conf
Replace unicode em-dash in putty files.
Replace non-ascii char by hex code in pass_gen.pl.
Replace several non-ascii copyright signs by "(c)" string.
Fix typos in README.bash-completion.
Fix some typos in README-OPENCL.
Get rid of strncmp with n==1.
Add some band-aid to valid() in sxc format.
Improve robustness of valid() in pkzip format.
Make valid() in sunmd5 format robust.
Fix a crash in dynamic with an overlong salt.
undrop: limit the length of password. (Fixes a crash.)
krb5: ensure that username and realm are non-empty. (Fixes SIGFPE.)

rofl0r (15):
factor out struct tcphdr
Makefile: allow JOHN_LDFLAGS
tcphdr.h: remove unneeded typedef
tcphdr.h: special-case endian.h for mac/bsd
timer.h: remove unneeded include (sys/timeb.h)
timer.h: re-add sys/timeb.h to windows section
rename vncpcap2john.cpp to vncpcap2john.c
turn vncpcap2john.c into C
vncpcap2john.c: fix memleaks
vncpcap2john.c: initialize pointers
vncpcap2john.c: remove unneeded check
fix Makefile for vncpcap2john
vncpcap2john: add license blurb for own contribs
Makefile: add proper dependency information for vncpcap2john
vncpcap2john: remove bogus NUL check in makehex()

bwall (13):
Initial pwsafe optimization
Removed OpenSSL tag from pwsafe_fmt_plug
Updated copyright
Optimized the iterated SHA256 in pwsafe-cuda
Optimized the iterated SHA256 in pwsafe-cuda
Added copyright information
Applied optimizations to pwsafe-opencl and cleaned up copyrights
Cleaned up and optimized pwsafe cuda and opencl
Updated some copyrights of updated files
fixed the multiple gpu revert issue
Implemented split kernel on pwsafe-opencl
Pushed for more optimal settings
Increased the plaintext size to 87 in pwsafe-opencl

Harrison Neal (7):


Add OpenCL plugin for RAKP
Have RAKP OpenCL plugin be compiled and used
SHA-1 OpenCL and/or AES-NI support for o5logon format
Fixes for OMP support
Initial centralized AES support (OpenSSL, AES-NI)
Consolidate o5logon AES-NI and non-AES-NI formats
Fixes for Mac OS X and parallel compilation

Tavis Ormandy (7):


The second transpose in crypt() is not necessary, we can do it during
set_key().
Move a multiplication in set_key into crypt() to vectorize it.
Fix comments.
testing omp support
Use MEM_ALIGN_SIMD for message buffers.
make cmp_all parallel in omp builds.
Revert cmp_all omp parallel, performs poorly on AMD

Spiros Fraganastasis (6):


add support for new openssh key format
initial keyfile support in keepass format
initial support for twofish in keepass
add support for cracking VRRP hashes
minor misc. fixes
add support for cracking GLBP hashes

Aleksey Cherepanov (4):


add --skip-self-tests option
fix to repare build with defined BENCH_BUILD after add of
--skip-self-tests option
Rexgen2rules: Convert of rexgen-like syntax into john rules.
PoC rule generator for leetspeak

Jeremi Gosney (4):


sse/xop implementation of raw-sha256
More efficient loading of plaintexts
sse/xop implementation of raw-sha512
fixes for rawSHA512_ng format

Michael Samuel (3):


Add External:KDEPaste. This takes advantage of CVE-2013-2120 to find
seeds that KDE Paste applet uses to generate passwords.
Add license notice to KDEPaste external mode.
Add external mode that replays the Awesome Password Generator 1.3.2
RNG.

Sanju Kholia (3):


add instructions for cracking KWallet
Added python code for kwallet2john.
Added Python code for KeyStore2John and help file for cracking
KeyStore files.

Costin Enache (3):


Fix for clock err in timers.
rules.c: Provide enough space for \xHEX encoded lines (worst case, ie.
x4).
Silly bug in sunmd5 busted the rounds parsing.

Thiébaud Weksteen (3):


Add support for cracking OpenBSD disk encryption
Add script to extract OpenBSD softraid hashes from disk image
Use internal PBKDF2 implementation for OpenBSD softraid hashing

Deepika Dutta (3):


Add bit-sliced MSCHAPv2 implementation by Deepika. This is added as a
new separate format: We now have mschapv2, mschapv2-bs and
mschapv2-naive.
Add MMX version of DES_bs_crypt_plain().
netntlm bitsliced conversion

junmuz (3):
CUDA Multi Device Options Parsing Support Added
Minor fix for Checking device id
GPU DEVICE LIMIT log

Michael Ledford (2):


Adds support for multiple keys existing in an encrypted DMG. When
multiple keys are found it selects the first password key header.
Adds support for DMG sparseimage files. Previously the first chunk
selected could be empty. Now chunk number one is chosen for DMG
sparseimage files and a new heuristic is added to the DMG format
plugin to look for 'Apple'.
Adds support for DMG sparsebundle files.

Nicolas Collignon (2):


McAfee ePO passwords converter
enhance mcafee_epo2john.py and add license blurb
Dániel Bali (1):
Add OpenCL target for Win32/Cygwin.

Vlatko Kosturjak (1):


Expose markov stats file as "hidden" command line option
(--mkv-stats=FILE)

atom (1):
office2john: Patch needed for cracking CMYC 2014 challenge 3.

bartavelle (Simon Marechal) (1):


Updated copyright information

rejsmont (1):
warning() should be static also in the header

Christopher Gurnee (1):


For Bitcoin format, use JtR's SSE variant of SHA-512 instead of the
ossl one for an almost 2x speed improvement. Also a small speed
boost to the non-SSE variant by avoiding EVP_BytesToKey().

Oleksii Shevchuk (1):


Add clWaitForEvents first

Péter Kasza (1):


add support for IBM ClearQuest hashes

Sergey V (1):
make blockchain-opencl non-plug

Lord_Rafa (1):
fixed the arm profile to compile in parallella

Konrads Smelkovs (1):


Perl utility to convert AIX's /etc/security/passwd to JtR format

Guth (1):
pdf2john, validate trailer

Sébastien Kaczmarek (1):


Lotus Domino 8.5 format added

The following changes were made between 1.7.9-jumbo-7 and 1.7.9-jumbo-8:

magnum (731):
Add a "Section [%s] not found" before outputting the catch-all
--list=?
Merge fix
raw-md5-opencl: Report human readable errors
opencl_mscash2_fmt.c did not declare clear_keys static.
Fix mis-use of CL_DEVICE_MAX_WORK_GROUP_SIZE in a number of OpenCL
formats.
Revert "Version change for Jumbo-7RC, and undefine
REPORT_OPENCL_WARNINGS" as this was only for the "jumbo-6-fixes"
branch.
Add Alain's Truecrypt format as posted to
www.openwall.com/lists/john-users/2012/07/18/3. Make target for
truecrypt_volume2john is missing.
Use maxlen in dumb16 and dumb32 external modes.
Make sunmd5 check FMT_MAIN_VERSION, so the same file works for
non-bleeding as well as bleeding. Also fix some Linux warnings.
FIXME: This version still fails self-test under OMP. FIXME:
Jim and Simon, add your license statements!
Fix new sunmd5 format struct so it works with bleeding too. Also fix
the ALGORITHM_NAME enumeration to new-style. This now says it's
using SSE2 but apparently it is not, on my gear.
Sunmd5: fix SSE2 for 64-bit
wordlist.c: fix segfault reported in
http://www.openwall.com/lists/john-users/2012/08/01/5
wordlist.c: fix segfault reported in
http://www.openwall.com/lists/john-users/2012/08/01/5
Define MMX_COEF in x86-64.h and drop the workarounds in SSE2 formats
that were needed cause it was missing.
Use clear_keys() for SSE2 buffer cleaning in a couple of formats,
instead of doing it in set_key() if index == 0.
Backports from john-1.7.9.6-c6.
Replicate Vlatko's fix in 487c44ce to build_kernel_from_binary() in
magnum-jumbo and downstream.
pass_gen.pl sync between branches
wow_srp: Use the OpenSSL version, revert the -lgmp from Makefile.
TODO: put some (default commented out) HAVE_GMP stuff in Makefile.
Add HAVE_GMP to Makefile, default commented out
.gitignore update
sed -ri 's/\bfree\(/MEM_FREE(/g' *[ch] (and then selectively
commit most changes)
Bugfix for previous commit
Limit External:Strip to 16 characters even if cipher_limit is higher.
Do not use cipher_limit directly in External:KnownForce, because the
length is fixed - ie. no shorter lengths will be tried!
Change a couple more ISO-8859-1 files (not in -fixes branch) to UTF-8
mssql12: drop obsolete comments about SSE2. Also drop the
UTF-8-specific version of set_key() as we're not working against
vector buffers anyway and enc_to_utf16() can handle utf-8 too.
External:Subsets: Revert defaulting to cipher_limit because it's often
too long. Instead, use cipher_limit to cap the used length.
RAR: #ifdef galore
dmg_fmt: #undef HTONL before defining it (warnings seen on OSX)
mssql12: Unicode fixes
Oldoffice: Proper Unicode support
Make opencl_DES_fmt.c compatible with bleeding's format struct
des-opencl: Use .h files for OpenCL includes (.c did not work on OSX)
Fix a benign warning in OSX
The new Kerberos formats depend on Kerberos 5 libs and headers. This
patch make them non-default - you have to uncomment HAVE_KRB5 to
build them.
Make new Kerberos formats' structs forward compatible
Use ASCII copyright signs
Makefile: change a couple of hard-coded gcc to $(CC).
Update some build targets with custom CFLAGS and LDFLAGS
sunmd5: bugfix and miniscule optimization
EncFS: Backport some fixes that was committed only to bleeding-jumbo
OSX: Only link against krb5 if HAVE_KRB5 is defined.
Office2john: Support multiple files in one run.
Office format simplifications. Avoid a lot of alloc/free and
memcpy/memmove even though they did not hit performance much.
Office: regression fixes for last patch
Office: Get rid of the rest of malloc()'s + some other misc fixes.
Office: Move Unicode conversion to set_key() so we don't have to
convert the same password several times. Add all sample hashes
we've got, as test vectors.
OldOffice: Move Unicode conversion to set_key() so we don't have to
convert the same password several times.
Ooops. Fix pbkdf2-sha512 format struct for bleeding.
Special wordlist rule for cracking old office documents truncated at
15 characters.
If ran under MPI though not built for it, complain!
Improve the "OldOffice" wordlist rule
Show SHA-1 in oldoffice FORMAT_NAME
OldOffice: Inner-loop optimisations and much smaller memory footprint
per hash. Unfortunately the gain was smaller than I hoped for,
but it may be better IRL.
Office: Very minor optimizations. OldOffice: For "salt-only"
formats (non-hashes), BINARY_SIZE should be 0
Fix for sunmd5 for non-intel hardware, submitted by Sam Novak.
RAR: gws_test() made static.
New format office-opencl. This first version handles only Office 2007
and a max plaintext length of 19.
Office-opencl: Fix some compiler warnings.
Office: Fix some over-long test vectors that was due to a bug in
office2john.
Fix format structs for new formats so they are compatible with
bleeding
.gitignore update
Office-opencl SALT_LENGTH bugfix
Office (CPU version), optimizations for 2007/2010, 2x boost!
Re-introduce APPLE in opencl_device_info.h
Office-opencl renamed to office2007-opencl, and office2010-opencl
added. Both use split kernels, so durations should not exceed
200ms (by far).
Added a CHANGES-jumbo.git which is (almost) raw output from "git
shortlog -n --no-merges", and placed (the changes part of)
Solar's announcement of Jumbo-6 in CHANGES-jumbo (mostly as a
placeholder, it might need editing).
Update CREDITS-jumbo
hmac-sha1 bug fix: Certain optimisations did not take SHA_BUF_SIZ in
account. Very few builds pick the old SHA-1 implementation that
uses 320 bytes instead of the now normal 64 bytes but native OSX
llvm now does, so triggered the bug.
Add a version of our shared find_best_workgroup() that supports
vectorized formats.
Bugfix for d708f98 (find_best_workgroup_vector())
Revert recent find_best_workgroup() changes; they were no-ops. Also
remove some older no-op code.
Merge 1.7.9-jumbo-7 as released, and bump the "unstable" version
string accordingly
OpenCL: Read the LWS environment variable in the shared find_best
function.
Fixes for new opencl_device_info.h names
Add "Rules:None". I have added this as temporary a dozen times. It's
useful in some cases for Single mode and it really doesn't harm
having it in place.
Office OpenCL formats: Run vectorized on some platforms (including
CPU).
RAR kernel rearrangement, preparing for a split. This alone made for
some boost.
OpenCL Office formats: Mitigate GPU hogging with much shorter kernel
durations. Barely any performance impact but much better desktop
response during cracking.
Add some license stuff to RAR format, just in case. The wording was
already present in clamav's unrar sources.
Forward-compatible format structs for sha256crypt-opencl and
postgreSQL
RAR OpenCL: Finally, split kernel into quicker subkernels. Lousy speed
so far but passes self-tests. We use a 64x buffer, and run a
non-destructive SHA-1 over it instead of copying and flogging
bits around all the time. This eats loads of memory but we are
forced to use global memory anyway after splitting.
RAR OpenCL: Use byte-addressed stores in some cases, if supported.
RAR OpenCL: Back to 1x buffer and use private memory in inner loop.
Limit sub-kernel duration to 200 ms for GCN. Use local memory on
nvidia.
RAR: Tweak GWS enumeration. Also a workaround to get the OpenCL kernel
running on Mac MBPr with GT 650M. This does not make any sense
at all, but it works. It is clearly a bug in OSX.
Office 2013 OpenCL format added with fair performance given the task.
Currently fails self-test on HD7970 for no apparent reason.
Office 2013-OpenCL: Vectorize (but only for CPU).
Drop some bogus logic from Office OpenCL formats. I confused local
work size with global ditto.
Office OpenCL formats: Add benchmark comments (iterations count)
Add option --status-every=N
Add a comment about Kepler (sm_30) in Makefile
Unify CUDA and OpenCL "human_format" functions.
RAR: Fix bugs with OpenCL profiling. In gws_test(), we did not take a
changed value of HASH_LOOPS into account. Worse, in crypt_all()
we had the global profilingEvent sent with
clEnqueueNDRangeKernel() even though we did not use it. This
lead to a memory leak and a slow but certain death.
Office OpenCL formats: Remove unused code for shared
find_best_workgroup()
Fix an inner loop memory leak in most (22 of 24) OpenCL formats that
use the shared find_best_workgroup() function. NOTE:
opencl_cryptsha256_fmt.c and opencl_cryptsha512_fmt.c are NOT
fixed here. They need some other fix, for example reverting to
private functions or a fixed (semi-fixed) value.
Revert patch 4f12506 and implement a cleaner solution: We now use a
pointer for profileEvent, and it's set to NULL after
find_best_workgroup() so no more events will be created.
Office OpenCL formats: Now that I got profiling straight, use the
shared find_best_workgroup() for a little boost on some
platforms.
Add missing FMT_OMP to Office OpenCL formats.
Another tiny (and benign) cl_event memory leak fixed in
common-opencl.c
OpenVMS format: forward-compatible format struct.
RAR: Prepare to use the shared find_best_workgroup() function - but
don't. For some reason, it returns a suboptimal figure. Also, it
takes time.
Office OpenCL formats: Revert to fixed LWS yet again. Auto-conf is
simply too slow and unreliable.
--list=cuda-devices: show number of SP, if known.
Some added information in doc/BUGS - that might be candidate for
moving to some other documentation because it's not really about
bugs.
common-opencl.c: Support split kernels with
opencl_find_best_workgroup(). RAR & Office OpenCL formats:
Implement the above but still, use hard-coded figures.
RAR & Office OpenCL: Enumerate LWS if explicitly asked to.
common-opencl.c: Add a way to pass parameters when building kernel.
RAR & Office OpenCL formats: Use this (more to come).
Make RAR (OpenCL) much more responsive, doing less per kernel call.
Print Office kernel durations while benchmarking (GWS=0).
Office2013-opencl: Fix minor bug in enumeration.
RAR: GETCHAR/PUTCHAR macro optimisations (vs. arch)
RAR: Tweaks.
Silly bug: The new --status-every option clashed with the original
--status option. Rename the former to --progress-every.
RAR: Fix bugs in auto-tuning to device. Office2013: Less X
hogging.
NETLM/NTLM/v2 formats: Fix a signed vs unsigned char bug, and make
case shifting UTF-8 aware (as opposed to just codepage-aware).
Also bump some limits to accommodate for UTF-8 encoded user and
domain names.
common-opencl.c: Add get_global_memory_size(), and tweak
find_best_workgroup().
Add NTLMv2-opencl. Well behaved but I/O-bound. Vectorized on CPU,
passes Test Suite. Full Unicode support.
NTLMv2-opencl: Change hard-coded challenge length figures to
SALT_SIZE_MAX and fix a bug in salt_hash() (our salt format is
different from the old).
NTLMv2-opencl: Only run vectorized on CPUs.
Encfs: Trying to nail an OSX problem. Change a dynamic allocation to
using alloca() explicitly. Some optimisations while at it.
Problem went from segfault to FAILED (cmp_all(1)) but it
actually seems to be a problem with whatever OpenSSL version I
happen to use here.
Drop an erroneous linefeed from --list=hidden-options.
Revert "Encfs: Trying to nail an OSX problem. Change a dynamic
allocation to using"
Fix for common_opencl_pbkdf2.c that hid the actual error output on
"SYNC FAILED"
Fix a common mispeling
Add missing error handling in all CUDA kernels. Also add some
information in README-CUDA about too high THREADS settings as
well as a specific hint from HANDLE_ERROR for the "too many
resources requested" error. Finally, add some missing stuff in
Makefile so a header file change will cause a rebuild of
wpapsk-cuda or pwsafe-cuda.
ssha-opencl: Tweak the device auto-tuning, fixing several problems.
Bugfix in md5crypt-cuda. If we clear any_cracked we must also clean
the outbuffer.
ssha-opencl: Further tweaks for work size selections
encfs-opencl: Make it possible to specify GWS. LWS can already be
forced due to the shared find_best_workgroup function honoring
it.
Respect "iterations" parameter in odf (sxc) PBKDF2 kernel
For some reason the OpenCL kernel for OpenPGP/GnuPG was using unsigned
long for 32-bit integers. Fixing this made for a 20% boost on
Tahiti but it did not help the nvidia, which fails with the
cryptic message "Module-scoped variables in .local state space
are not allowed with ABI". Maybe that is just another driver
bug.
Some added information in GPU docs, regarding temperatures, watchdogs
etc.
Rename doc/README.opencl to README-OPENCL for consistency with the
CUDA docs.
Update CHANGES-jumbo.git and CREDITS-jumbo.
Manual corrections of CHANGES-jumbo.git and CREDITS-jumbo
Move some less used options from main usage output to "hidden"
(shown with --list=hidden-options)
Add description of --progress-every=N to doc/OPTIONS.
OpenCL: Apple does not expose get_compute_capability() so we need to
find out SP count using mory hacky approaches.
Add Max. GPRs/thread block to --list=cuda-devices
Add more info to --list=cuda-devices.
Support for codepages: CP852, CP1250 and ISO-8859-2.
Update doc/ENCODINGS with newly supported encodings.
Split kernel and some optimizations for wpapsk-opencl. And device
auto-tuning.
wpapsk.h: The prf_512() function was doing four times more work than
needed. This change boosts OpenCL and CUDA formats a lot,
decreasing the CPU post-processing. HD7970 went from 66197 c/s
to 89468 c/s.
Trying to work around AMD bugs in ntlmv2 OpenCL format, or help the
optimizer, or both. The RAR and Office OpenCL formats were checked
too but did not contain such code.
OpenCL kernels RAR, Office, NTLMv2, WPA-PSK: Drop all pragma unrolls.
The compiler unrolls anyway where sensible.
wpapsk-opencl: Move all post processing from CPU to GPU or otherwise
out of the inner loop. Great boost! Also bump max plaintext
length from 15 to 32.
Add progress indicator during GWS enumeration in all my formats.
ntlmv2-opencl: Implement clear_keys() for faster buffer cleaning.
Update .gitignore
opencl_rawsha256_fmt.c: Add missing stuff for FMT_MAIN_VERSION > 9
opencl_rawsha256_fmt.c: Add more missing stuff for FMT_MAIN_VERSION >
9
Add null-hash test vectors to some unsalted formats that lacked them.
Add max. memory alloc. size to --list=opencl-devices
ntlmv2-opencl: Use up to 1/4 of GPU memory
ntlmv2-opencl: Map buffer instead of enqueing transfers. This can be
changed with a #define to use clEnqueueRead/Write. Until now, it
was mapped *and* enqueued transfers, which was a bug!
ntlmv2-opencl: Don't try to account for clear_keys in gws_test().
ntlmv2-opencl: Revert 65071a1. Documentation as well as google results
are contradicting but apparently it was correct as it was.
Use CL_READ_WRITE_INVALIDATE_REGION if available (OpenCL 1.2)
OpenCL formats: more complete release_clobj() and other tweaks.
Extend opt_flags to 64-bit and move all Jumbo-specific flags to
the high 32 bits. Core now have 7-8 free flags, Jumbo has 24.
The previous patch reset a FLG_NONE behaviour that Jumbo did not have
before. This had unexpected consequences so this is now reverted
(FLG_NONE is 0 again). Also a cosmetic (code) fix for loopback.
New GPU options: --request-vectorize and --request-scalar. These are
only supported by a few formats. Obviously they are mutually
exclusive.
ntlmv2-opencl and office-opencl formats: Never run vectorized unless
asked to. There's just too many problems (driver bugs).
OpenCL formats Office/rar/ntlmv2/wpapsk: Add a clFinish in
release_clobj() for safety. With a little luck this fixes some
problems and I'll regret blaming the drivers :-P
cryptmd5-opencl: Selective use of bitselect, use pinned memory and
auto-tune to device.
OpenCL: Shared find_best_workgroup() tweak for vectorized formats.
office2010-opencl needed the same workaround for OSX that office2007
had.
Regression fix for 11ecdb0: loopback mode did not work because
wordlist.c mis-read the 64-bit options flags.
cryptmd5-opencl: Allocate/map buffer per nvidia's best practices for
pinned memory. This involves creating an extra buffer that we
have missed so far.
ntlmv2-opencl: Allocate/map buffer correctly. Quite a boost on some
devices.
office2007-opencl: Allocate/map buffer correctly. Also fixed what I
thought was an Apple bug. Silly me.
office2010/2013-opencl: Allocate/map buffer correctly.
RAR & wpapsk-opencl: Allocate/map buffers correctly.
Re-work some OpenCL error handling and add a margin for max gws
ntlmv2-opencl: Use macros for MD4 and MD5 (because they are same
whether vectorized or not)
Office2007/2010 OpenCL: Use a macro variant of SHA1, that is also has
an optimized version for the short-length SHA-1's (idea from
wpapsk).
wpapsk-opencl: Use Milen's SHA1 on AMD, and Lukas' on nvidias.
ssh-ng: Benchmark with crippled plaintexts, so we get real speed
reported: It's about 10x faster than the old ssh format.
OpenCL raw-md4/md5/sha1: Fix buffer allocations per nvidia's
recommendations
Revert "OpenCL raw-md4/md5/sha1: Fix buffer allocations per nvidia's
recommendations"
EncFS: Reduce effects of an OSX problem.
Update .gitignore
EncFS: Fix a bug that for some reason only surfaced on OSX.
Fix format structs for krb-ng, lastpass-sniffed and mongodb to work
with version 10.
Add ULL to the 64-bit options flags definitions.
Move the "hidden" options printout to options.c. Move --plugin to
"hidden" and move --save-memory above format list.
krb5ng: Various optimisations, including: Check for known plaintext.
Always use fast PBKDF2 for short keys instead of choosing at
compile-time.
krb5ng: Make a couple of functions static.
Update .gitignore
krb-ng: Remove (#if 0...#endif) an unused function
xsha512-ng: Fix a format struct problem for v10. The split() function
prototype has changed!
Fix for "testpara" and "generic" make targets
mskrb5: Use Dhiru's approach from krb5-ng, giving us proper binaries
instead of being a "salt-only" non-hash format. The known
plain-text trick is now used as a short-cut within crypt_all().
The benchmark may indicate a slight regression for single core
but IRL this is faster and scales better.
New format: krb5ng-opencl. Core copied from WPAPSK but now made
generic so future formats using pbkdf2-hmac-sha1 will be easy.
Various tweaks: Remove the "MS" from krb-ng format name. Bump limits
for wpapsk-opencl up to what is actually supported by WPA-PSK.
Remove some redundant code from wpa-psk kernel.
wpapsk-opencl and krb5ng-opencl: Support vectorization. Great for
OpenCL/CPU and probably VLIW AMD. Currently default to off, use
with --request-vectorize
OpenCL formats wpapsk/ntlmv2/office/krb-ng: Revert to always vectorize
on non-GCN AMD GPUs. Not on CPU, because I see some drivers
doing a very poor job of compiling it although it should be a
no-brainer and produce SSE2.
Vectorized OpenCL formats: Add parens against ambiguity, and fix a
whole bunch of kernel bugs that crawled in there while I was in
WAT mode.
Last vectorizing bug hopefully fixed.
krb5pa-sha1: Last change to input format (hopefully). krb5ng-opencl:
rename to krb5pa-sha1-opencl, incorporate CPU format changes and
support etype 17 as well.
Rename mskrb5 to krb5pa-md5 and support our new input format from
krbpa2john.py. The old input format is also still supported
although I am not aware of any tool outputting it.
valid() tweaks in a couple of formats. If we print a warning about
salt length, we better a) be sure the hash is otherwise valid,
and b) include the FORMAT_LABEL in the printout.
Add a self-test that fails if a format claims SPLIT_UNIFIES_CASE
despite using fmt_default_split. This finds several offending
formats.
Implement a split() in krb5pa-sha1 formats
KRB4: More robust valid()
krb5pa formats: Make the new split() functions fmt struct v10
compatible.
KRB4 valid() fix
WPAPSK valid() fix
krb5pa-sha1 valid() fix (use the one from krb5pa-sha1-opencl)
Include some AMD extensions to OpenCL device list.
Self-test "valid() killer" that unfortunately will produce a segfault
instead of FAIL when it hits a bug. (only active with -DDEBUG)
Rearrange the AMD OpenCL device-list items.
OpenCL device-list fix: Need to init device_info[d] earlier.
OpenCL device-list fix: strip leading whitespace from buggy device
names, and other list-device tweaks.
OpenCL device list: Mute a compiler warning on OSX. Print PCI stuff
with leading zeros.
Unicode: Ensure that our 'UTF32' typedef does not end up 64-bit.
ntlmv2-opencl: Partial binary transfer, for a little boost.
Speed up iterated split-kernel formats auto-tuning by not doing all
the iterations.
Speed up RAR OpenCL format's auto-tuning by not doing all the
iterations.
OpenCL device list: Do not print "cache size" if zero (it's usually
not true).
pass_gen.pl: Change deprecated 'utf8' encoding to 'UTF-8'
NTLMv2: Do Unicode conversion on GPU. Support for short lengths
(faster), honor the --length option. Drop support for
vectorization.
Rename --length to --max-length and also add --min-length. Make Markov
and Incremental modes honour them. Add req_minlen and req_maxlen
variables to External mode for accessing them. Change a bunch of
existing external modes to honour them. TO DO: --min-length
support for Wordlist and Single. And regression testing!
Add some sanity checking to --min-length and --max-length. Support
--max-length in Single and Wordlist. Also, add some MPI stuff to
fprintf calls that lacked it.
Support --min-length in Rules (includes Single mode) and Wordlist
without rules. This needs to be checked for performance
regression, especially for the case where we do not use the
option.
Bugfix: Do not list request-vector/scalar in list of --list options.
Enable crypt(3) for 64-bit OSX targets.
rules.c: Skip (as opposed to truncate) words longer than maxlength.
wordlist.c: Implement --min-length and --max-length in buffer loading
when rules are not in use. Move handling of unbuffered
--min/max-length away from dummy_rules_apply(), and into the
main loop. --max-length will skip words, not truncate them.
Minor fixes for --min/max-length
wordlist.c: Implement --min/max-length for pipe mode too. And a bug
fix for unbuffered/stdin reads.
ntlmv2-opencl: If max length is decreased, reflect it in benchmark
comment.
Silence a bunch of compiler warnings emitted by newer gcc (the ones
that were my bad)
Drop SPLIT_UNIFIES_CASE from clipperz format, because, well, it
doesn't.
formats.c bug fix: We must call clear_keys() after self-tests,
otherwise first batch of keys to crypt_all() in the real crack
might be thrashed. This made for failures in hmac-md5, hmac-sha1
and mssql but I just couldn't find the culprit until now.
Silence a compiler warning from the OpenCL binary-caching patch
Quick-response to "events" (like key presses) for my loop-kernel
OpenCL formats. I'll let Claudio and Sayantan decide for
themselves whether to use it or not. Note that the clFinish() is
needed within the loop for this to work correctly.
Use OpenCL's "spinning wheel" cursor during self-test, so we can see
where it ends. We could have it within benchmarking too but it
would affect speed. It's not 'erased' until after benchmarking,
so we can still see when a real crack really starts.
Make "my" OpenCL formats adjust global worksize to the count argument
to crypt_all(). On my laptop, this decreases self-test time for
Office 2007 from 3:30 to 0:41. This is also good for Single mode
since we can now set min keys per crypt to local worksize.
Fix a bug introduced in ef133e4 where a system with OS_TIMER=0 would
run into problems when the formats called sig_timer_emu_tick()
during benchmark. To fix this, I made bench_running a global
variable. Maybe there are better ways. This patch also fixes a
minor bug in erasing the "spinning wheel".
When StatusShowCand option (in john.conf) is true, add the figure to
log as well.
Add a john.conf option NoLoaderDupeCheck, for skipping dupe-checking
while loading hashes. This is for testing purposes only.
Sayantan's formats: errors/diagnostics to stderr, please.
Fix .gitignore after 6b66504
SAP formats: Add a salt length check in valid()
RAR format: Since the OpenCL code no longer falls back to CPU in
Single mode, break out the OpenCL code into a separate
rar-opencl format just like the rest of them.
Sayantan's formats: errors/diagnostics to stderr, please.
Fix .gitignore after 6b66504
SAP formats: Add a salt length check in valid()
RAR format: Since the OpenCL code no longer falls back to CPU in
Single mode, break out the OpenCL code into a separate
rar-opencl format just like the rest of them.
Drop "data_info" from raw-md4-opencl and raw-md5-opencl. It was
unneeded and just wasted time. Plus other tweaks.
Use cached binaries for Apple platforms too.
Bugfix for OpenCL binary caching. The old code depended on a null
terminator that wasn't guaranteed. Also, I'm not sure you can
pass a buffer to sprintf() both as destination and as one of the
arguments with defined results.
Bugfixes for v10 format struct in opencl-encfs_fmt.c
Fix a bug in options.c print_usage(), reported by scan-build.
unicode.c: remove some dead code as indicated by scan-build.
Remove dead increments in sapG, found by scan-build.
Remove dead increment in sha256crypt, found by scan-build.
Reset a "dangling reference" in single.c as found by scan-build. This
was not really a bug but we can reset it to NULL for good
measure.
Comment out all "rar_dbgmsg()" from unrar sources, to silent some
tools.
Fix a minor memory leak in rules.c userclass_expand() reported by
scan-build.
Fix a non-issue in calc_stat.c just to silence scan-build.
cuda_xsha512: reduce BSS with 70 MB or so and provide a done() embryo.
opencl_xsha512: reduce BSS with 15 MB or so and provide a done().
opencl_rawsha512: reduce BSS with 15 MB or so and provide a done().
cuda_rawsha512: reduce BSS with 15 MB or so and provide a done().
opencl_mscash2: reduce BSS with 8 MB or so and provide a done().
opencl_bf_fmt.c: Reduce static footprint. More is needed but it's in
opencl_bf_std.c and can't be allocated in format's init() just
like that.
OpenCL formats: rename all "release_all()" functions to "done()" in
order to prepare for upcoming core changes
OpenCL: Change opencl_init_opt() to use the binary caching feature.
common-opencl.c: Output "build" time even for cached binaries, in case
they take over 2 seconds.
Makefile: Copy the OpenCL kernels using -p flag, so we don't
invalidate cached binaries unless actually needed.
Bugfix: Cached binaries must include compile options as selection
criteria.
raw-md4-opencl & raw-md5-opencl: Honour the -max-length option, for
performance.
raw-sha1-opencl: Some optimizations, and honour the -max-length
option.
Fix a silly bug in my MIN/MAX macros. They were not protected enough.
Experimental: Let Incremental and Markov modes call
format->methods.clear_keys() after setting
options.force_maxlength to actual used length. This gives the format
a chance to optimize for that length if possible. No format
currently use this.
Change whitespace to '_' in binary file names.
OpenCL raw md4/md5/sha1 formats optmizations.
common-opencl.c: No need to call include_source() with a cached
binary.
common-opencl.c: Reflect that we are using a cached binary in case of
errors.
No-op workaround for false positive in scan-build. See
http://www.openwall.com/lists/john-dev/2012/12/23/12
formats.c: Add a self-test that puts maximum length candidates in all
buffer positions and then read them back to verify. This finds
incorrect claims of PLAINTEXT_SIZE as well as most kinds of key
buffer over-runs. It found 15 problematic formats right away.
sapB: The new self-test actually gave a false positive on this format.
This patch works around it.
raw-md4: fix a bug (SSE2 only) that made plain texts longer than 31
end up incorrect.
Fix the max-length bug in Truecrypt formats. While at it, bump max
length to 64 because there is no gain in limiting it, and 64 is
the actual limit in Truecrypt according to
http://www.truecrypt.org/docs/?s=keyfiles.
Reduce risk of new self-test to segfault due to problems.
Fix the new max-length self test so it only runs once.
RAR formats: Max length fix.
sapG: Workaround for problems induced by the max length self test.
sapG: Regression fix for non-OMP builds after b15beb1.
DMG format still segfaulted from the valid() kill self-test. It also
made a strdup() before even checking the format tag, which is a
Bad Idea[tm].
PuTTY format still segfaulted from the valid() kill self-test.
formats.c: Only run the "valid() killer" once, even if we have a
larger keys_per_crypt than number of test vectors.
Fortigate: optimize order of tests in valid().
IPB2: optimize order of tests in valid().
Unified raw-md4-opencl and raw-md5-opencl again, and fix max length
bugs in them and in raw-sha1-opencl. The raw md4/md5 formats
should be identical except s/md4/md5/. The raw sha1 format could
also be very very similar but is not yet.
Fix a typo in numerous OpenCL formats.
Numerous bug fixes and optimizations in mysql-sha1-opencl.
Max length bugfix in ssha-opencl. This format can be optimized a whole
lot but I don't have the inspiration.
Fix max length bug in IPB2.
Fix max length bug in IPB2 (last patch did not really do it).
SIP: Remove some weird double work. More optimizations are possible.
Rar-opencl: Reduce self-test slow-down due to max. length test.
Office OpenCL formats: Reduce self-test slow-down due to max. length
test. SIP format: drop a now unused variable.
Max length bugfixes in dominosec, epi and krb4 (all just fence-post
bugs)
Oracle11 workaround for new max-length test problems (not really a
bug).
Make encfs-opencl a little more friendly. It still needs a split
kernel.
UTF-8 reverse bodge for the max-length self-test. Formats the take
UTF-8 and convert to UTF-16 use to triple the reported max
length, and truncate themselves. We must do the same, or we'll
get false errors.
mscash bug when using codepage, found with new max. length self-test
in conjunction with the almighty Test Suite!
BENCH_BUILD ifdefs for the new self-test, needed after adding
options.utf8 stuff.
Max-length fixes for dynamic.conf, fixing dynamic_1001..dynamic1013
Bugfix for a truckload of formats that did this:
Fix Lukas' pbkdf2-hmac-sha1 so it can handle a max. length of 64.
There is no gain in limiting it (actually the new code is faster
due to optimizations). Affected formats: agilekeychain, wpapsk,
dmg, encfs, keychain, krb5pa-sha1, strip - as well as CUDA and
OpenCL versions of them.
ODF: Use our own PBKDF2. Also, bump max length in OpenCL version - the
PBKDF2 is not made from the plaintext but from a hash of it.
Change the PBKDF2-HMAC-SHA1 in keychain.h to take an output length
argument and make ZIP and SXC use it instead of Gladman code -
2x boost!
OpenCL fixes: 2x boost for ODF and 4x boost for SXC. These format are
still very rough.
Improve max-length self-test so it better reflects real world.
Further improve max-length self-test to avoid false positives and
catch even more real problems. This also fixes an older problem:
Some formats depend on all keys being set before calling
crypt_all() so now we do call set_key() for indexes that are
otherwise skipped.
dynamic_fmt.c valid() bugfix: It did not reject overlong raw hashes.
More dynamic_fmt valid() fixes. Still passes Test Suite so should be
OK.
Dynamic bugfix. If DynamicAlwaysUseRawHashes = Y, we must disable it
for thin formats.
Reduce BINARY_SIZE for OpenCL formats that was transferring partial
binaries anyway.
OpenCL: Only replace whitespace with '_' in device name part, not
path.
Some updates to README-OPENCL. This whole file should be reworked but
I am not the man.
Reduce global work size to 'count' in more OpenCL formats, speeding up
self-test and helping Single mode a lot. Also some bugfixes. And
unify the various non-split pbkdf2 kernels we had, so there is
only one to maintain. RAR is currently b0rken.
s/Alocate/Allocate/g
More fixes to Dhiru's PBKDF2 OpenCL formats
OpenCL pbkdf2_unsplit fixes
More OpenCL fixes
Silly bug in SXC and ODF found by Dhiru
SXC bug tracked down, plus other minor bugs in SXC and ODF. Both work
now.
ssha-opencl: Check device max allocation size.
Make use of mem_calloc() in a bunch of GPU formats. Also change some
mem_alloc_tiny to mem_alloc and add MEM_FREE() in done().
Makefile: Ensure that a change of common_opencl_pbkdf2.h will result
in re-compile of common_opencl_pbkdf2.o and
opencl_mscash2_fmt.o.
More Makefile tweaking
gpg-opencl fixes. View this patch with "git diff -w"
gpg-opencl cosmetical fix.
Make it safe to call clear_keys() for --stdout
Drop an unused function in gpg-opencl
Change the plugin magic in Makefile so formats are loaded in
alphabetic order of format struct names. Also, change the struct
for raw-sha512 so it will take precedence over other 64 byte
(128 hex chars) bare hash formats (currently raw blake2).
Change name of blake2-512 to raw-blake2-512, so it doesn't get bullied
by the rest of the raw format gang.
Change calc_stat so that the -p option enables support for 8-bit
characters as opposed to just mute the warnings. The usage
output already claimed this was the case.
UTF-8 validity check in Markov mode.
Fix for UTF-8 validity check in Markov mode.
Full UTF-8 validity check in Markov. Markov mode now works pretty good
with UTF-8 provided you use -p with calc_stat and --enc:utf8
with Markov mode.
Revert "expose markov stats file as command line option"
Add usage output for mask mode.
Register GPU formats first (even before core formats - this is
experimental)
Revert "Mask mode bugfix"
Load raw-md5 and raw-sha1 OpenCL formats before others.
Do not trust the compiler to optimize away strlen of constants in
valid()
Change the format tag of raw-md5-opencl to dynamic_0 just like the
others.
Rename raw-blake2-512 to raw-blake2 and reflect SIMD usage in
ALGORITHM_NAME
Fix lastpass format struct
Fix a bug introduced with e82b54e. When running --stdout, we have a
limited format struct, and params.label is NULL.
Fix a bug in rar2john - it tried to fclose() twice.
Add big-endian versions of our dump_stuff() debug functions.
Allow running an OpenCL build with no platforms detected.
Drop UTF-8 test from Markov. The performance impact is not worth it.
For slow formats we could use an external filter.
OpenCL crypt-md5: Get rid of global memory use in inner loop. More
effective buffer use and some other tweaks. Significant boost on
both nvidia and AMD.
A few more md5crypt-opencl tweaks, mostly cosmetical.
Shared (unsplit) PBKDF2-hmac-sha1 OpenCL kernel endian bug fixed (only
affecting non-word key lengths). And some other ZIP tweaks.
Revert "Load raw-md5 and raw-sha1 OpenCL formats before others."
Bugfix for Office OpenCL formats when running vectorized.
Cludge for a problem where benchmark_timer is reset (because benchmark
time was reached) but the benchmark timer is still active,
leading to SIGALRM with no handler. If we ever saw
benchmark_running, we keep away for good.
Revert f8bf37d and try a cleaner fix.
OpenCL Office formats: get_key() bugfix, affecting UTF-8 mode.
Unify output. "work size" and "work-size" are changed to just
"worksize". Not that it's more correct, but it's the shortest
version :-)
Turn off OpenCL warnings. And bump version string to
1.7.9-jumbo-8-unstable.
Drop an nvidia workaround that just affect 9600GT on 295.49. If
needed, we must make the selection criteria more narrow because
it makes krb5pa-sha1 fail on Bull.
gpg-opencl: Honour LWS and GWS environmental variables.
strip-opencl: Honour LWS and GWS environmental variables.
xsha512-opencl: Honour LWS and GWS environmental variables.
keychain-opencl: Honour LWS and GWS environmental variables.
nt-opencl: Honour LWS and GWS environmental variables, plus
optimizations.
pwsafe-opencl: Honour LWS and GWS environmental variables.
raw-sha512-opencl: Honour LWS and GWS environmental variables.
Ignore environment LWS in common find_best_workgroup. Formats that
handle that won't call this anyway. Fix a minor bug in
nt-opencl: This format does not honour the count argument to
crypt_all() so we better set min_keys_per_crypt same as max.
phpass-opencl: Honour LWS and GWS environmental variables.
mysql-sha1-opencl: LWS/GWS (environment variables) fixes.
Ensure local/global_work_size are reset in all OpenCL formats. When
running --test, we may otherwise end up using figures from a
previous format.
raw-sha1-opencl: LWS/GWS (environment variable) fixes.
Final fix to the SIGALRM problem. My previous attempt at installing a
restarting signal handler was correct but incomplete (only
worked on some platforms).
Office OpenCL formats: Once again revert to using scalar code for all
devices due to what seem to be driver bugs.
Common-opencl: do not release unused event. No harm done but it can
produce confusing debug messages.
Wpapsk-opencl, krb5pa-sha1-opencl: Faster LWS enumeration (no
iterations).
Bugfixes for the new restart code in bench_handle_timer().
bench.c: For --test=0, make the OpenCL formats also do quick
benchmarking (for self-tests, not benchmark figures).
CUDA fixes. The --request-scalar/vector options does not apply to CUDA
(yet).
Less ambiguous usage text for --raw-always-valid
bench.c: Include stdlib.h for setenv
OpenCL: Print AMD-specific "board name" along with device name.
OpenCL: Bump cached file name buffer to PATH_BUFFER_SIZE after seeing
problems with very long names (long device name plus long
options made for 130 characters full path name).
Obey CL_KERNEL_WORK_GROUP_SIZE in a number of OpenCL formats.
bench.c: Add a linefeed after FAILED, and add output when all formats
pass.
More LWS/GWS vs. min/max-keys-per-crypt fixes.
The dreaded format struct stuff, for kwallet
raw2dyna: fgets wrapper macro for muting compiler warnings
README-CUDA: Now featuring magnum's "OpenCL vs. CUDA parlor", showing
how to tweak your CUDA formats using the values from OpenCL's
automatic tuning.
SybaseASE: Allocate key buffer using calloc (should not be needed
though)
Drop obsolete External modes (deprecated by the --min/max-length
options)
Fix the "fopen: john.rec: No such file or directory" bug. It was
caused by path_init() not being called early enough. Not sure
who did that.
Move the 500+ lines of --list logic out of john.c and into its own
file.
dynamic_fmt.c: Mute compiler warnings about breaking strict-aliasing
rules. listconf.c: Add JimF in copyright blurb.
Makefile: Add -Wno-attributes for muting loads of "warning:
always_inline function might not be inlinable"
Revert 8a1b909 and introduce another change suggested by Frank.
Fix a subtle bug in the OSX workaround for rar-opencl. Found by the
max-length self-test. Also bump max length to 22 and drop a couple
of obsolete "FIXME" in unrar code.
Re-enable a 9600GT workaround in ntlmv2-opencl and wpapsk-opencl, but
not in krb5pa-sha1. This should work on Bull as well.
phpass-opencl bugfix.
Make dynamic_fmt fully movable between unstable and bleeding.
Documentation updates.
Update CHANGES-jumbo and CREDITS-jumbo (and the .mailmap that helps
producing them).
Add Milen to CREDITS-jumbo.
Lastpass: Bugfix in valid().
dmg-opencl: valid() bugfix (segfaulted from the valid-killer[tm])
common-opencl: I believe "source size" is poor wording for binary
size.
Truecrypt formats: Change benchmark output to raw.
PuTTY, GPG and krb5-pa-sha1: Change benchmark to raw. SybaseASE: Move
stuff from crypt_all() to set_salt(). It did not make much
practical difference though.
Some more typos, and GPU README updates (supported formats list).
OpenCL: Change the -DAPPLE for OpenCL build options to -D__APPLE__.
Commit 04cf5f1 hurt performance for dynamic because data locality
suffered. This patch reverts it and use a union instead, to
satisfy the compiler.
Relbench: Ignore the new "All nn tests passed self-tests"
Single mode: Optionally load the full GECOS field (before splitting)
as one extra candidate. This is controlled with PristineGecos in
john.conf (and defaults to disabled).
Use list_add_unique() for the optional PristineGecos loading.
truecrypt_volume2john had CRLF line endings.
clang debug target fix.
Add self-tests that fail if you have a binary size > 0 but are using
fmt_default_binary() - and a similar test for salt. I believe this
does not emit any false positives but I'm not 100% sure yet.
BFEgg: Don't convert to base64 in crypt_all(), instead implement a
proper binary() that does the reverse.
formats.c: Degrade the latest self-tests to just warnings, and they
are also completely disabled unless -DDEBUG.
Fix a logic error for some only-once warnings.
Use correct value of BINARY_SIZE: GPU formats, and a couple Dhiru
missed (?)
Revert "clang debug target fix."
NetHalfLM and XSHA512: Alignment fixes.
Backport OpenCL fixes that was only committed to bleeding.
Revert "OpenCL: Change the -DAPPLE for OpenCL build options to
-D__APPLE__."
Fixes to keychain-opencl, strip-opencl and agilekeychain-opencl that
were only applied to bleeding.
Use -DDEBUG for the clang-debug targets!
Office OpenCL formats: Better valid(), with CPU format as template.
RAR formats: Implement a real bastard of a valid(). I will soon start
denying having written it.
Minor self-test tweaks.
Bwall's pwsafe patch broke builds using CommonCrypto. This fixes it.
Fix a hideous bug in rar2john introduced by in 216cc57. A variable was
declared as just "unsigned" (taken as int) instead of "unsigned
char" which lead to incorrect output. Not sure why the compiler
did not warn.
Correct ALGORITHM_NAME of mssql-12, pbkdf2-hmac-sha512 and the
Truecrypts. Use sha2.h for a number of formats that depended on
OpenSSL 0.9.8 (all but Truecrypt). Bump max length to 125
for pbkdf2-hmac-sha512 format. There's absolutely no point in
limiting it to 15.
Fixes for builds using Jim's homebrewn SHA-2.
Warnings from valid() should be suppressed if ldr_in_pot is set.
Fix for ldr_in_pot.
Introduce hash functions to hmac-md5.
Introduce hash functions to hmac-sha1.
Try to automagically detect and locate NSS, GMP and KRB5 libs, and
enable corresponding formats if successful. This is using Posix
find/grep and backticks. And pkg-config, if available.
MPI: Limit scope of an internal variable.
BLAKE2: Do not "secure zero memory".
SIPdump fixes (CppCheck). Also revert using MEM_FREE() and mem_alloc.
That is not a good idea for a stand-alone.
(Ab)use bench_running variable for keeping opencl_process_event() from
processing events while self-test is running. Otherwise a slow
self-test in combination with a short Save interval will thrash
the .rec file during start of a resumed session.
WPAPSK formats has a minimum password length of 8. This patch adds
code to john.c that enforces this. We may want to add min_length
in the format struct later on, and remove this hack.
WPA-PSK had a silly ESSID length limit of 14 that was already bumped
to 32 (the actual real-life limit) for the OpenCL version.
Moreover, it segfaulted on longer names. This patch bumps it for
CPU & CUDA too. For some reason the hccap buffer size is 36
(from hccap2john) so I kept that. Perhaps it's because it ends
up aligned including room for a NULL.
Decrease PLAINTEXT_LENGTH for all WPA-PSK formats to 64, because that
is the spec. limit. More interestingly, the spec. says the
characters set must be 0x20-0xfe (printable ASCII) so we also
unset FMT_8_BIT.
Add two WPA-PSK test vectors, including one for WPA (as opposed to
WPA2).
Get DMD5 straight, and add OMP support. This format was seriously
broken.
dmg: Make _memmem() static inline (will hopefully optimised away the
switch), enable 64-bit tests on 64-bit arch and disable
unaligned checks on platforms that does not support it.
dmg-opencl: Same fixes to _memmem(). ssh-ng: Provide an own
static inline copy of _memmem() instead of using one from dmg.
Bump OMP_SCALE for DMD5.
Unify Kerberos names.
DMD5 format should not lowercase nonce hashes. They are used as-is!
hmac-sha1 bugfix for get_hash().
Cosmetical changes.
SAP formats: Minor fix mostly for satisfying Valgrind.
Fix an off-by-one in dynamic.
Office: Use calloc instead of alloc, just for muting Valgrind.
memory.c: When -DDEBUG, we turn mem_alloc_tiny() into a normal alloc,
to better track problems.
Drop some #ifdef DEBUG, or change them to specific ones like
RAR_DEBUG.
Wow-srp: This format is not case sensitive so unset FMT_CASE, and also
make the upper-casing in set_key() encoding-aware.
Wowsrp has a minimum password length of 8, so add it to the hack we
did for wpa-psk.
Drop a bunch of old formats from the unused/ directory. We can always
get them back from git if needed, or from old tar balls.
Adjust a stack buffer after the recent bugfix to Office 2007. This
doesn't matter but it makes the code less confusing.
Get rid of all use of alloca() and dynamic size arrays. Also fixes a
bug in keyring format: The "crack array" was not always reset
correctly. Makefile: Add OMPFLAGS comments for OSX llvm-gcc.
Truecrypt format: Use signed int for OpenMP loop, as required by
spec.
DMG: Another alloca() found and changed to fixed size stack array.
Dynamic: make sure valid() is looking at de-hexified data if
applicable.
Pwsafe-cuda: Adjust BLOCKS according to count argument. Shaves a
minute from self-test and helps Single mode. Verified with the
Test Suite.
CUDA formats: Adopt to count argument to crypt_all().
ZIP: Implement a proper cmp_all() instead of returning 1 and relying
on cmp_one(). This should be faster due to less function call
overhead.
Office OpenCL formats: avoid false sharing of crack array.
Unify dynamic_fmt.c among branches
Move WPAPSK test vectors to wpapsk.h and add a length 63 test.
wpapsk-cuda: Some compilers did not like having the test vectors in
wpapsk.h so we define it out when building kernel.
git grep -l '<stdint.h>' | xargs sed -ri 's/<stdint.h>/"stdint.h"/'
Fix a bug in dmg formats, and add debug output.
WPAPSK (CPU and GPU): Exploit same-essid weakness. Huge speedup when
applicable. See
http://www.openwall.com/lists/john-dev/2013/01/29/13 and on for
discussion.
DMG debug bugfix (duh!), and a new test that seems pretty generic.
dmg2john error message.
dmg2john: Temporary fixes to handle large files and iteration count.
DMG: Support iteration count. DMG-opencl: A bunch of fixes. This
format was not up to par with CPU format. Serious flaws fixed.
Add a known plain test for 8 consecutive nulls.
SIMD support for NTLMv1 and OMP tweaks for non-SIMD. (cherry
picked from commit f3c6622be4054faf8992112c4c5101d5731baff1)
Merge Solar's 2nd version of NETNTLM patch. (cherry picked from
commit 6ab65c5, manually merged from ea46591)
NTLMv1: Very effective hint to the optimiser in cmp_all(). And
benchmark using crippled plaintexts, so we measure real-life
performance.
NT2: Bugfixes to experimental OMP support (defaults to disabled).
(cherry picked from commit 884e277d25b7ae441ea1f1ee5aee335fd412ae47)
DMG formats: Disable all but the NULL test, but bump that one to 16.
(cherry picked from commit
17b2c582debddf2ee482c18516e9d03cdbae8901)
DMG: Re-enable the other plaintext checks (but not Apple). (cherry
picked from commit 5d47bdc00ac037456f53369099c860e1397946c4)
DMG: properly re-enable plain checks, for OpenCL too. (cherry
picked from commit 7be93725d5b8b0ad9ac6a42735ce16fa5ad334a6)
NTLMv1: Bugfix, and compact the hash functions (before merging the new
stuff to mschapv2)
MSCHAPv2: SIMD support and exploitation of weakness just like NTLMv1
(the formats are very similar)
NTLMv1 and MSCHAPv2: reject hashes in valid() as hinted by Solar.
Bugfix for Jim's patch. Some debug functions were not static, and they
were included several times for GPU builds so the compiler
bailed. Also wrap that debug stuff in WPAPSK_DEBUG.
MSCHAPv2, NTLMv1: After the 3rd DES block check in valid(), cache the
indexes so we don't have to loop again in binary().
Truecrypt: replace a dynamic array with alloc/free. The format is so
slow this does not hurt performance at all.
NTLMv1 & MSCHAPv2: Use multiple blocks for the SSE version (still
single threaded) for bumping "many salts" speed. Actually we
bump it to the ceiling of what JtR can report - the output is
capped at 4294M c/s.
bench.c: Support benchmark speeds over 2^32.
NTLMv1/MSCHAPv2: Use memset for bitmap if more than 200 keys per
crypt.
NT2, NTLMv1, MSCHAPv2 tweaks for experimental OMP+SSE2.
Dynamic: Bugfix for MMX (I think it's right, I can't link it).
Raw MD4/MD5: MMX fixes.
More MMX fixes, including a cludge in the max-length self-test, for
MMX formats that use total_len.
dynamic.c: Bugfix.
Use DO_ALIGN macros in Jumbo .S files.
Portability fixes from building on ancient Sparc Solaris 32-bit.
MSCHAPv2 & NTLMv1: Emit a warning after loading 100 c/r pairs,
informing about slow loading and alternative formats.
Re-introduce the old versions as mschapv2-naive and
netntlmv1-naive. Also fix the DES caching in NETNTLM: it may be
called from prepare() so the cache must be checked not only in
binary() but also in valid().
o5logon: Minor optmizations.
CUDA device list: Add PCI id to output, and replace a deprecated
parameter with a new, getting more detail.
Add any_cracked to a bunch of OpenCL formats that use crack array.
Add "naive" to the ALGORITHM_NAME for old load-fast-run-slow versions
of MSCHAPv2/NTLMv1, as in [32/64 naive]
Add wpapcap2john to .gitignore.
GPG: Optimizations, and bump max length to 32.
Endianness & alignment fixes from testing on a Sparc32.
More BE and alignment fixes. Some problems were in shared code in
unicode.c and the problems has been fixed backwards until now.
Most unicode.c functions convert/process UTF-16LE *regardless of
arch* and any endian fixes must account for that (normally none
is needed).
Make itoa64 and the likes const.
Crypt-SHA formats: Use a ROUNDS_MIN of 1.
pbkdf2-hmac-sha1: Support OSX 10.8 from "the Dave Grohl tool" as well
as GRUB hashes, without converting them. We support hashes
longer than 64 bytes but we don't calculate/verify past 64 even
in cmp_exact() - the chance for such a collision is
slim-to-none.
pbkdf2-hmac-sha1: Do a complete calculation & verify for full binary
size, just for good measure.
pbkdf2-hmac-sha512: Improve the warning messages given for partial
matches.
Endian fixes for BFEgg, wpapsk, pbkdf2-hmac-sha152, pwsafe and shared
pbkdf2-hmac-sha1. Also a bugfix for openvms but it still
segfaults for me. This is now the only format that doesn't pass
self-test.
Drop run-time version checks for NSS that would be bad if run-time lib
is older than build-time one.
Mscash: Get rid of compiler warnings on linux-ppc32.
Alignment fixes.
Rules.c bugfix for -max-length. Format's max length is already
adjusted down to max-length, and the RULE macro would do an
unwanted incrementaion.
Fix indentation for sha2[ch] before merging it to bleeding. This is a
pure whitespace fix.
On second thought, use the SHA2 version that was in bleeding instead.
Also try to mitigate a bogus strict aliasing warning. We are
already using a proper union for all I can see.
Mute harmless compiler warnings if MIN() already defined.
Better fix against that alleged strict-aliasing violation.
Move md5_eq.c to unused.
Remove md5_eq.o from Makefile.
formats.c: Stop trying to use system's strnlen(), instead always use
our supplied fmt_strnlen(). We could move it to misc.c too at
some point.
Revert SHA2 strict-aliasing fixes. They did not work at all for BE.
We can force Jim's generic SHA-2 with -DFORCE_GENERIC_SHA2. This patch
adds a way to force OpenSSL over CommonCrypto, using
-DFORCE_OPENSSL_SHA2.
Alignment fixes
Mute a warning for generic target.
Merge the current MSCHAPv2 naive format (with FreeRadius support) to
Deepika's bitsliced format. Then drop the original format and
use BS format as "naive". Lots of whitespace changes, view with
-w.
DES BS plain SSE asm: Properly underscore P if applicable. It works on
OSX anyway but I'm not sure it will on others that
-DUNDERSCORES.
Alignment fix for mschapv2-bs
MSCHAPv2-BS: Merge two loops into one. This made a 5% boost here.
MSCHAPv2 BS: #ifdefs for FMT_ flags
Add some formats to benchmark-unify.
Update CHANGES-jumbo.git & CREDITS-jumbo.
I always end up confusing crypt(3) base64 with MIME Base64: Add some
comments.
Fix a slight bug in sha512crypt binary() that could never surface. It
was processing the trailing NULL. Also drop some copy-paste
artefacts.
Some Kerberos libs are not thread safe, but fortunately we can find
out using the krb5_is_thread_safe() call.
Decrease OMP_SCALE in a number of formats. This number needs to be
tweaked for each format, not just copied from a template.
listconf.c: Rewrite the formats list function. It was overly complex
and buggy.
Add format groups "opencl", "cuda", "cpu" and "gpu" for use with
--test as well as with things like "--list=formats" and so on.
Also allow wildcard in the end, as in wpapsk* or krb5*.
listconf.c: Suppress leading space in benchmark_comment.
Document --format group aliases/wildcards.
OpenCL DES: Honour device limit for LWS.
Documentation updates.
Disable the max-length self-test unless -DDEBUG.
NT2: Five percent boost for codepage encoding, from optimizations in
set_key().
raw-md5u: Three percent boost for codepage encoding, from
optimizations in set_key().
ntlmv1/mschapv2: Five percent boost for codepage encoding, from
optimizations in set_key().
mssql05: Optimizations in set_key() for codepage encoding.
DES-opencl: Safer LWS capping (ensure GWS is still multiple of LWS).
ODF formats (all three): Handle content.xml sizes less than 1024 bytes
correctly.
ODF formats: Make valid() a little more picky about hex length.
Add OSX clang-debug target.
Add macosx-x86-sse2-opencl (ie. 32-bit) build target.
uint64_t vs OpenCL fixes. In OpenCL, long is always 64-bit while long
long (if supported at all) is 128-bit. On host side, we use
"stdint.h" (not <stdint.h>).
Use "stdint.h" in pbkdf2-hmac-sha512 format.
DMG formats bugfix for "0 iterations" (assume 1000).
Truecrypt: Simplify cmp_all(), unfortunately for no performance gain.
dmg2john: bugfix.
dmg2john: Use base name of file name in output.
DMG formats: Serious bug fixes for 3DES v1 images. This fixes the
problem with false positives as well as an even worse one: false
negatives o.O
Add wpapcap2john from bleeding-jumbo.
uaf2john: Do not support writing to outfile, only to stdout. And add a
make target.
zip2john: Use base name of filename for login field.
MSCHAPv2 & NTLMv1: Smaller hot array. 25% boost for many salts, a
couple for one salt. Also enable OMP for SSE2.
MSCHAPv2 & NTLMv1: Again disable OMP for SSE2 - it works fine on some
CPUs but not on others.
Make odf2john work with python 2.6 (as well as 2.7).
Change odf2john so we fall back to the deprecated function only if the
newer one is not supported.
Fix SAVE= timer similar to Costin's patch.
Fixes for the recent timer changes. Fixes a bug introduced for
--max-run-time where a resumed session would immediately abort
again. And if OS_TIMER, we only call status_get_time() if
--max-run-time or --progress-every was given.
Update CHANGES-jumbo.git and CREDITS-jumbo.
Document --request-vector and --request-scalar options in
README-OPENCL.
mscash2-opencl: Fix for forced LWS larger than kernel's max.
Document the OSX problem with OpenCL kernel header files.
Wordlist bug fixes: Reject wordlist containing NULL bytes, and handle
inconsequent line feeds (eg. spurious CR within a line). This fix
will do for Jumbo-8 so we don't introduce new problems.
cisco2john: Fixes after testing with lots of real config files. And
add some more stuff to seed output (hostname, communities).
Fix the postgre format: Rename it to postgres, including the tag. The
old format is still supported. Also improve valid().
Rename the postgre source file too o.O
Some format name changes to clarify what they are.
s/Staroffice/StarOffice/
Add CXX variable to Makefile. Add separate PROJ_ sections for C++ as
well as pcap, so John does not fail building even if they do.
Also add uaf2john and truecrypt_volume2john to the main targets
and move office2john to unused.
Makefile tweaks.
uaf2john: Fix an aliasing problem.
Fix another warning in wpapcap2john (fread return value).
Fix generic build after the timer fixes.
Move wpapcap2john from PROJ_PCAP to PROJ - it does not depend on
libpcap!
Revert 8e992e4 and instead bump RULE_BUFFER_SIZE in params.h by 4. We
should look into this more closely but this will do for now.
Makefile: Add a "Done." after building the pcap targets.
Fix valid() in ntlmv2-opencl. It counted salt length incorrectly.
pass_gen.pl: Support UTF-8 for -salt argument when -utf8 option is
given.
Stop user from trying to use any encoding other than iso-8859-1 with
formats that lack support for it. It would just end up in false
negatives.
Drop bogus FMT_UTF8 flag from Truecrypt.
Change MPI reduction for benchmarks for accurate average speeds. Also,
reduce the int64 properly (only affects 32-bit or BE systems).
Update README-mpi.
Comment out all atexit(done) in OpenCL formats and let the OS do the
clean-up. Otherwise we got segfaults in the end after a --test
run. The real fixes are already present in bleeding branch.
CUDA formats: Tweak default THREADS*BLOCKS so they work on weaker
devices.
Dynamic: Change name of "salted Cisco PIX" to "Cisco ASA"
Copy the improved ZIP valid() to the OpenCL version of same format.
Refuse to translate \x00 into a null in user classes.
Add external mode filters for UTF-8 validation. This is slow though.
Rename NETNTLM_old_fmt_plug.c to NETNTLM_bs_fmt_plug.c.
Change self-test use of set_key("", index) into something that
actually passes a large enough buffer for any use.
Change self-test use of set_key(current->plaintext, index) into
something that actually passes a large enough buffer for any
use.
Sparc fixes. Latest optimization of mschap/ntlm formats broke BE.
PDF format still used the Bad Idea[tm] version of valid().
Add missing deallocations in OpenCL DMG & RAR formats' valid().
SAP F/G: Bump maximum length. We over-ran a buffer with the latest
self-tests.
Bug fixes to thin dynamic formats PHPS, formspring, mediawiki, osc and
phpassMD5. They over-ran buffer when given bad input files.
More robust valid() in salted sha1 / nsldap formats.
Do some actual validation in SIP valid().
Actually, while at it we should just as well validate it is lower-case
hex.
WOW-SRP fixes. Not sure I found all, this is a mess.
rar2john big-endian fixes for Unicode filenames in RAR.
Makefile tweaks for JOHN_CFLAGS etc.
Canonical fixes for new tcphdr.h (failed on Sparc)
Revert "JtR-Dynamic_validation_raw_hashes-2.patch". It made things
worse.
Macros for prefixing MD[45]_(Init|Update|Final) with "john_" for
avoiding clashes with OpenSSL library.
Endian stuff.
Drop un-needed header in ssha-opencl.
Add macosx-x86-64-native build target. To use it, you need to copy
osx_as_wrapper.sh (from the src directory) to /usr/local/bin/as or
to some other directory (but the script MUST be called 'as') and
ensure this directory is first in your $PATH.
Precedence: MSCHAPv2 should pick sploit version over BS one.
Generic crypt format bugfix.
Testpara vs. HAVE_OPENSSL fix.
kwallet2john: Handle multiple files, and strip suffix and path from
login.
truecrypt_volume2john: Use filename as login field, and convert to a
john symlink.
Makefile fixes for OSX 32-bit cross-compile.
Bugfix for memory.c under -DDEBUG. In order to easier track bugs,
mem_alloc_tiny() is changed to a normal alloc. But it was supposed
to still maintain requested alignment!
Dynamic bugfix for $HEX$.
Change the way -DDEBUG affects mem_alloc_tiny(). The outcome is
practically the same but this is cleaner.
Revert "Change the way -DDEBUG affects mem_alloc_tiny(). The outcome
is practically"
Final canonical change for -DDEBUG versus mem_alloc_tiny.
Do not misalign SSE2 buffers when --save-memory=3 or above. The
previous fix did not catch all cases.
Relbench tweaks, for ignoring warnings.
OMP_SCALE tweaks. There are massive gains to win in some formats. All
OMP formats should be revised, but there are so many :-/
Fixes for a couple of make targets.
Drop inconsistent paths in the auto-conf hack.
Drop the wchar stuff from gpg2john. 8-bit GECOS now works fine.
Netscreen: Better valid().
DMD5: Better valid().
Update CHANGES-jumbo.git and CREDITS-jumbo.
More restrictive valid() in nsldap, salted-sha1 and ssha-opencl.
Comment out dynamic_1028. It was using un-implemented functions...
Improve valid() in all MSCHAPv2 and NETNTLMv2 formats.
Remove unused variable from agilekeychain-opencl.
doc/MARKOV note about UTF-8 filter.
Revert "SIP valid() fix."
Copyright blurb.
VMS: Better valid().
Drop unused variable from VMS.
Merge recent sxc fixes to sxc-opencl.
Merge a whole bunch of fixes made to CPU formats, to the OpenCL ones.
Conflicts: src/opencl_agilekeychain_fmt.c
Updated doc/BUGS for unstable.
Typo in README-OPENCL.
Update .mailmap for git shortlog.
Update CHANGES-jumbo.git (CREDITS-jumbo does not need update).
Document some requirements in doc/INSTALL.
100% white-space cleaning.
Change name from 1.7.9-jumbo-8-unstable to 1.7.9-jumbo-8-RC
Change --raw-always-valid (et al) to --bare-always-valid to avoid
confusion.
Documentation updates.
Add a line to --list=hidden-options:
Fix a cosmetic bug when listing formats with wildcards that match
dynamic.
Fix a couple of problems with raw-sha1-opencl. And while at it, bump
max length to 55 and use "compressed" key buffer for a nice
boost.
mkvcalcproba: Support reading from stdin.
genmkvpwd: Change %lld to %llu for correct printing of large numbers.
bash-completion: Drop trailing whitespace.
bash-completion: Redirect dynamic.conf errors to /dev/null.
Update CHANGES-jumbo.git (CREDITS-jumbo needed no change).
Add repeats16 and repeats32 external modes (from the obsolete contest
branch).
Update CREDITS-jumbo & CHANGES-jumbo.git.
Add a comment in ext_init explaining a confusing bail-out.
Endianness fixes in Blake.
Bad wordlist.c bug fixed, triggered when running -loop under MPI.
Bugfix for pbkdf2 CPU/OpenCL/CUDA code. Bug may have affected several
formats where salt length was larger than 23. Thanks to Marcus
Desto for reporting.
Update CHANGES-jumbo.git (CREDITS-jumbo needed no change).
Fix a bug where -DDEBUG would cause an infinite loop in
mem_alloc_tiny() because MEM_ALLOC_SIZE is set to zero
(Jumbo-specific) and we ended up never breaking out of the while
loop. Thanks to bytebieger for noticing the problem and
patiently convince me.
Fix another potential problem with -DDEBUG vs. mem_alloc_tiny().
Print human readable OpenSSL version string with --list=build-info.
Update CHANGES-jumbo & CREDITS-jumbo.git
Use the recent mem_alloc_tiny() bugfix for size zero even when not
-DDEBUG because returning a pointer might be asking for problems.
Unicode bugfix for OpenCL Office formats.
raw-sha1-opencl: Fix bug where obsolete code that only handled up
to length 23 was accidentally used. And drop the obsolete code.
wpapcap2john: Add SSID in "user" field for Single mode use.
hccap2john: Add SSID in "user" field for Single mode use.
Make Oracle 10 format more robust (allow lower-case salts even when
prepare() is not used).
Another tweak to the mem_alloc_tiny() vs. -DDEBUG issue.
wpapcap2john: Ensure we don't overrun SSID buffer with overlong tags,
and print a debug message. Thanks to bytebieger for reporting
this issue. We still do not know the cause. See
https://github.com/openwall/john/pull/366 for
discussion.
NVCC tweaks (mostly comments, but add -fmad=true) in Makefile.
Fix an obscure bug in mscash where an overlong key would truncate
to 28 instead of 27 in UTF-8 mode. NT already had a fix for it so
unify the code for them.
Protect a CUDA macro from being expanded to something not intended.
I'm not sure there was a problem, just saw the dangerous definiton.
Change malloc() to mem_alloc() in a bunch of formats. The latter sits
in memory.c and has error checking.
Update CHANGES-jumbo.git and CREDITS-jumbo
sapG: Add FMT_UTF8 even though we are not FMT_UNICODE.
Improve valid() in netlm, nethalflm and mssql12.
Improve valid() in krb5pa formats.
Explicitly state that wpapsk formats do support WPA and WPA2.
Update CHANGES-jumbo.git & CREDITS-jumbo
Merge recent change to DMG CPU format to OpenCL.
Use 8x for SIMD SHA-1, for gcc >= 4.7 if AVX or XOP.
Fix OSX build targets for CUDA for Xcode 5.0 and CUDA 5.
mysql-sha1 formats: SPLIT_UNIFIES_CASE bugfix and unify test vectors.
Better description of MySQL formats vs. versions.
Bugfixes from bleeding back-ported to unstable.
Fixes for building CUDA on OSX Mavericks.
Makefile CUDA: Add natural path to nvcc with an NVCC macro, and
make the OSX -ccbin quirk a macro too.
CUDA fix for when nvcc is not in /usr/local/bin.
Drop -cl-strict-aliasing from OpenCL build options. It's deprecated.
Print a warning when FMT_NOT_EXACT.
pkzip: Bugfix for #467. Two early rejection tests had to be disabled.
Hopefully they can be re-enabled by JimF after some tuning.
Update CREDITS-jumbo & CHANGES-jumbo.git
Fix an old bug with CPstoreUTF8 vs. split hashes and --show. Some
cracked hashes with passwords containing 8-bit characters would be
output as partially uncracked in case CPstoreUTF8 was enabled.
SAP B passed salts to loader with possible garbage in the end
(variable length). This lead to loader potentially seeing
"different" salts even though they were the same. Closes #608.
It turns out krb5-23 are just NT hashes. Drop the krb5-23 format
(it was a lot slower) and change kdcdump2john.py so it outputs
$NT$ tags for those.
Add some alternative addresses for Dhiru to .mailmap so Git knows
he is one same person

Dhiru Kholia (337):


BONUS: pwsafe format also cracks Password Gorilla databases.
Integrate psk-crack (from ike-scan) into john.
Add support for cracking Nuked-Klan CMS hashes.
Fix build.
Bump LINE_BUFFER_SIZE. Needed for pfx format.
OpenCL implementation of Keychain format
Keychain format is now 2.4x faster on CPU and scales almost linearly.
Thanks to Lukas!
Fix keychain format crash due to stack smashing
Add support for cracking 1Password Agile Keychain files
Reduce false positives in agilekeychain format
OpenCL implementation of Agile Keychain format
integrate keychain2john program with john
Add support for cracking ODF 1.2 AES encrypted documents
Update FORMAT_NAME in ODF format
Remove my hacks from ODF format
misc. minor fixes
Add AES-256 encrypted ZIP file test vector.
OpenCL implementation of ZIP AES format
Do not build Truecrypt unless OpenSSL >= 1.0.1
Add support for cracking M$ Outlook's PST files
GNOME Keyring cracker patch for JtR
Add keyring2john program (for now it is standalone).
Add support for cracking Office 97-2003 encrypted files
EncFS cracker patch for JtR
OpenCL implementation of EncFS cracker
OpenCL implementation of ODF format
SXC cracker patch for JtR
OpenCL implementation of SXC format
Respect "iterations" parameter in PBKDF2 code
Respect "iterations" parameter in keychain PBKDF2 kernel
add test vectors from CMIYC 2012
add test vectors from CMIYC 2012
add test vectors from CMIYC 2012
pdf2john fixes by JimF
Add OMP support in PDF format.
Detect PDF files using AES encryption and bail out early
Fix bug in PDF format exposed by a new test vector (added to pdfdump)
Detect unsupported PDF files and bail out
Implement npdf format which will eventually replace the existing pdf
format (once npdf2john is committed).
Remove ":" from npdf test vectors
Make npdf format compatible with core changes
Use our own SHA2 implementation
Fix breakage in keychain2john program
Add support for cracking PuTTY private keys
Rename ppk format to putty
Use our faster HMAC-SHA1 implementation
Add support for cracking OpenPGP / GnuPG private key files
Add support for more hashing algorithms
add test vectors from CMIYC 2012
OpenCL implementation of GPG format
Make NVIDIA OpenCL compiler happy
Integrate gpg2john with john
Add documentation for gpg format
Add OMP support in gpg-opencl format
Add support for cracking MS SQL 2012 hashes
Add support for cracking MySQL network authentication hashes
Make mysqlna format compatible with core changes
(v5) Add support for cracking DMG files
simplify DMG format
fix detection of plain DMG files
add more test vectors
Add dmg2john to .gitignore
Add OMP support in dmg format
OpenCL implementation of DMG format
Begin adding Office RC4 CryptoAPI Encryption support
Office RC4 CryptoAPI Encryption support is done for doc files
Office RC4 CryptoAPI Encryption support is done for ppt files
Office RC4 CryptoAPI Encryption support is done for xls files
Fix some correctness issues
Add support for cracking Office 2013 files
Add support for cracking STRIP Password Manager databases
ml2john.py extracts Mountain Lion hashes
fix permissions
fix shebang line
Fix OMP support in new KRB formats
Fix krb5-23 format on OSX
Fix krb5-18 format on OSX
Make Pyflakes happy
OMP build fixes for EncFS format
Add support for cracking GRUB2 and OS X 10.8 hashes. Coded by Lukas.
Remove my hacks from VNC format
Update for Office 2013
OpenCL implementation of STRIP format
Improve error handling
Add support for parsing newer Office files to office2john.py
Support cracking of iSCSI CHAP authentication hashes
dos2unix on chap_fmt_plug.c
Update OleFileIO_PL code
Use only filename instead of full path
Fix a correctness issue in Office format
Fix warnings and indentation in FGT format
Fix FGT format crash when built using linux-x86-64-clang-debug target
Add another test vector in CHAP format
Fix memory leaks in EncFS formats
Remove dead assignments
Fix license issues
Begin adding OMP-support to hmac formats
Add OMP support to hmac formats
Add support for cracking Oracle O5LOGON protocol hashes
PPC fixes
add more test vectors in o5logon format
Add support for PostgreSQL MD5 challenge-response cracking
Add usage instructions in VNC format
Speed-up o5logon format.
Remove my hacks from o5logon format
Revert "Remove my hacks from o5logon format"
Fix build when using ICC
Integrate OpenVMS support 2.4 patch by David Jones
Pull changes from v2 version of VMS patch
New version of office2john that rips keywords from document metadata
and puts them in GECOS field for use by Single mode. Also bump
some figures in params.h to cope with more words in said field.
Fix issue #100 gpg-opencl does not work
Fix static build on Owl-current systems
Add some more test vectors
Add ssh-ng format which is 4 to 5 times faster than ssh format
add DSA test vector in gpg format
Add another test vector (from MIT Kerberos 1.9 setup)
Add MS Kerberos 5 AS-REQ Pre-Auth aes256-cts-hmac-sha1-96 format
add crypt(md5(p),salt) format
Add support for cracking WebEdition CMS hashes
Add support for cracking sniffed LastPass hashes
Add support for cracking Clipperz databases
Add documentation for Keyring and Keychain formats
Add another test vector (from Windows 8 + 2012 AD setup)
Fix format flags
Cracker for both MongoDB system and sniffed network hashes
Add more MongoDB network test vectors
Add more MongoDB network test vectors
Add one more test vector (stolen from chapcrack)
Fix valid in gpg-opencl format
Add support for parsing rc4-hmac hashes and unify input format
make ciphertext parsing more robust in dmg formats
make ciphertext parsing more robust in gpg format
make ciphertext parsing more robust in npdf format
make ciphertext parsing more robust in chap format
make ciphertext parsing more robust in agilekeychain formats
make ciphertext parsing more robust in keychain formats
make ciphertext parsing more robust in keyring format
make ciphertext parsing more robust in mysqlna format
make ciphertext parsing more robust in krb5-18 format
Make dmg parser more robust
make ciphertext parsing more robust in RACF format
make ciphertext parsing more robust in ssh-ng format
Fix valid in RACF format
fix use-after-free bug
Make magnum and Clang happy at the same time
Add one more dynamic_1009 sample
make ciphertext parsing more robust in putty format
Fix build failure on FreeBSD 9.1
Add support for sha1($s.$p) which is used by SilverStripe CMS
Revert "Add support for sha1($s.$p) which is used by SilverStripe CMS"
Add another test vector in sha1-gen format
make ciphertext parsing more robust in keepass format
make ciphertext parsing more robust in encfs format
make ciphertext parsing more robust in encfs-opencl format
make ciphertext parsing more robust in strip formats
Revert "Add support for sha1($s.$p) which is used by SilverStripe CMS"
Add another test vector in sha1-gen format
Fix earlier breakage of odf-opencl format
make ciphertext parsing more robust in odf formats
Reduce weirdness in dmg format
make ciphertext parsing more robust in sxc formats
Fix potential memory leak in pwsafe format
Avoid pointless memcpy call in npdf format
Fix check (and avoid Clang warning) in ssh-ng format
Fix potential memory leaks and warnings in keepass2john
Avoid Clang warning in unrar library code
Fix warnings in gpg format
Fix potential leaks indicated by scan-build
Fix potential leaks indicated by scan-build in pdf2john
make ciphertext parsing more robust in pfx format
make ciphertext parsing more robust in ssh format
make ciphertext parsing more robust in o5logon format
make ciphertext parsing more robust in wbb3 format
Fix to pass new self-test for maximum length
Fix to pass new self-test for maximum length
Fix "Bad Idea" in agilekeychain formats
Fix "Bad Idea" in chap format
Fix "Bad Idea" in gpg formats
Fix "Bad Idea" in keychain formats
Fix "Bad Idea" in keyring format
Fix "Bad Idea" in ssh-ng format
Make ciphertext parsing more robust in LastPass format
Make ciphertext parsing more robust in MongoDB format
Get rid of Clang warnings for rar2john
Silence clang warning in KeyDBCracker.c
1. Fix valid in pdf format (patch from Narendra) 2. Avoid dynamic
memory allocation
Make agilekc2john more robust against bad data
Make encfs2john more robust against bad data
Make keepass2john more robust against bad data
Make zip2john more robust against bad data
Max length bugfix in pkzip format
Integrate keyring2john with john
Misc. updates for keyring2john
Get rid of some clang warnings
Add support for BLAKE2 hash function (https://blake2.net/)
Add another BLAKE2 test vector
Add some more "popular" BLAKE2 test vectors
Fix description and make Frank happy
Add support for cracking ODF files using AES encryption on GPU
Output ML hashes in gangnam (err... magnum) style
Fix badness in odf format
Add support for cracking LastPass's offline database
Implement fix suggested by magnum
Rename keychain.h to pbkdf2_hmac_sha1.h, add pbkdf2_hmac_sha256.h
Add npdf2john.py written by Shane
Get rid of older pdf format
Remove references to pdf2john which is now gone
Rename npdf to pdf
Use optimized implementations of BLAKE2 on supported platforms
Add htdigest2john.py utility. Thanks to Jim for help!
Fix generic build (BLAKE2 build problem)
Add OMP support to TrueCrypt formats
Rename pdfdump to pdfdump_old and add new working pdfdump file
Use correct value of BINARY_SIZE
Remove debugging code (linux-x86-64-clang-debug was giving warnings)
Fix warnings when building linux-x86-64-clang-debug target
Document usage of ssh formats
Fix multiple bugs in sshng2john.py
Fix problem in office format found by magnum by using valgrind
Fix problem in office OpenCL format found by magnum by using valgrind
The "cracked array" was not always reset correctly. Fix it.
Integrate dmg2john with john
Remove dmg2john target and stop confusing people
Fix running of KWallet format on big-endian systems
Fix warnings in dmg2john
Add support for WinRAR SFX files
Information on cracking Oracle APEX hashes
Misc. fixes for putty2john utility
Add support for handling multiple files in uaf2john
Add support for handling multiple files in truecrypt_volume2john
Dynamic type for md5($p,$s) for long salts
Remove redefinition (issue #233)
Add utility to convert Cisco type-4 hashes into raw-sha256 hashes
Fix ASAN crash in pkzip format
make valid() "stronger"
Fix ASAN crash in dmd5 format
Fix ASAN crash in oracle format
Fix ASAN crash (still needs better valid)
Fix ASAN crash (needs another look)
Commit another weird and custom format
Fix ASAN crash and (get|set)_salt methods
Python port of dmg2john utility
Fix ASAN crash in ipb2 format
Fix multiple ASAN related crashes
Fix ASAN related crashes in SAP formats
Revert "Fix ASAN crash (needs another look)"
Fix ASAN crash (without any performance loss)
Revert "Fix ASAN related crashes in SAP formats"
Document known ASAN related crashes
Fix mistakes made in commit 23dc44df
Revert "Fix ASAN crash in ipb2 format" due to speed loss
Document known ASAN related crash in ipb2 format
Fix ASAN related crash in nk format
Revert "Fix ASAN crash in dmd5 format" (better fix coming)
Fix ASAN crash in dmd5 format
Fix problems pointed out by Frank
fix clang-analyzer warning in mozilla DES code
misc. fixes
Remove dead code
Remove dead assignment
fix resource / memory leaks in dmg2john.c
Remove unused code
misc. small fixes in dmg2john
Fix a very weird compilation error with GCC 4.8.0
Fix compilation failure with Clang (trunk)
Fix memory leak + "invalid read" in pwsafe formats
Fix "invalid read" in keepass format
Fix "invalid read" in ike format
Fix misc. "invalid read" problems
make valid() stronger in clipperz format
make valid() stronger in radmin format
make valid() stronger in pst format
make valid() stronger in mozilla format
fix potential leaks in dmg format
fix memory leaks in zip2john
fix potential memory leaks in rar2john
fix typos
fix warnings in gpg2john
Fix problems found by Alexander Cherepanov in mozilla format
Fix valid in sip format
Fix various crashes found by Alexander Cherepanov
Fix crash in zip format found by Alexander Cherepanov
Fix various crashes found by Alexander Cherepanov
Revert "Fix crash in zip format found by Alexander Cherepanov"
Hopefully the "right" fix for the zip crash
misc. fixes for zip stuff
Fix crash in dmd5 format found by Alexander Cherepanov
Fix django crash found by Alexander Cherepanov
Fix a typo in keepass2john
Fix base64 decoding bug and add support for Cloud Keychain files
Make agilekc2john work under Python 3.3 too
Make sshng2john work under Python 3.3 too
Make sshng2john work under Python 2.4 to Python 3.3
Make agilekc2john work under Python 2.4 to Python 3.3
Fix crash for "qpdf" generated file and misc. PEP8 fixes
Remove unused code from ml2john.py
misc. Python portability fixes
Make dmg2john work under Python 2.4 to Python 3.3
Fix for django format crash (one of the many) :(
more portability fixes
Make odf2john work under Python 3.3 too
even more portability fixes
portability fixes
Make office2john.py work under Python 3.3 too
Add error handling in pdf2john
some less-than-ideal fixes for keyring2john
Agile Keychain optimizations (thanks atom!)
Calculate only what we will use (thanks atom!)
Even more optimizations (courtesy of atom)
misc. portability fixes
Add ssh2sshng.py utility for converting ssh hashes into sshng hashes
Add support for cracking Siemens S7 authentication protocol hashes
misc. portability fixes
make s7 format compatible with unstable-jumbo
Don't be too greedy. Fix failures caused by 07a3e05.
Document that mozilla format fails on big-endian boxes
Changes from commit 7eecef982c5d458a22d8c9c3b870743edfc5ba76
Pick changes from bleeding-jumbo
Pick tweaks from corresponding CPU format
fix crash in ike format
fix crash in dmg format
borrow valid from the corresponding CPU format
fix crash in keyring format
tighten check in episerver format
tighten check in clipperz format
New dynamic types from Alexander Cherepanov and "Waffle"
fix yet another crash in dmg format
check maximum hash length in episerver format
check maximum username length in mongodb format
fix crash in putty format
fix crash in office format
fix crash in sxc format
fix crash in wbb3 format
fix crash in pdf format
clean up dmg stuff a bit
Start using Travis CI
tweaks required for building on FreeBSD 10 (32-bit)

Claudio André (157):


Improvement: pre-compute modulus values.
Improvement: multi-kernel mode created.
Improvement: allow to select at runtime the kernel to be executed.
Improvement: create a default/safe kernel.
Fix: allow user to run the software without
cl_khr_byte_addressable_store
Improvement: create a fast mode (more aggressive defaults).
Fix: inside get_processor_family (OpenCL) code.
Fix: missed some checks on common-opencl.c for disabled
cl_khr_byte_addressable_store.
Improvement: create a better way to select default global work size.
Improvement: a new AMD kernel that run in a set of stages.
Improvement: a new NVIDIA kernel that run in a set of stages.
Some incorrect comment changed.
Improvement: merge CPU and default kernels.
New OpenCL sha256crypt format.
Fix: code clean-up.
Merge with jumbo-6-fixes
Fix: more code clean-up.
Merge with jumbo-6-fixes
Fix: decrease memory usage.
Fix: code cleanup.
Fix: proper get_salt and set_salt.
Fix: proper get_salt, set_salt, valid and cmp_one.
Create an OpenCL sha256crypt for AMD hardware.
OpenCL kernels (cryptsha256) ready.
Fix: salt usage.
Fix: computation of GWS and LWS.
Fix: code clean-up.
Fix: detection of no_byte_addressable. Fix: new cryptsha512
working on CPU.
Fix: new cryptsha512 working on AMD.
Fix: code clean-up.
Include a referente to sha256crypt-opencl on DOC.
Fix: typos i made on kernel names.
Fix: new cryptsha512 working on NVIDIA.
Fix: some code clean-up.
Fix: use static when it makes sense.
Fix: remove commented code.
Fix: code clean-up.
Improvement: create a new raw sha512-ng.
Fix: unnecessary data conversion.
Fix: better (more correct) usage of John API.
Fix: get_hash error detected by TS.
Fix: code clean-up.
Use the fast approach to test on Jumbo.
Fix: code clean-up.
Applied: All known changes from JimF, along with unification of
differences between core-jumbo-magjumbo-bleeding
New control to PLAINTEXT_LENGTH. Check if magnum agrees.
Apply magnum technique of DEBUG usage to add tests.
Change type of large constants.
Version that uses __local memory. Keep on git to test different
hardware when possible.
Transfer less data between host and device. 5% faster.
Fix a compiler warning on 32-bits Set Plaintext size to 32.
Remove a develoment/debug function call from source code.
Code cleanup.
Use mem_alloc instead of malloc.
New validation of max global memory allocation size (very usefull to
fast formats).
Fix output format string.
Fix a typo.
Use dinamic allocation for the build log buffer.
Better control of auto-setting process.
Try on raw SHA-512 magnun's MaxRunTime setup.
As magnum said on list, this check is not necessary anymore (on JtR).
Improvement: 7% performance gain.
Avoid unnecessary data moving.
Code clean-up.
Revert name used.
Create a new version that uses __local memory. Good (at least) in
7970.
Remove copied code from everywhere. A new .h file has all necessary
code.
Fix format identification message.
Fix no_byte_addressable code.
Apply the same fix of no_byte_addressable to raw_sha512 and
sha256crypt.
Rename all those names to eg. DEV_UNKNOWN, DEV_NVIDIA and so on.
Go on and rename all those names to eg. DEV_UNKNOWN, DEV_NVIDIA and so
on.
Fix an architecture misdetection.
Use magnun's MaxRunTime setup (256 and 512 SHA crypt). LWS command
line proper detection (Fix). Change name: from pFmt to self.
Mitigate GPU hogging with much shorter kernel durations (AMD GPU
only). Better desktop response during cracking. Some
algorithm clean-up (on AMD at least 20% performance improvement).
Better defaults.
Tried to implement a salt_hash function. It is failing despite the
hash calculus is working.
Remove some debug code.
Fix a problem with salt detection.
Fix: do not show an error message twice.
Split kernel execution (for NVIDIA).
Strategy change on AMD GPU.
Fixed a logical error.
Fix a typo.
Remove unused code.
Split kernel execution.
New names pattern applied.
Set plaintext size to 32.
Create a version of sha256crypt that uses __local memory.
Faster memory transfers.
Revert sha256crypt plaintext size to 24. With 32 the performance
impact on gcn is not acceptable.
Fix error reported on OSX.
Mute a compiler warning on OSX.
Fix memory leak, as reported by magnum.
Use firstEvent and lastEvent. Nothing bad happened, but less than
optimal values were selected some times.
Revert. Saw zero benefits.
Few ideas on LOCAL approach.
Fix to allow this format to be used on bleeding.
New OpenCL raw-sha256 format created.
Missing files to raw-sha256 format.
Fix: size of OpenCL buffer.
Some code clean up.
Some fixes on raw sha256.
Small optimizations.
Update ALGORITHM_NAME to the text pattern used in jumbo-7.
Fix a bug in GPU.
Clean up on raw-sha256 code.
Revert "Few ideas on LOCAL approach".
On fast hashes: implement clear_keys() for faster buffer cleaning.
Add missing stuff for FMT_MAIN_VERSION > 9
Revert "On fast hashes: implement clear_keys() for faster buffer
cleaning.". Hurts performance.
Use defines instead of numbers.
Add null-hash test vectors to "my" unsalted formats.
Links for wiki page on new formats.
Fix align as reported by magnum.
Mute a warning.
Improvement on LWS/GWS management. Fix a typo.
Set (min/max) KEYS_PER_CRYPT=1 and adjust to the real value on init().
New format xsha512-ng-opencl: a little bit faster than stock code.
On bull: Benchmarking: Mac OS X 10.7+ salted SHA-512 (pwlen <
32) [OpenCL (inefficient, development use mostly)]... DONE Many
salts: 67346K c/s real, 67346K c/s virtual Only one salt:
23130K c/s real, 26214K c/s virtual
Include a new observation about credits.
New wiki page created.
Remove duplicated code.
On raw-sha256: unroll 'block' and use defines when possible.
More code clean-up.
Fix a bug on NVIDIA.
Partial revert on raw-sha256. More code clean-up.
raw-sha512-ng: Fix a format struct problem for v10.
Fix a bug inside get_salt.
Fix a bug inside get_salt (not OpenCL files) .
Put Johnny information on README file.
Inside shared find_best_workgroup avoid creating new queues.
Revert "Fix a typo."
Shared code to allow to build and use binary OpenCL kernels.
Move all OpenCL files to a new folder.
Missed rar on 6b66504.
Quick-response to "events" (like key presses) for my loop-kernel
OpenCL formats. Adjust min_keys_per_crypt to local_work_size.
Adjust global worksize to the count argument inside crypt_all().
Rewrite find_best_gws to avoid any warning using sprofile.
Rewrite of auto-tuning (gws_test) code. Auto-tuning by doing
less iterations. Show (if required) execution times and detais:
- print: pass xfer: 10.01 ms, crypt: 3.46 ms, result xfer: 1.84
ms Clean code. Create new files to handle duplicated code. -
See magnum work at commit fff72afafcb0a502163e57d97491c6b57c7f8cc2.
In auto-tuning, adjust max run time for GPU and CPU accordingly.
sha256crypt, sha256crypt: use cached-binary OpenCL kernels.
Remove temp (__local) buffer on prepare (it produces no benefits).
Quick-response to "events" (like key presses) for "my" loop-kernel
OpenCL formats. Adjust min_keys_per_crypt to local_work_size.
Adjust global worksize to the count argument inside crypt_all().
Rewrite find_best_gws to avoid any warning using sprofile.
Rewrite of auto-tuning (gws_test) code. Auto-tuning by doing
less iterations. . See magnum work at commit fff72af. Show
(if required) execution times and detais: . print something like
this: pass xfer: 10.01 ms, crypt: 3.46 ms, result xfer: 1.84 ms
Clean code. Create new files to handle duplicated code. In
auto-tuning, adjust max run time for GPU and CPU accordingly.
sha256crypt, sha512crypt: use cached-binary OpenCL kernels.
Remove temp (__local) buffer on prepare (it produces no benefits).
Remove sha512crypt version that uses __local memory. No benefit using
it.
Adjust min_keys_per_crypt to local_work_size. Adjust global
worksize to the count argument inside crypt_all(). Treat the
new_keys condition. Include a new salt_hash fucntion. Fix
the bug reported on wiki JtR-valid-bugs. Proper done
(atexit(release_all)) method. Can handle md5crypt_MaxDuration in
config file.
Adjust min_keys_per_crypt to local_work_size. Adjust global
worksize to the count argument inside crypt_all(). Proper done
(atexit(release_all)) method. Can handle MaxDuration in config
file.
Include LWS/GWS information inside john.conf for formats that miss
that.
Fix: use the decreased global work size in cmp_all().
Use binary kernels on 'my' fast hashes too.
Fix: missing colon on DEBUG target.
Include LWS/GWS information for raw-sha256 inside john.conf.
More tests for DEBUG target.
Fix a bug inside get_binary.
50% performance gain on GCN for sha512crypt. Recommended for (at
least) 12.08 Catalyst driver. From: Local work size (LWS)
64, global work size (GWS) 16384 Benchmarking: sha512crypt
(rounds=5000) [OpenCL]... DONE Raw: 8316 c/s real, 409600
c/s virtual
Small tweaks on default configuration. Local work size (LWS) 64,
global work size (GWS) 32768 Benchmarking: sha512crypt
(rounds=5000) [OpenCL]... DONE Raw: 13159 c/s real, 819200
c/s virtual
Fix: for md5crypt on CPU.
Fix: use a safer check to find gws.
Fix a bug using sha256crypt on OSX CPU.
Small tweaks on sha512crypt OpenCL file.
Include uint64_t definition (stdint.h) in common-opencl.h.
Add FMT_SPLIT_UNIFIES_CASE to a bunch of SHA-2 formats.
Mute a few warnings when using test=0 on OSX.
Mute some warnings.

JimF (64):
Add our own SHA-2, enabling 19 new formats for users stuck with
OpenSSL 0.9.7. OpenSSL or not, boost sha256crypt with 10-20%.
Fix radmin format under Windows.
Alignment fixes SHA2 on Sparc
Handle CommonCrypt in our SHA-2
CommonCrypto fix in sha256crypt
JtR-bleed-align-macro-fix-1.diff
JtR-Bleed-make-generic-unaligned.diff
JtR-New-Dynamic-35-36-SHA-types.diff
ike-crack.h: use our local stdint.h instead of global
JtR-MAG-UNSTABLE-ONLY-Dynamic-sha256-addition.diff
Updated dynamic adding sha2 formats, and GOST, also made a thin format
formspring to do regen-salts type 6
Dynamic name change (for display), and adding config option and
command line switch to cause dynamic to always use raw hashes
Missed this file in the dynamic raw-hashes-allways-valid patch
john-1.7.9.5-c6-sunmd5-v1.patch
New, SSE2 capable sunmd5
sunmd5 fixed for mmx, sunmd5 added to pass_gen.pl
Updated sunmd5 and added a couple of optimizations. Added finer
granularity memory dumping to memory.c/.h
many changes I had staged. many were performance changes, some were
porting changes. dynamic is now also updated. Also the POC wow_srp
format added
Added OMP, removed a few compile warnings, depending upon compile
conditions, oSSL/GMP builds
GMP fix for 64 bit
changes to dynamic, adding new methods to give more flexability to
larger formats, multiple output types, upon rehashing. Also updated
documentation
Portability issues fixed
stack overwrite bug fixed
added JtR tool to_dyna to the build. This tool converts hash:salt or
salt:hash into proper dyna format, converting salt to $HEX$ if
needed
Dynamic fixes, from Jim.
Here is a patch that removes any plug dependencies.
1. in formats.c, the 2nd loop in the 'max length' check, should start
at 0, not at 1.
Bug fixes for mask mode.
Some changes to raw2dyna
Mask mode bugfix
Fix generic build (dynamic_generic_fix.diff)
Bug fixes for dynamic union crypt_key
SSE2 support for WPA-PSK. The code was taken and modified from my code
in mscash2. They are pretty different, due to how the main
format logic is (mscash2 split out just the inner function, this
one did not break out the crypt). But they do about the same
things. Also, in SSE2, mscash2 BE's the binary data. I do not
do that here, since the wpapsk.h is common code to
CPU/CUDA/OpenCL, and that is where that functionality is. So, there
simply is a call to alter_endianity_to_BE when the results are
stored at the end of crypt. There really should be no speed
impact, due to this fact.
Here are a couple more fixes
Implement ldr_sort_salts(), currently hard-coded to only apply to
wpapsk formats. In the future we will probably want a format
struct entry for format->methods.salt_compare().
Some porting items. The typecasts are due to void* having an undefined
size (on some compilerrs). error C2036: 'void *' : unknown
size
Dynamic: Remove many more of the typecasts, putting them into anon
unions.
listconf.c: Ensure we have a proper version of NSS lib before calling.
bench.c: Get around a crash in VC (and mingw), in -test=0 mode.
These only use clock(), so if the bench is fast, there are 0 clocks
used. I simply put a 1 in the time slot, if it is 0.
mingw port issues
More mingw port issues
Another version check for NSPR in listconf.c
Some warning pasifications
pass_gen.pl: Support creating WPA-PSK test hashes!
dyna_17_BE.patch from Jim
basename portability 'fix'.
Portablity fixes for VC.
fix wpapcap2john warnings
Dynamic bugfix, spotted by new warning in gcc 4.8.0.
Fixed mem leaks, found by mshell.
Minor fixes.
JtR-jumbo-dynamic_1014_fix_non_sse.patch
JtR-Dynamic_validation_raw_hashes.patch
JtR-Dynamic_validation_raw_hashes-2.patch
Re-apply JtR-Dynamic_validation_raw_hashes-2.patch but with some
missing stuff added.
JtR_Bleeding_Dynamic_Salt2_UserID_Salt_Bug.patch
JtR_Bleeding_Dynamic_MEM_ALLOC_SIZE.patch
JtR_unstable_Dynamic_bare_hash_fix.patch
JtR-SunMD5-SSE2-scale.patch
Disable OMP for MMX in wpapsk format
Dyna21-crash.patch
dynamic-valid.patch
JtR-Unstable-crash-fix-dyna_21.patch
JtR-Unstable-Dyna-big-hash-fixes.patch

Frank Dittrich (57):


Make --list= a little bit more user friendly
Bash completion: add support for --list=format-methods[:WHICH]
Silence -Wpointer-sign warnings in hmacSHA*_fmt_plug.c, take 2
Add --help option to john (prints usage summary)
Define new [List.External:Repeats_*] sections
New external mode variable "maxlen"
Rename external mode variable maxlen to cipher_limit
Rewrite Filter_ROT13 external mode to allow easier adjustment
Dummy format: warn about unsupported password length
Define new external modes to generate sequences of characters
Fix compiler warnings in dummy.c
Make use of cipher_limit in some more external formats
Fix warning in dummy.c, this time for real
Bash completion: add trailing space for --nolog etc.
bash completion fix
Fix bash completion for hidden options
Fix bash completion for --subformat
Fix bash completion for --option[=value]
Rewrite bash completion for automatic handling of new john options
Refer to "doc/OPTIONS" for help regarding --fix-state-delay=N
Fix ./john --list=parameters:SECTION (with .include [other])
Bash completion: support (src)$ cd ../run; ./john -[tab]
sunmd5_fmt_plug.c: Fix -Wunused-variable and -Wunused-but-set-variable
for generic builds (on a 32bit Linux system)
Adjust EPI format documentation
Rename doc/EPi.patch.README to doc/README.format-epi Reason: there
is no longer a separate patch
Fix broken links in source code
SAP CODVN B and F(G): be more restrictive in valid()
Fix "Compiler error in ./john.conf at line 612: Unknown identifier"
which occurred when using $ ./john --list=ext-filters-only
Separate function john_list_build_info
Add GMP library version to --list=build-info
Add even more version info to --list=build-info
Remove some obsolete FIXME comments from bash completion script
Fix a few typos in listconf.c comments
Fix typos in calc_stat.c
Fix more spelling errors
Fix spelling: then -> than
Fix typo in doc/README-OPENCL
Fixed some more typos
Add binary_hash_[56] and get_hash_[56] to 16 formats
mozilla_des.c and .h: #if 0 unused functions
sap2john.pl: improve coding style (tabs vs. spaces)
doc/OPTIONS: remove the only [tab] which is not part of a heading
Remove dead code from mozilla_fmt.c - used #ifdef DEBUF
Fix grammar
Adjust benchmark-unify to jumbo-8 format name changes
Benchmark-unify: map KRB5 format names
Fix a bug when using --stdout, introduced in e14ac00.
benchmark-unify: adjust format name mappings Add "Mozilla SHA-1
3DES" mapping Adjust "pdf" mapping
remove unused variable in putty_fmt_plug.c, valid()
Fix bash completion for formats if --list=hidden-option has
--format=CLASS
Bash completion: Workaround for --format=CLASS parsing
Fix bash completion for formats if --list=hidden-option has
--format=CLASS
Bash completion: Workaround for --format=CLASS parsing
dynamic_THIN_FORMAT_LINK: use PASSWORD_HASH_SIZES ... to make sure
all the binary_hash[i] and get_hash[i] methods get passed to the
thin formats.
benchmark-unify: format name mappings sorted (sort --ignore-case)
benchmark-unify: add/change some mappings
.mailmap: make sure git maps my commits to my new email address

Sayantan Datta (25):


common-opencl.c:Added build from binary
mscash2-opencl:bitselect optimization
New opencl format:DES-BS
DES-opencl:various optimizations
des-opencl:use local memory
des-opencl:Performance improvement
des-opencl:performance improvement, broken ATI 4xxx
des-opencl:fixed ATI 4xxx
opencl-des: nv performance improvement
des-opencl:use bitselect for AMD gpus
bf-opencl:added cpu optimized kernel
mscash2-opencl: split kernel
des-opencl:runtime kernel preprocessing
des-opencl:slightly lowered memory usage
des-opencl: minor kernel improvements
mscash2-opencl:auto detect gws,apple cpu bug
des-opencl:fixed detection of matching salt
des-opencl:hardcoded kernel
des-opencl:added fall back kernels
opencl-mscash2: bug fix
mscash2-opencl:bug fixes
opencl-mscash2:bug-fixes
mscash2-opencl honours LWS and GWS env variables, des-opencl and
bf-opencl honours GWS environment variables, added functions to
detect optimal GWS for bf-opencl and des-opencl
bcrypt-opencl: fixed AMD 7970 ASIC hang
bf-opencl:fixed 7970 ASIC hang

Lukas Odzioba (22):


Make Truecrypt formats non-plugin and only build for OpenSSL >= 1.0.0
Fixed valid in pwsafe formats
Fixed valid() in pwsafe formats
removed rm/remove
Replace malloc() with mem_alloc() in many places.
I did some minor changes mostly in opencl/cuda formats. I also
added mem_calloc(size) to memory.c/h, not a big deal but helps
clean tables for candidates with just one line of code.
Changed names of fmt_main structs listed below, to be consistent with
naming convention we use most often: -name starts with
"fmt_" prefix, or "fmt_opencl", "fmt_cuda" for gpu formats.
More fmt_main name convention fixes
Rename CL_VERSION_1_0 macro to HAVE_OPENCL to clean the code a bit.
Some formats didn't respect -dev option given by command line.
gpg2john: Handle multiple keys per in file, as well as multiple
infiles.
Add OpenCL 1.2 error codes to our debug routines.
Include OpenCL version information into --list=build-info
CUDA versions in --list=build-info
(re-)enable agilekeychain format
gpg2john fixes
fix vncpcap2john exception handling
Basename helper function in misc.c, also capable of stripping
extensions.
gpg2john GECOS support
GPG valid() fixes.
SIP valid() fix.
SIP valid() fix.

ShaneQful (18):
Added author comment at top of file & chmodded it to be executable
Added prepare method which checks for the old style pdf hashes and
converts them to the new style pdf hashes if necessary
Cleaned up comments and added self to credits
Fixed bug Dhiru found in pdf2john.py. There was an issue with one of
my regexs so that it didn't cover all situations
Remove FIXME(s) (Don't scare Frank and magnum anymore)
Removed assert which caused bugs in some documents generated with word
for the mac
Fixed spelling error
Update CREDITS-jumbo
Added License to pdf2john
Added Python 3 support for pdf2john
Changed is_meta_data_encrypted to return a boolean rather than a
string
Changed get_encrypted_object_id to get_object_id in order to get any
object id from the trailer
Impemented parse meta method, just get values methods left
Fix for checking meta data encrypted in python 3.2
pdf2john now gets the title and year created from xmp metadata
pdf2john now gets all relevant metadata when metadata left unencrypted
Fixed bug in pdf2john where wrong objects could have been used
Small fix to get_xmp_values method in pdf to john

Alexander Cherepanov (16):


sunmd5 coinflip speedup
Just a small patch to fix strncmp in NETLM format.
WPAPSK bugfix.
Some typos.
Typo in dynamic.conf
Replace unicode em-dash in putty files.
Replace non-ascii char by hex code in pass_gen.pl.
Replace several non-ascii copyright signs by "(c)" string.
Fix typos in README.bash-completion.
Fix some typos in README-OPENCL.
Add some band-aid to valid() in sxc format.
Improve robustness of valid() in pkzip format.
Make valid() in sunmd5 format robust.
Fix a crash in dynamic with an overlong salt.
undrop: limit the length of password. (Fixes a crash.)
krb5: ensure that username and realm are non-empty. (Fixes SIGFPE.)

Solar (11):
hccap2john fixes
RAdmin, SIP speedup
sunmd5: minor fixes
sunmd5: Get rid of modulo
Sunmd5: Eliminate some more uses of sizeof(string). Also replace one
use of MAX_KEYS_PER_CRYPT with count - should help with single
crack mode.
Merge Solar's Jumbo-7 changes selectively.
Merge Solar's john-1.7.9.6-selftest-1.diff. This was meant to be
committed to core -> bleeding-jumbo and we should have it in
1.8-unstable-jumbo by now but progress is so slow I (magnum)
lost faith. Original comments follow:
PoC optimization for NTLMv1. Maintain a table for the third DES block.
Try to speedup cmp_all() by use of a bitmap. This only makes sense
when cmp_all() is called multiple times per crypt_all()'s actual
processing - that is, when cracking two or more C/R pairs at
once. There's a check for that in the code. Moreover, use of
the bitmap is automatically disabled when the C/R pair count
reduces to 1.
Licensing files
Add 'dokuwiki' external mode from
http://www.openwall.com/lists/john-users/2013/06/08/14

Narendra Kangralkar (10):


Make ciphertext parsing more robust in nk format
Make ciphertext parsing more robust in episerver format
Make ciphertext parsing more robust in IKE format
Make ciphertext parsing more robust in vnc format
Make ciphertext parsing more robust in django format
Make ciphertext parsing more robust in pbkdf2-hmac-sha512 format
Make ciphertext parsing more robust in office format
Make ciphertext parsing more robust in oldoffice format
Make ciphertext parsing more robust in zip format
Add support for cracking KDE KWallet files

Vlatko Kosturjak (7):


Fix: handle error handling better. Helps in debugging OpenCL errors.
For example, was getting OpenCL error
(CL_INVALID_PROGRAM_EXECUTABLE) instead of OpenCL error
(CL_INVALID_BUILD_OPTIONS) because program did not handle
previous error and continued to run even if build did not
succeed.
Fix: If Apple is in question, turn off build options as Apple OpenCL
does not like it. At least on Mac Book Pros having ATI Radeon HD
6750M.
Print to stdout without message for consistency
expose markov stats file as command line option
Initial import of ZSH completion for john
make targets for zsh completion
"polishing" changes

bwall (6):
Initial pwsafe optimization
Removed OpenSSL tag from pwsafe_fmt_plug
Updated copyright
Optimized the iterated SHA256 in pwsafe-cuda
Added copyright information
Applied optimizations to pwsafe-opencl and cleaned up copyrights

rofl0r (6):
timer.h: remove unneeded include (sys/timeb.h)
factor out struct tcphdr
Makefile: allow JOHN_LDFLAGS
tcphdr.h: remove unneeded typedef
tcphdr.h: special-case endian.h for mac/bsd
timer.h: re-add sys/timeb.h to windows section

Deepika Dutta (3):


Add bit-sliced MSCHAPv2 implementation by Deepika. This is added as a
new separate format: We now have mschapv2, mschapv2-bs and
mschapv2-naive.
Add MMX version of DES_bs_crypt_plain().
netntlm bitsliced conversion

Myrice (3):
Bug fixed: xsha512-cuda long password bug
rawsha512/xsha512-cuda change thread/block number for better
performance
Add mask mode

Michael Samuel (2):


Add External:KDEPaste. This takes advantage of CVE-2013-2120 to find
seeds that KDE Paste applet uses to generate passwords.
Add license notice to KDEPaste external mode.

Costin Enache (2):


Fix for clock err in timers.
Silly bug in sunmd5 busted the rounds parsing.

Julien Perrot (2):


add support for sips uri (with explicit port number)
adds support for sips uri (with explicit port number) when converting
input from sipdump

Tavis Ormandy (2):


Avoid useless roti operation for R75, minor syntax cleanup.
manually unroll the cmp_all loop a few times, as gcc refuses to do so.

bartavelle (Simon Marechal) (2):


sunmd5.hack.diff
Updated copyright information

Linus Lüssing (1):


MSCHAPv2: Add support for freeradius-wep-patch challenge/response
format

alexandru (1):
Default value for number of iterations

tomrittervg (1):
fix typo in memory allocation check code

Mat G (1):
New format: Fortigate (FortiOS)

Diogo Ramos (1):


fix opencl kernel build on macosx

Michael Ledford (1):


Adds support for multiple keys existing in an encrypted DMG. When
multiple keys are found it selects the first password key header.
Adds support for DMG sparseimage files. Previously the first chunk
selected could be empty. Now chunk number one is chosen for DMG
sparseimage files and a new heuristic is added to the DMG format
plugin to look for 'Apple'.

Camille Mougey (1):


New formats: KRB5-18 and KRB5-23
The following changes were made between 1.7.9-jumbo-6 and 1.7.9-jumbo-7:

magnum (109):
define REPORT_OPENCL_WARNINGS in bleeding after it was undef'ed in magnum-
jumbo
Version notice for magnum-jumbo
RAR: make self-test comments more clear about what is what
Fix for common_opencl_pbkdf2.c for Mac (uint -> unsigned int)
options.c format list: Workaround for silly Windows bug at column 80
Brainfart in magnum-jumbo version: it's supposed to be 1.7.9-jumbo-
6+unstable, not 1.7.9-jumbo-6+bleeding
Remove the "unreliable, will miss guesses" from rawsha512-opencl and -cuda
after myrice's fixes. They pass the Test Suite.
Fixes for raw-md4, raw-md5, nt2 and raw-sha1 when *not* using reduced binary
size (ie. for bleeding-jumbo)
Drop the "unreliable, will miss guesses" from xsha512-cuda. It now passes the
Test Suite.
opencl_bf_std.c: replace uint to unsigned int
Drop the "unreliable, will miss guesses" from xsha512-opencl. It passes the
Test Suite now.
Add a "Section [%s] not found" before outputting the catch-all --list=?
Merge fix
raw-md5-opencl: Report human readable errors
opencl_mscash2_fmt.c did not declare clear_keys static.
Fix mis-use of CL_DEVICE_MAX_WORK_GROUP_SIZE in a number of OpenCL formats.
Version change for Jumbo-7RC, and undefine REPORT_OPENCL_WARNINGS
Drop a bogus run/pfx2john from the tree
Fix two declaration-after-statements in MPI code Add run/pfx2john
to .gitignore
Fixes after last patch
Make clear_keys in dynamic_fmt.c static
testpara-native test target added
Allocate one more byte for opencl source. Weird errors seen when not.
Use common find_best_workgroup() for a number of formats, fixing various
problems. Alloc/free kernel source memory instead of mem_calloc_tiny(). Make
global_work_size global. Always print diagnostics to stderr.
Fix a (possible) problem introduced in the previous patch
Pick a better fallback for optimal_work_group
raw-md4-opencl added (very near a copy of raw-md5-opencl except kernel)
common find_best_workgroup(): Use proper GWS when calculating LWS
Revert the "shared find_best_workgroup" from opencl_xsha512_fmt.c - it had a
special loop for calulating 10 samples and made worse without it.
Fix for global global_work_size
common-opencl.c: Fix for Apple CPU + do a warm-up run
Fixes for shared find_best_workgroup(): formats must use profilingEvent. Use
a loop targeting half a second. Again, use the shared function for
opencl_xsha512_fmt
Fix LOTS of output in OpenCL formats so they go to stderr (lmgtfy)
Fix a compiler warning
Fix sha1-per-key calculation
opencl_cryptsha512: Errors to stderr, please.
Use Sayantan's bitselect in RAR kernel (unless nvidia)
Add keychain2john to .gitignore
declaration-after-statement in wpapsk.h
Unify case in hmac formats, and set the flag. Also, fix bugs in rawSHA-2
formats, which claimed they unify, but did not.
raw SHA2 formats: accept upper- or lowercase hashes
Fixes after Jim's patch (new-style format interface mixed in)
Ditch the last pFmt stuff (except in dynamic)
Add "LC_ALL = C" to Makefile, for better compatibility with some non-GNU
systems.
wordlist.c: fix segfault reported in http://www.openwall.com/lists/john-
users/2012/08/01/5
pkzip: Drop a now unused label, muting a compiler warning
Fix the self-test's clear_keys().
mscash formats: Warn when rejecting too long salts
rar_fmt: Move new CMIYC tests to the debug section so they don't skew
benchmarks
Update doc/BUGS and add "unreliable" to pwsafe-cuda
Fix pwsafe-cuda by limiting max length. Also move an endian-swap from
crypt_all() to get_salt() - and same fix for opencl format.
pwsafe-cuda: Bump PLAINTEXT_LENGTH to 32 again, this time with an array size
to fit.
bf-opencl and sha512crypt-opencl: use stderr for diag/error output.
pwsafe-opencl: merge fixes from -cuda version
bf-opencl: Workaround for AMD APP problems running this format on CPU. This
fix does not affect GPU at all.
sha1 OpenCL kernels: Fix compiler warnings (on OSX) and optimise a little
while at it.
Revert a buggy change to ldr_load_pot_line() in 1c637ba that lead to
segfaults. This may mean $HEX$ fixups for dynamic will be broken again, until fixed
some other way.
RAR: Drop the warning about device being CPU. I have seen OpenCL outperform a
CPU-only OMP build by 2.5x.
wordlist.c: We can't free the word buffer memory upon exit from
do_wordlist_crack() because some formats just copy the pointer in set_key() and the
final status line will call get_key(). Problem seen with oracle_fmt.
RAR: Add some early rejects. Huffman table check still TODO
OpenCL platform/device selection from john.conf was not working properly (it
was read too late)
RAR format: Use mem_alloc() and MEM_FREE().
RAR: Finally, quite effective early rejection! Verified with almost 70,000
test files, with no false rejects. And we are rejecting over 96% of the candidates
without resorting to a slow full check (which in turn may reject semi-early,
especially if it's a PPM block)
RAR: Correct benchmark output when running vectorized.
RAR: Smaller salt struct. Minor and benign bug fixed.
RAR bugfix. It's a wonder it worked as good as it did.
RAR debugging
Drop the "MaxOrder < 64" constraint - I have files with MaxOrder 165 that was
not cracked due to the limit. (-m4, -m5, -mct)
Change a bunch of ISO-8859-1 source files to UTF-8
Use LC_ALL=C for plugins' sed incovation in Makefile
Change all non-ascii copyright signs to (c) in source files.
RAR: Use mem_alloc_tiny() instead of mem_alloc()
Accidental spaces in Makefile replaced with TABs (it matters).
RAR: Memory leak fixed. It was introduced with early reject.
Update CREDITS-jumbo and CHANGES-jumbo
RAR: fix a compiler warning on 32-bit
RACF: Fixed a compiler warning and made format struct forward-compatible
VNC: Fixed a compiler warning and made format struct forward-compatible
memory.c: print some clues if alloc() fails. RAR: handle expected bogus alloc
sizes (bug introduced in 8f3e452)
RAR: User-settable max. duration (mitigating kernel exec. timeouts)
Simplify that last patch a little
Fixes for OSX's CUDA and OpenCL targets, and add macosx-x86-64-gpu.
Assorted OpenCL and CUDA fixes needed for OSX. - Always use "static" or
"inline" for non-kernel functions. - Avoid comparing integers of different signs. -
Change %Zd to %zd - Rename all local implementations of memcpy to _memcpy - change
"uint" to "uint32_t"
OpenCL: Do not add -cl-nv-verbose on OSX
MPI fix for loopback mode (cosmetical)
RAR: fixes from magnum-jumbo that should be in -fixes too
Makefile: Fix for linux-x86-sse2 target
OSX performance fixes
gcc 4.7 performance fix
EPIserver: Add proper Unicode support. A bunch of other formats: Unicode
fixes (no problems seen but better safe than sorry).
RAR: Make check_huffman() less greedy (I had a false assertion-fail, for an
invalid data stream)
RAR: Correct BINARY_SIZE (it should be zero!)
Raw-SHA1-ng: Set min_keys_per_crypt to 4 to avoid unnecessary performance hit
in Single mode.
Opportunistic copy of john.bash_completion to any (all) present directories
out of: /etc/bash_completion.d /usr/local/etc/bash_completion.d
/opt/local/etc/bash_completion.d
OpenCL auto-find GPU if no specific device requested. Also, an OSX OpenCL fix
of unknown importance.
OpenCL/CUDA: differentiate gpu_id -> ocl_gpu_id and cuda_gpu_id. This was a
necessity just waiting to happen.
A couple fixes for OSX. After this, ALL formats except some OpenCL ones
builds and works fine under OSX 10.8 - including with HAVE_NSS, HAVE_KRB5 and
HAVE_GMP. The separate make targets vncpcap2john and office2john are tested too and
works fine.
OpenCL tweaks depending on platform. Add a new function
get_platform_vendor_id().
GPU tweaks (cosmetically, if that)
Office 2007 leaked about 1 KB of memory per second
Office: Remove a no-op from DeriveKey() and protect us from segfault in
GeneratePasswordHashUsingSHA1() in case DeriveKey() returned NULL. Are there cases
we don't cover?
Common-opencl.c: It turns out strcasestr() is not standard, so cease and
desist.
pass_gen.pl: Print a notice if we stop due to --count limit.
The "arbitrary characters in rules, using \xnn" introduced by Jim in commit
ad56c30 did not work for preprocessor ranges. This is now fixed and tested.
Fix for wpapsk for big-endian, submitted by Sam Novak.
Drop radmin & pfx formats, and pfx2john. These will be in Jumbo-8.
Added a CHANGES-jumbo.git which is (almost) raw output from "git shortlog",
and placed (the changes part of) Solar's announcement of Jumbo-6 in CHANGES-jumbo
(mostly as a placeholder, it might need editing).
Update CREDITS-jumbo
hmac-sha1 bug fix: Certain optimisations did not take SHA_BUF_SIZ in account.
Very few builds pick the old SHA-1 implementation that uses 320 bytes instead of
the now normal 64 bytes but native OSX llvm now does, so triggered the bug.

JimF (25):
SKEY was lacking fmt_default_clear_keys in it's format struct
pass_gen.pl: Support for sha256crypt and sha512crypt
pass_gen.pl: add XSHA512
Dynamic format bug fixes post Jumbo-6, from bleeding
Fix radmin format under Windows.
GOST: Fixes for clang (bswap stuff)
Dynamic_Diff_Clear_Keys.diff
Fix for dynamic_1003
Jumbo-7RC-JimF-fixes.diff
JtR-New-Dynamic-35-36-SHA-types.diff
JtR-Dynamic-Algorithm-Changes-35-36-37-fixes.diff
Add dynamic_27/28 to pass_gen.pl
JtR-Dynamic-27-28-fix-non-mmx.diff
JtR-J7-RC-ONLY-Dynamic-changes-NO-sha256.diff
fixes to dynamic split, fake_salt static removal and gost_plug multiple init
allow
fix to dynamic-27/28
Bugfixes to strnzcpy() and strnzcpyn()
All known changes from JimF, along with unification of differences between
core-jumbo-magjumbo-bleeding
dynamic: $HEX$ fixes
Fixed dynamic valid, removing all HEX data prior to validation of hash line
dyna_1008 had to have a couple tests commented out (NULL bytes). epi server
improved. pkzip format, old code left in, just in case, but in a #if 0 block
added some new formats to pass_gen
parser functions that were not properly in code
Added mssql-2012 format
Portability change

Frank Dittrich (23):


Adjust LDFLAGS for clang targets
Make --list= a little bit more user friendly
Bash completion: add support for --list=format-methods[:WHICH]
New --list=help instead of --list=?
Add --list=help:help and improve output in case of wrong method name
Bash completion: add support for --list=option[:value]
pdf2john.c: compare pointer to NULL, not to 0
Make some more --list= commands work despite a broken config
Drop unneeded (and buggy) memsets from KRB4
Add --help option to john (prints usage summary)
Fix dynamic_1010 format name
Fix salt size of dynamic formats in --list=format-details
benchmark-unify: make sure dynamic_NNNN is followed by a colon
john.bash_completion: improve comments
Fix salt size of dynamic formats in --list=format-details
Add OpenSSL version info to --list=build-info
Add FMT_MAIN_VERSION, CHARSET_V and MAX_MKV_* to build-info
New --list=[sections|parameters=SECTION|list-data=SECTION]
Bash completion: convert upper case section names to lower case
calc_stat.c: more verbose stderr output for non-ascii characters
Add [List.External:Filter_Rot13]
Make bash completion work for OS X
Bash completion: work around differences between GNU sed and OS X sed

Claudio André (22):


Fix: use the same tests available in cryptsha512_fmt.c Improvement: create
another test vector.
Improvement: better set_salt and set_key out of bounds management.
Better constants and control on find_best_gws.
Improvement: renamed AMD OpenCL file.
raw-md5-opencl: Do not use byte addressed stores
Improvement: use shared find_best_workgroup. Fix: invalid use of
__OPENCL_VERSION__.
Fix: remove commented code.
Fix: proper usage of profilingEvent in host code.
Improvement: use shared find_best_workgroup. Fix: invalid use of
__OPENCL_VERSION__.
Fix: remove commented code.
Fix: proper usage of profilingEvent in host code.
Revert: usage of shared find_best_workgroup.
Fix: allow user to run the software (sha512crypt-opencl) without
cl_khr_byte_addressable_store
Fix: wrong if inside get_processor_family (OpenCL) code.
Improvement: create a default/safe kernel. Improvement: allow to select at
runtime the kernel to be executed.
Improvement: create a better way to select default global work size.
Improvement: code cleanup.
Improvement: better parsing of user input.
Improvement: change shared find_best_workgroup to allow cryptsha512-opencl
use it.
Improvement: change shared find_best_workgroup to allow cryptsha512-opencl
use it.
Better 'no_byte_addressable' detection.
Change Format-specific settings names (john.conf)

Dhiru Kholia (20):


Add support for cracking KeePass 2.x files.
Get rid of BOM.
Add support for cracking PKCS #12 files.
Use BIO_write instead of BIO_puts.
Add one more test vector in pfx format.
Fix OMP build.
Fix build.
Add support for cracking RAdmin v2.x hashes.
Add a fast test vector in pfx format.
Integrate pfx2john with john.
Remove my hacks from pwsafe format.
Complete Office format documentation.
Add documentation for pwsafe format.
alignment fix in radmin format.
BONUS: pwsafe format also cracks Password Gorilla databases.
Fix license in MD5 OpenCL kernel.
Update 1.7.9-jumbo-6-fixes
Update 1.7.9-jumbo-6-fixes
Fix build.
Drop "inline" from rar malloc stuff. It was probably done wrong.

Solar (9):
hccap2john fixes
RAdmin, SIP speedup
Optimized mscash2-opencl
Use "unsigned short" rather than simple "short" for single crack mode's
buffered key offsets.
We use "short" for buffered key indices and "unsigned short" for buffered key
offsets - make sure these don't overflow.
john-sha1-r3-bitselect.diff
wordlist.c truncation bugfix (from contest edition)
pwsafe-cuda: Bugfix (w[14] init) and optimisations
Final Jumbo-7 changes.

Lukas Odzioba (5):


Fix a multitude of declaration-after-statement warnings.
cudasha256speedpatchv3.diff
wpapsk-valid_fix.diff
Fixes for CUDA mscash formats.
opencl_cryptsha512_fmt.c: Change type of large constants
Myrice (4):
Bug fixed: xsha512 and raw-sha512 opencl/cuda IRL
Bug fixed: xsha512-cuda long password bug
xsha512-cuda: low min_keys_per_crypt and dynamic block number
Fixed xsha512-opencl, raw-sha512-opencl/cuda long time run. Extend password
length to 20 for these formats

Sayantan Datta (4):


mscash2-opencl:bitselect optimization
mscash2-opencl: automated bitselect selection
bf-opencl:simpler kernel code
mscash2-opencl:code cleanup

Knug Carl Gustf (2):


Speed up RACF encryption with a pre-computed lookup table
Speed up VNC encryption by pre-computing DES_set_odd_parity()

Vlatko Kosturjak (2):


Fix: handle error handling better. Helps in debugging OpenCL errors. For
example, was getting OpenCL error (CL_INVALID_PROGRAM_EXECUTABLE) instead of OpenCL
error (CL_INVALID_BUILD_OPTIONS) because program did not handle previous error and
continued to run even if build did not succeed.
Fix: If Apple is in question, turn off build options as Apple OpenCL does not
like it. At least on Mac Book Pros having ATI Radeon HD 6750M.

Tavis Ormandy (2):


test conservative storage of binary.
try redundant binary format.

Pavel Semjanov (1):


pkzip: Bugfix for check_inflate_CODE1()

Elijah [W&P] (1):


Fix CUDA targets for (future) Windows builds.

Erik Winkler (1):


macosx-x86-64-cuda build target added

The following changes were made between 1.7.9-jumbo-5 and 1.7.9-jumbo-6:

magnum (334):
This patch reverts part of the NT format to using an incorrect and no longer
needed length check. That beats me, but it will do until the reason is figured out.
Changes Makefile test targets for Test Suite 1.10
Correct truncation for NT format. This time with no performance loss
External filter now truncates at format's max length. Turn off wordlist
memory buffer if an external filter is used (a modification would trash the buffer
if a word got longer)
Reduced verbosity for normal test targets and added verbose ones
Replace length checks in nt2 too. Strangely enough it is faster with them.
XSHA intrinsics. Does not support OMP.
XSHA: added "option" to revert to OpenSSL for OMP builds. Also fixes 32-bit
MMX builds.
XSHA: Added support for OMP with intrinsics
pass_gen.pl added to run/ directory. This has only been available in separate
patches (like the test suite creation scripts) until now, and that version was not
up to date. This is a gem for testing stuff.
XSHA: More optimised salt handling, better OMP scaling
mysqlSHA1 32-bit set_key() for SSE2
Bug fixes to lotus5 (OMP builds) and both mssql formats (MMX builds)
mysql-sha1 set_key tweaks
Salted-sha1: performance tweaks
Raw-MD5-unicode made thick again, using much faster code (2x dynamic)
raw-md5u final fixes (all linux builds pass test suite)
MD5_std vs intrinsics / arch.h PARA fixes. Never disable SSE for MD5, revert
to 4x instead.
mssql05 hash functions size 5 & 6
Oracle11: Added intrinsics
Oracle11 optimisations
drop cmpt_cp.pl and mkdumb16.pl (will be placed in the separate patch)
corrected a typo in the PARA gcc version tests
Adapt trip_fmt to Jumbo
Added MMX/SSE/intrinsics to sapB as well as lots of optimisation.
Fixed bug in unicode.c where specifically giving --enc=raw did not work as
expected
sapB: Various fixes. Max salt length 12 (changed self-test hash). Changed
cur_salt to struct pointer. Non-SSE builds fixes. Replace 8-bit characters with
'^'.
sapG: Added MMX/SSE/intrinsics. Decreased salt length to 36 (12 x UTF-8)
(changed self-test hash).
sapB and sapG: re-worked valid() for variable salt length. We still support
the old format (padded with spaces to 40 characters) but also non-padded.
make testpara target, for determining best SSE_PARA values
hmac-MD5 optimisations. 32-bit set_key().
RawSHA1: Optimised set_key() for some 17% speedup.
PARA tweaks from Solar's tests
testpara: decrease threshold for accepting a higher value from 5% to 1%.
sapB bugfix for 8-bit salts
sapG minor fix in get_salt() (only affected over-long salts)
sap_prepare.pl renamed to sap2john.pl and changed not to pad salt
sapB: Various bugfixes. Use enc_strupper() for proper uc of UTF-8, but init
the Unicode system in a way so it does not uppercase double-s
sapG: Various bugfixes. New cleaning mechanism. Seems to work fine now.
Intermediate key will never be longer than 192 bytes, decreased max number of limbs
to three. Dropped the internal UTF-8 conversion. It was never appropriate. sapG now
behaves like any other 8-bit format. If you want UTF-8, feed UTF-8.
sapG: Optimisations, 30% boost (now 2x compared to Jumbo-5)
HDAA: OMP support
sapG Bugfixes. Insufficient key cleaning in rare cases plus a really hideous
bug in "magic array" enumeration.
sapB: key cleaning bugfix. This was a mean one. Weird algo.
HDAA: get rid of a compiler warning
sapB & sapG minor optimisations
sapB & sapG: trim trailing spaces from (truncated) plaintext. Raise sapG
plaintext length (for UTF-8 encodings of long passwords) Warn if --encoding=utf8 is
used/not used depending on format: these formats are well defined in that aspect.
DragonFly BSD crypt-SHA2 formats added. Should work for 32-bit "versions" of
the bugs in them.
OMP support for raw-sha2 and DragonFly sha2 formats
DragonFly, cosmetic
Crypt-SHA2 formats using OpenSSL and with OMP support
Copyright and license statements overhaul
Fixes in a number of formats after failing new self-tests. A few of them were
probably real bugs.
Revert the not strictly needed fixes from last commit. Add a couple other
fixes.
Deprecated raw-md5 thin (moved to unused) in favour of thick version
IPB2: fix in binary(), it was reading twice the size of ciphertext and
probably overwriting something.
Change #include "omp.h" to #include <omp.h> in a number of formats.
SHA-crypt-256/512: Change benchmark to only output raw figure since there is
no difference between one/many salts. Also output "rounds=5000".
Drop x86-ssei.h in favor of x86-sse.h, add tests that disable intrinsics for
gcc older than 3.4.6 (the oldest we know work at all) and fallback to asm. This
means the sse2/sse2i targets now work similar to 64/64i for newer versions of gcc,
that is, sse2i just means "precompiled intrinsics".
MSCHAPv2 salt() alignment
DragonFly SHA formats: Add 64-bit versions (in same format files: dual
structs)
loader.c: fix for --user=<uid> when loading pwdump files
bugfix for previous patch
loader.c: restore the defined-out block for DES bare hashes with whitespace
salt.
DragonFly formats: cosmetics
Make all sse2i targets use x86-sse.h. Add new test target linux-x86-64-32-
sse2asm.
sapG fix for long candidates (over 64 octets)
Jim's new SHA-1 intrinsics. Uses 16x4 buffer instead of 80x4. Improved "make
testpara32" to compare asm figures too. Updated SHA1_SSE_PARA for 16x4 code. New
pre-compiled intrinsics.
Dragonfly formats: Type-cast void pointer arithmetic
Adds --max-run-time=N option, for graceful exit after N seconds of cracking.
Makes --max-run-time disregard init & loading times
Correct a bug in the "double10" external mode
pass_gen.pl: Show usage blob when no options given
pass_gen.pl: Add salted sha-1 (of any length up to 16) and fix bugs in base64
encoding
Salted SHA-1: Support any salt size
Change MPI defaults to be more stable (no MPI_Barrier nor MPI_Abort)
sapG: add const for safety/optimisations
More randomness for HDAA in pass_gen.pl (lengths etc)
md5-mmx.S: new interface needed for multi-limb (>55 bytes) crypts (for HDAA)
HDAA intrinsics, 3x original speed
Wordlist.c hack for reading candidates from a pot file: 1. if --wordlist
given without a name, use default pot file 2. if wordlist name (after 1) ends
in .pot, parse it as such
Added hmac-sha1 and hmac-sha256 formats. Added wikipedia self-tests to sha-
md5
Added hmac-sha224/384/512 (and made hmac-sha256 a non-plug like these)
Changed benchmark type to raw for all HMAC formats
SAP B format: Optimisations
sapG: made "theMagicArray" static const. This alone made a 4% boost
sapB regression fix
Wordlist mode: Fix dupe suppression for non-buffered mode. Make the pot file
parsing mode aware of any custom field separator.
Replace the muting of "#!comment" lines when in memory buffer mode
sapB bugfix for generic builds
wordlist.c MPI fix for dupe suppression in non-buffered mode. We must
incrementent the line counter when skipping, because the different nodes will have
different views of what is a dupe.
sse2i_winfix.pl modified so it can handle any .S file
Copyright/license statements
More copyright/license blurbs
IPB2: OMP & intrinsics support, over 3x speed
IBP2: 32-bit mmx/sse fixes
hmacSHA1: Support key lengths >64
All hmac formats: Support key lengths >64
All hmac-SHA formats: fix for salt containing '#' and self-tests for keys
larger than pad size (n/a for sha-384/512 as of now due to lack of support from
John itself for lengths gt 125)
New format: Drupal7 (non-plug, OpenSSL >= 0.9.8, OMP)
Copyright/license stuff
Add missing opencl-mysql declarations to john.c
Windows fixes for new sse2/sse2i scheme
Change Unicode tables to const - might help the optimiser
Unified make target linux-x86-64-gpu including both CUDA and OpenCL. Also
adds intrinsics to the 32-bit CUDA and OpenCL targets.
change -lcrypto -lssl to -lssl -lcrypto (helps static linking)
options.c: Sort formats list
New para-best.pl for "make testpara"
options.c: enable format name printing all the way to 80th column
options.c fixed erroneus output of \0
NT-OpenCL: Add FMT_UNICODE flag
loader.c: Do read gecos and homedir from pwdump-style input.
http://www.openwall.com/lists/john-users/2012/02/22/1
Makefile typo (cosmetic)
Manual sync with Samuele's tree's b890a51
Support specifying OpenCL platform on command line
Add a trivial platform/device lister (to unused/ for now). The plan is to
make JtR capable of outputting this list.
Mute compilation log if it's no more than a line-feed
Correct BENCHMARK_LENGTH for raw-sha1-opencl
Rename sha-crypt-256/512 to cryptsha256/512
OpenCL: rename -gpu to -device and support -platform=LIST (or -device=LIST)
Drop the separate listocldev.c
Auto memory size suffixes when listing devices
rar_fmt: 15% speedup if ARCH_LITTLE_ENDIAN && ARCH_ALLOWS_UNALIGNED. This
version can successfully crack non-hp archives with method "store" ("m0b") without
spawning unrar. Also fixed a bad memory leak. rar2john: Pick best candidate from
RAR file. Prefer stored files over compressed, and prefer smaller files over
larger.
Fix for gpu builds imlicitly using pre-built icc intrinsics
RAR format: Proper support for -p mode. OMP Support and optimisations.
RAR: Do not prefer zero-byte files. Use basename of filename for user.
Improve error output at salt loading. Clean up rar2john variable definitions.
rar2john: Handle Unicode file names. Less output unless -DDEBUG.
Fix for Unicode filenames. We need to zero the whole buffer between files.
Proof of concept patch for OpenCL options in john.conf
Make the RACF format a plugin
Fix for -subformat=list. The config file was not yet read so we could not get
info for user formats.
SIPdump added. Needs libpcap-dev so for now it's a separate make target "make
SIPdump"
Add LDFLAGS to SIPdump build target
Cosmetic changes to cryptsha256/512 (CPU)
ssha-opencl: If KPC was requested, use it when enumerating LWS
Revert "ssha-opencl: If KPC was requested, use it when enumerating LWS". This
did not work well.
Fix for cryptsha512-opencl in -gpu and OSX -opencl targets
Revert enabling of OMP in Makefile that was introduced in 0763f0d
Fix for OpenCL/CUDA targets w/ pre-built intrinsics
Fixed over-allocation in all OpenCL SHA-1 kernels. They used 320 bytes per
key buffer instead of just 64.
New pre-built intrinsics for latest sse-intrinsics.c icc version 12.1.0
Add Local Memory Type, LE/BE and ECC info to OpenCL device list.
ssha-opencl: Move salt and datai buffers preparation away from crypt_all()
just for good measure. There might be a miniscule speedup for single-salt.
common-opencl.c: Add -DDEVICE_IS_CPU to the build options when applicable,
for self-adjusting kernels.
mozilla2john: Error (and usage) to stderr Makefile: revert OMPFLAGS (please
stop committing that!)
Mozilla_fmt bugfix: globalSalt array was smaller than needed, causing
segfaults. This should be forwarded to the FireMasterLinux project.
Mozilla_fmt: corrected updating of cracked[] array. Also set BENCHMARK_LENGTH
(possibly temporarily) for seeing how the upcoming get/set_salt() fix will affect
performance.
Enable atexit() in opencl_cryptmd5_fmt.c and opencl_phpass_fmt.c just to get
rid of compiler warnings
RAR format: OpenCL support added (in the same one format). Support for AES-NI
instructions by using OpenSSL EVP instead of low-level calls. Experimental support
for reverting to CPU in Single mode (when doing a lot fewer than max keys per crypt
in a batch). Currently #defined out. Added inline storing of RAR data in input file
when files are small enough. Added lots of self-tests. Default to use same length
tests as cRARk. Changed format tag from $rar3$ to $RAR3$ to enforce re-running
rar2john. Moved slow code from set_salt() to get_salt() and keep all allocations
during the whole run.
Set OS_TIMER to 0 in arch.h if AMD APP SDK in installed and building OpenCL,
or if mingw is used to build 64-bit Windows build.
Silly me forgot an #endif in x86-64.h
RAR: Mute warning about AES-NI engine (it may be false) fix comments
RAR: Re-introduce find_best_kpc() - only used when specifically saying KPC=0
sapB optimisations and sap2john overhaul
RACF: trivial fix to mute a compiler warning for non-OMP builds
RAR fixes for OpenCL. Better error handling (especially if -DDEBUG). Now
works fine on AMD Cedar (previously segfaulted).
RAR: minor optimisations. Enable fallback to CPU in Single mode (it's safe
now)
A couple more .gitignore entries
Make hmacMD5 a non-plugin in order to force it to load after mscash2. Now
only hmacSHA1 was a plugin of all hmac's so I threw it in as well.
Create doc/CHANGES-jumbo, generated from commit descriptions
Remove obsolete file opencl/PBKDF2.cl
Fix a typo in common-opencl.c
Cryptsha512-opencl Makefile fix for 32-bit build targets
RAR: various optimisations.
RAR (OpenCL): drop all use of byte_addressable_store. This also avoids lots
of endian swapping. Added four versions of RawPsw, one for each aligment, and copy
32-bits at a time whenever possible.
RAR: Tweak auto-tuning. Unroll first loop. Do endian swapping only once when
preparing RawPsw.
RAR: KPC enumeration tweaks
RAR: Made us of local memory optional (default disabled). Re-added
find_best_workgroup() and tweaked adjusting to device. Found a way to reduce
register use by 16, all else equal.
RAR: Optimisations for GTX580. Now 4400 c/s. Major overhaul of auto tuning.
Office format: Unicode support
RAR: Better granularity w/ KPC=0 (vs auto-homing). Auto-define NVIDIA from
cl_nv_pragma_unroll for architecture tweaks. Bump plaintext length for better
coalescion. Init lengths to 6 so the self-tests don't end up wildly diverging
threads (when it just sets a few keys out of thousands).
RAR: Fix LWS at 64, there is no point in evaluating it.
RAR: Decrease register use a lot, only one RawPsw buffer. KPC tweaks. Get rid
of the switch (for AMD) in sha_final() using a new bit flip macro. Optional fixed
length in kernel. Approaching 10,000 c/s on HD 7950
RAR: Minor optimisations verified on GTX580. Self-test length fixes. Unroll
inner loop by four for fixed-length kernels, dropping a switch statement.
RAR: Disable the 4x inner loop unrolling for AMD, it was detrimental
RAR: Use vectorized memcpy if AMD
RAR: Drop impossible conditionals for unrolled nvidia code.
RAR: Vectorize output copy for AMD. This too made an unintuitive boost.
Added hccap2john to .gitignore
common-opencl.c: Add -cl-nv-verbose if device is nvidia
Include a vectorized kernel in same file as non-vectorized. It is not used
yet. Add an opencl-rar.h file.
RAR: Disable fixed_len that was accidentally active
RAR: Remove a debugging notice unless actually debugging
Added a note about bash completion in the "Notes to packagers" in params.h
Fix a typo in bash completion
Fixes for bash completion's Makefile target
More fixes for bash completion make target
common-opencl.[ch]: Added some nvidia-specific stuff. Also ran indent on it
because it was a mess.
New (hidden) options: --list=[inc-modes|rules|externals|ext-filters|ext-
modes] to be used by bash completion as well as GUI's and other things.
New hidden option: --list=ext-filters-only. Unlike --list=ext-filters, this
does not include modes that also has generate()
New hidden options --list=build-info and --list=<section> Also includes
Solar's patch for compiler.c
--list: Missing CR for icc version output. Removed FLG_STDOUT.
Version string now reflecting magnum-jumbo (1.7.9-jumbo-5+unstable)
Add -list=hidden-options
bash completion now including incremental/external modes and rules
Tab vs space in doc/RULES
RAR: Separate FIXED_LEN from vectorizing (the latter needs the former but on
nvidias we may only want the former).
RAR: Fix EVP and unrar memory leaks. Early reject if rar_decode_number would
return > MaxNum. Experimental fuzzy early rejection found by Milen.
RAR: reverted experimental early reject, it produced false negatives. Added
lots of comments to unrar code, from original sources.
RAR: Added a reject test from Milen
Move some --list= options handling earlier, so we can show it even if we lack
a config file.
RAR: Another early reject found by Milen. This was already in place but we
might bail out just a little sooner with this test.
SHA0: use the basic function names since they're static anyway. This format
is good as a template for unsalted formats and sha1_gen_fmt_plug.c is good for
salted ones, as they don't contain any SSE2 or such complications.
Mute NSS/pkg-config warnings for LDFLAGS
Updated doc/CHANGES-jumbo and started to hand-edit it. More needed.
Updated doc/CHANGES-jumbo
Add run/opencl_bf_std.h to .gitignore
mozilla format: support new get_source() core
NT2: Simpler prepare() without mallocs, as Jim did to NT_fmt
config.c: fix for not breaking generic builds
get_source(): self test
Mute a compiler warning when building RAR in 32-bit
nt2 and raw-md5: Add get_source() functions
Raw-sha1: add get_source()
Make the last patch work on non-Windows
Revert get_source() function for now (it's still in bleeding-jumbo)
Move bash completion script to run directory in case a packager forgets about
it
Fix a couple of compiler warnings
Revert hash and buffer sizes for unique, accidentally committed by Jim in
514c059
mscash: bugfix for codepage version of get_salt()
Alignment fixes in mysqlSHA1 and rawSHA0 binary()
Revert "Fix: improve build on multi-GPU environment."
Add new john.conf options subsections Markov, MPI and Jumbo and add a new
config item CrackStatus under Options:Jumbo. Note: If CrackStatus=Y in john.conf,
the --crack-status option disables it.
Drop the "Jumbo" subsection of john.conf, leave those items at the top
[Options] section.
Add --list=subformats and deprecate --subformat=list
List --subformat as a hidden option now (for --format=crypt benchmark)
Mute a compiler warning for raw2dyna.c
Make raw-sha (sha0) a non-plug so it always gets lower precedence than sha1
RAR: change KPC to GWS
Rest of OpenCl formats: Change KPC to GWS in john.conf and environment
variables
john.conf typos in comments (external:double)
c3_fmt.c: fix typos, raw-sha vs cryptsha
README.mpi minor updates
Updated doc/CHANGES-jumbo. We now have 516 commits since Jumbo-5 but this is
reduced to currently 172 lines in this file.
A couple minor changes to CHANGES-jumbo.
Source $JOHN/john.local.conf by default. This file is never overwritten but
will be created empty when building, if it does not exist. It must *not* be
included in any release tarball.
Create a rule section "Extra" for the previously commented-out rules for
Single mode. Also, add new rules "Single-Extra" (consisting of Single plus Extra)
and "Jumbo" (consisting of all rules we have, including NT). I preserved the name
"All" for local use, thus using "Jumbo" instead.
External:Keyboard: Fixes for 8-bit characters vs signed char constants.
http://www.openwall.com/lists/john-users/2012/02/26/2
Makefile: Never overwrite john.local.conf when building
Add --list=[encodings|opencl-devices]. Deprecate --encodings=LIST (but it's
still supported). We will later support --list=cuda-devices too. Drop --device=list
and --platforms=list (not supported from now on). For the catch-all of --
list=<subsection>, add a header "Subsections of...".
RAR: Support files larger than 2 GB.
Add --list=formats, listing all formats in the order they are registered.
Update doc/OPTIONS and doc/README.opencl
Some more .gitignore entries
wordlist.c: True dupe suppression for buffer mode, code based on unique.c
CUDA device lister: Handle error conditions.
john.c: Alter output from --list=? a little, working around a problem with
how bash completion was parsing it. Also add a function prototype for
cuda_device_list().
CUDA: Add some info to device list. Fix compiler warnings.
Added a stub doc/CREDITS-jumbo based on git author data, and manually edited.
Updated doc/OPTIONS and doc/CHANGES-jumbo
mscash2 sizeof() bug fix after the Sparc fixes.
wordlist.c: Fix a compiler warning on 32-bit
Revert "bf-opencl: performance and stability update". It broke building.
Fix line endings in a couple of files that were in DOS format.
mscash2-opencl: Fix a typo that merely led to a compiler warning
Fix line endings in opencl_mscash2_fmt.c again
mscash2-opencl: Fix a typo that merely led to a compiler warning
RAR_fmt.c & common-opencl.c: Fix compiler warnings on 32-bit builds
NT and mscash1: Fix strict aliasing breakage from Sparc fixes
New option: --log-stderr
Closed-loop mode and dupe suppression fixes
Made Taviso's SSSE4 format a non-plug, depending on SSSE4
Add an experimental linux-x86-64-native build target
Fix compiler warnings in Tavis' SHA-1 format
When using --log-stderr, don't produce a log file
taviso_fmt.c: Replace memrchr with strrchr. Add $dynamic_12$ tag like other
raw SHA1 formats use. The format announced FMT_SPLIT_UNIFIES_CASE which was not
correct until now.
Updates to CHANGES-jumbo and CREDITS-jumbo
Add 32-bit "native" build targets
tavis_fmt.c: Fix a memory leak.
taviso_fmt: Fix for strrchr vs full-length keys.
Fix incorrect $dynamic_12$ tag in raw sha1 formats to $dynamic_26$
Do NOT delete ../run/john.local.conf on "make clean"
Fix 64-bit native target (we need -march=native in ASFLAGS too)
Rename rawSHA1_LinkedIn_fmt_plug.c to rawSHA1_linkedIn_fmt_plug.c so it
registers *after* the normal raw-sha1 format.
Another fix for john.local.conf
Fixes for -native build target
Updated CHANGES-jumbo
-march=native implies -mtune=native
raw-sha1_li format: Fix bug that would give false negatives from cmp_all()
Reduced binary for raw-md4, raw-md5, raw-sha1 and NT2. This decreases memory
usage with 3 bytes per loaded hash for NT/MD4/MD5 and 4 bytes for SHA1 and should
help keeping good stuff in cache.
Reduced binary size #ifdefs
XSHA_fmt_plug.c: Fix bug introduced by Sparc fixes
Closed-loop mode: Print name of pot file
Fix mySQLSHA1 and sha1gen bugs from Sparc fixes. All should be OK now.
Format/algo renaming of some of Lukas' formats that were missed due to even
stranger use of the macros
wordlist.c: Drop linefeeds in log_event() calls
Permit smaller hash size for wordlist dupe suppression, and prefix some more
log output with "- "
Drop email addresses from CREDITS-jumbo
RACF binary() alignment fix
Alignment fix in raw-sha1-linkedin
New (hidden) option --length=N for reducing plaintext length of a format,
mostly for testing purposes.
Add new options --loopback[=FILE] and --dupe-suppression (the former implies
the latter) and revert some stuff for backwards compatibility. NOTE: I had to free
up some option flags that was not really needed. But we are now OUT OF them!
Requested CREDITS-jumbo fix
Reflect new format names in CHANGES-jumbo
Move --field-separator-char to hidden option
Make GPU builds (for Linux 64-bit) -march=native
Make --log-stderr a hidden option
sha1_gen_fmt alignment fix (just to be sure)
phpass-cuda was inadvertently named phpass-opencl
GOST rename from "GOST 3411" to "GOST R 34.11-94"
Remove two unused variables from opencl_bf_std.c
Fix a (clang) compiler warning in MYSQL_fast_fmt_plug.c
Move MYSQL_fmt_plug.c to unused/, rename MYSQL_fast_fmt_plug.c to
mysql_fmt_plug.c and change its label to just mysql
CHANGES-jumbo updates. Hard to keep terse, we could drop more
CHANGES-jumbo don't repeat last names
Revert "Revert to older (working) phpass-opencl for now". This code was no
better.
Revert to a non-vectorized phpass OpenCL format, hand-edited to reflect new
names/labels/etc and shared opencl_find_best_workgroup()
Set FMT_UNICODE for all mscash GPU formats
Move --fix-state-delay=N to "hidden" options. Does not seem to affect bash
completion.
Revise formats.h descriptions of FMT_UNICODE and FMT_UTF8
Add "unreliable" to mscash-cuda formats
64-bit GPU targets Makefile fix: -march=native vs. sse-intrinsics.o
--list=format-details: use hexadecimal output for the FMT_flags
Do not "advertise" linux-x86-native as the best target
Changed version to 1.7.9-jumbo-6-RC0
Fixes for --max-run-time
SSH: Fix a complaint about unused variable
Fix a cosmetical bug if you abort during loading, and loading is less than
one second.
RAR bugfix (though it would never show up)
Avoid a bunch of compiler warnings for keepass2john.c
Clean up a bunch of Dhiru's scattered variable declarations
Fix for fake_salts.c that regains 52MB of BSS
Fixed another bunch of Dhiru's scattered variable declarations, for the
HAVE_NSS case.
Add office2john and vncpcap2john to "make clean"
Remove UTF-8 BOM from keepass2john.c
clang targets: Add -Wall, and for debug targets also -Wdeclaration-after-
statement
Mute a couple of benign compiler warnings
CHANGES-jumbo update
Add a git .mailmap file to (cosmetically) unify the commit history
Do not define REPORT_OPENCL_WARNINGS for release. We'll still se build errors
but the output will be cleaner when all is OK.
Fix a -Wdeclaration-after-statement for MPI
Fixed my share of GPU formats' declarations not at block start.
Add another test vector to hmac-sha1
Make episerver, keepass, pwsafe non-plugs.
Added doc/BUGS which lists the three formats that does not work with big-
endian, as well as the problematic mscash CUDA formats.

Dhiru Kholia (126):


ssh2john: Detect if private keyfile has no password
Support rar's -p mode by spawning external unrar process.
rar2john: fix failure for RAR files with comment present.
RACF password cracker patch for JtR.
Add OMP support in RACF cracker patch.
Add OMP code to RACF based on magnum's changes to RAR format. Fix non-OMP
build of RACF.
Add .gitignore file.
Integrate SIPcrack 0.4 into JtR. SIPdump.c is still to be integrated.
Add CRACF.TXT (generated by CRACF program). Add cracf2john utility to convert
input CRACF.TXT file into JtR compatible format. racf2john is currently TODO.
Minor optimization in length calculation.
Add OMP support for sip format.
Remove a memory leak in RACF format.
Fix memory leaks in SIP format.
Get rid of Valgrind warnings from RACF format code.
Add one more SIP hash.
Integrate VNCcrack (http://www.randombit.net/code/vnccrack/) into JtR. JtR
can now crack RFB Protocol Version 3.8 authentication.
Minor fixes for RACF format.
Add keepass2john utlity for processing input KeePass 2.x database files into
a format suitable for use with JtR. KeePass format is in works.
Finally, the racf2john utility is here. Huge thanks to Nigel Pentland for
providing sample code.
Cleanup SSH format.
Fix thread safety issues in SSH format.
Make some functions static. Add a userid length limit check in racf2john.
Symlink racf2john to john.
Remove some minor compiler warnings.
Alternate and FAST method to ensure thread safety in SSH format.
Minor fixes for SSH format.
Fix build when using OpenSSL 0.9.7
Re-add OpenSSL version check for SSH format.
Fix compiler warning in VNC format.
Increase SALT_SIZE in RACF format.
Add VNC password decoder utility in unused folder. Works for TightVNC and
RealVNC products.
Add VNC passwd file support in vnc-decoder.c.
Add group information to racfdump. Increase SALT_SIZE in RACF format.
Add a patch for SSH format by Solar.
Improved vncpcap2john. Works for RFB 3.7 and 3.8 protocol versions. Works
with TightVNC and RealVNC servers. 3.3 RFB support is TODO.
Add make target for vncpcap2john.cpp
Use BSD version of tcphdr (patch by Erik).
Fast cracker for Mozilla Firefox, Thunderbird and SeaMonkey master passwords.
Fix a compiler warning in mozilla format. Add sample key3.db files.
Restore original DES code. Begin preparation for OMP support.
Fix worst of memory leaks (one leak in lowpbe.c:186 is still present). Make
code OMP friendly.
Fix remaining memory leaks by avoiding dynamic allocation.
OMP support for mozilla format. ~1.5x faster using 3 cores.
Remove requirement of cert8.db files for "no master password" check in
mozilla2john. Remove "no master password" check from mozilla_fmt.
Implement support for having test vectors and benchmarking in Mozilla format.
Simplify mozilla format by avoiding dynamic memory allocation.
Add support for cracking Office 2007 documents.
Fix 32-bit SSE2 build.
Add patch by Solar. Increase PLAINTEXT_LENGTH to 32.
Remove debugging code.
At least detect Office 2010 files.
Add support for Office 2010 files in office2john.
Fix "Too many open files" error by using proper free function.
Add support for *new* EPiServer's default hashes.
Minor cosmetic fixes.
Add few more self-tests in episerver format.
Implement proper set_salt and get_salt functions in episerver format.
Add speculative support for salted SHA256 hashes in episerver format.
Fix a silly typo.
Office 2010 support is now complete.
Implement proper get_salt and set_salt functions in office format.
Add OMP support in office format.
Add another test vector from RFC3211 (taken from extractkeychain-0.1's
sources).
Implement proper get_salt and set_salt functions in RACF format.
Implement keychain2john program.
Implement "fast" Mac OS X Keychain cracker with OMP support.
Wrong hacky fix for keychain format.
Implement proper get_salt and set_salt functions in pdf format.
Implement proper get_salt and set_salt functions in VNC format. Get rid of
unused version property.
Ignore 2 more files.
Fix multi-salt performance in pdf format.
Cleanups and reduce global data in pdf format.
Keychain format is now FMT_NOT_EXACT.
Get rid of compiler warnings in Mozilla format.
"Easy fix" for compilation warnings on Lion.
Use CommonCrypto on OS X instead of OpenSSL for EpiServer format.
Use CommonCrypto on OS X instead of OpenSSL for RAR format.
Use CommonCrypto on OS X instead of OpenSSL for SybaseASE format.
Use CommonCrypto on OS X instead of OpenSSL for hmailserver format.
Use CommonCrypto on OS X instead of OpenSSL for raw-sha512 format.
Use CommonCrypto on OS X instead of OpenSSL.
Use CommonCrypto on OS X instead of OpenSSL in drupal7 format.
Use CommonCrypto on OS X instead of OpenSSL in cryptsha512 format.
Use CommonCrypto only on Lion.
Fix (hopefully) compilation problem on Snow Leopard.
Use CommonCrypto only on Lion.
Avoid warnings when nss is missing or pkg-config is missing.
Add help file for Mozilla format.
Fix help file.
Minor fixes for mozilla2john utility.
Fix size to match SHA1 requirements.
Add some sample Mozilla "non-hashes".
Implement proper get_salt and set_salt functions in Mozilla format.
Add support for cracking Password Safe files.
Implement fixes suggested by Solar. Integrate pwsafe2john with john.
Add SHA-256 OpenCL kernel.
Fix a crash in ssh2john.
Add another test vector in SSH format.
Implement changes suggested by Solar.
Add support for WoltLab Burning Board 3 hashes.
Add support for Django 1.4 hashes.
Remove executable flag.
Add support for GOST 3411. Authors: Jim, Sergey and Dhiru.
Add support for cracking ODF files.
Add test-case with duplicate salt.
Remove wrong usage of FMT_NOT_EXACT from ODF format.
Use proper license in mozilla format.
Remove my hacks from wbb3 format.
Remove my hacks from episerver format.
Remove my hacks from RACF format.
Fix license in mozilla format.
Fix RACF breakage.
Drop cracked array approach from django format.
Add more test vectors in vnc format.
Add more test vectors in django format.
Fix 32-bit episerver format builds.
alignment and size fixes for episerver format.
alignment fix for django format.
alignment fix for wbb3 format.
Add three more make targets. linux-x86-clang-debug is super good for
debugging.
Add support for KeePass 1.x files.
Fix salt size in SSH format.
Add support for cracking KeePass 1.x files.
Integrate keepass2john program with john.
Add more test vectors to KeePass format.
Fix warnings exposed by -Wdeclaration-after-statement flag.
Frank Dittrich (64):
bash-completion for JtR (to install: "sudo make bash-completion")
bash completion updates
Update and licensing statements for bash completion
bash completion updates http://www.openwall.com/lists/john-dev/2012/05/12/4
bash completion updates
bash completion update http://www.openwall.com/lists/john-users/2012/05/21/1
bash completion update http://www.openwall.com/lists/john-dev/2012/05/23/1
bash completion update http://www.openwall.com/lists/john-dev/2012/05/24/1
bash completion http://www.openwall.com/lists/john-dev/2012/05/25/3
bash completion update http://www.openwall.com/lists/john-dev/2012/05/28/9
bash completion update
bash completion update and documentation.
bash completion update http://www.openwall.com/lists/john-dev/2012/06/06/32
c3_fmt.c: improve --subformat= handling
bash completion: a few more improvements
Fix bash completion for unique
Adjust bash completion (--list=encodings and --list=opencl-devices)
Fix bash completion for input and output redirection (<, >, 2>...)
Move markov option handling to mkv.c (do_markov_crack)
use [Markov:Default] instead of [Options:Markov] for --markov
bash completion: avoid default completion for --opt=
Markov mode: move parameter validation into new function get_markov_options
Additionaly, the logic has been changed so that the max. values for level and
length are adjusted prior to checking min. values, to avoid adjusting min. value to
a max. value which is changed afterwards:
genmkvpwd should use MAX_MKV_LVL
Markov: different error messages for missing [Markov:Default] section and for
missing Statsfile definition in an existing [Markov:Default] section
Markov: improved logging
Improve error message for invalid incremental mode name
Implement --markov=MODE[:<options>]
Markov: Fix an old typo in an error message
Bash completion: avoid completion for --l= if --l= is ambiguous
Add --list=format-details
Change sequence of columns for --list=format-details
Add john.conf comment about [Options] section
Adjust copyrigth in usage output (1996-2012)
Fix --format=crypt --subformat=TYPE names in doc/OPTIONS
bash completion fixes for --loopback
avoid [ and ] in format names
Makefile: add comments for *-clang-debug targets
benchmark-unify: a Perl script to convert benchmark output for relbench
Several enhancements for relbench
--list=format-details: add number of test cases to output
Fix gcc warnings in --list=format-details code
relbench: important fix for duplicate format names in file1
relbench: update copyright, and change revision from 4 to 4.1
Some documentation fixes for dynamic formats
benchmark-unify: map "MYSQL" to "MySQL" and "NT v2" to "NT MD4"
Use a different format name for raw-sha1-ng, due to max. pwlen 15
print heading for --list=section only if subsections exist
Fix clang make targets for the HAVE_NSS case
fix hccap2john usage output
bash completion: bug fix for --list=
add --list=format-all-details
Markov: allow start and/or end to be specified in percent
Markov: first convert start % value, then end % value
Fix --list=? output (new-line/trailing space)
Fix linux-x86-64-icc target for HAVE_NSS case
Markov: move mkv_start / mkv_end computation out of do_markov_crack()
doc/MARKOV: Clarify explanation START / END values
Adjust --list=format-all-details output to f61def05 changes
--list=format-all-details: fix indention for FMT_OMP flag description
Fix linux-x86-native build
Markov: fix segfault re-introduced with commit 2c5a95a3
Enhanced compiler version info for --list=build-info
--list=format-details: add benchmark comment and length and binary and salt
size
Fix another -Wuninitialized warning in keepass2john.c

JimF (36):
Update src/dynamic_utils.c
dynamic non contiguious number issues BE
Update src/dynamic_utils.c
Update src/hmacMD5_fmt_plug.c
Added MD4 to dynamic. 7 crypt functions were deprecated. These 7 'crypt'
functions were replaced with 'crypt_md5' functions. 4 new md4 crypt functions
added. Updated the dynamic conf file, and the dynamic documentation. Added 5 new
builtin types to dynamic (using md4).
Cygwin OMP builds were not building x86-sse.o properly, without this change.
Lotus5: Use the passed in format pointer, and avoid having to forward declare
the static global. Has added benefit of always appearing the same way in all init()
functions of all formats, no name differences.
Simplification of differences between SSE2 and SSE2i code. In nsldap, there
were problems with 32 bit SSE2.
Dynamic MD5_X2 md4 fixes
Dynamic md4 final fixes
Dynamic: Support null bytes in constants.
john-1.7.9-dynamic-unameonly-1.diff
LOTS of minor fixes for VC builds
Mscash and mscash2 formats prepare() fixes
Enhancement of extern:double
Make incremental mode restore ETA figures
-regenerate-lost-salts=N option, for cracking hashes where we do not have the
salt
Fix for the recent -regenerate-lost-salts=N patch.
Added a new rule, to reject a word unless it is a specific length. This could
be done in the past with 2 rejection rules. Updated the doc/RULES file, and
rules.c. Pretty trivial code change.
Arbitrary characters in rules, using \xnn
CORE CHANGES: Add a get_source() function, that (if present) can rebuild the
ciphertext from a binary
get_source() self-test more permissive (tags, case etc)
Win32 SharedMemory patch (only affects _MSC_VER, __CYGWIN32__ or __MINGW32__
builds)
raw2dyna added. This is a helper program that converts raw hashes to dynamic
format.
wordlist.c: Status bug fix
Raw-SHA1 "LinkedIn" format (partial hashes, 20 bit zeroed)
Loads of minor fixes for Sparc (endianness, alignment)
Format renames for dynamic (remove extra spaces)
Fix a cosmetical off-by-one bug in wordlist.c
Sparc_Porting_and_OtherStuff-unstable.diff
MMX_fixes_dynamic_and_some_other_patches.diff
Use first two salts when benchmarking instead of top one.
Portability_issues_unstable.diff
VC fixes to hccap2john.c and keepass_fmt_plug.c
hmac-sha1 bugfix for SSE2. Now passes Test Suite.
pass_gen.pl updates for GOST, SHA2 etc.

Myrice (31):
Signed-off-by: myrice <myrice@myrice-laptop.(none)>
Inital xsha512-cuda
xsha512-cuda align implementation
CRLF->LF issued
Bug fix, Code clean
Password transfer optimized
cmp_all on GPU, bug fixed, rename gpu to cuda
Xsha512 patch from Solar
Optimize copy hash to host. Copy only when necessary
Makefile fixed
More itereations during one GPU call
Makefile for magnum-jumbo
Makefile updated for magnum
cmp_exact for xsha512-cuda
Reduce 80 rounds in sha512 to 77
Copyright fix. Static memory allocation in cuda_xsha512_fmt.c
XSha512 for OpenCL
xsha512-opencl auto find best local work size
xsha512-opencl cmp_all on GPU
auto find best LWS
xsha512-opencl and CUDA doc
xsha512-opencl: eliminate byte address store
Raw SHA512 CUDA format
Fixed: xsha512-cuda/raw-sha512-cuda: kernel_cmp_all() multiple result malloc
xsha512-cuda: Long password length support
SHA512 opencl implementation
BUG fixed: SWAP64 on AMD GPUs
code style adjust
Bug fix: xsha512-cuda: get_key() for long password
xsha512-cuda: avoid unnecessary hashes copy from GPU to CPU
Bug Fixed: xsha512-opencl incidentally comment out memcpy in set_key()

Claudio André (28):


Move src/*.cl to src/opencl/
OpenCL cryptsha512
Improvement: get the LWS and KPC from john's config file. Improvement: check
if group size is valid. Cosmetic: changes in benchmark comment. See commit:
9d3fe1414e. Performance: put all working variables in __local memory address space.
Fixed: allow temp buffer to use all the available local memory. Fixed: use small
KPC values when running on CPU. On real cracking tasks, big values behaves badly.
Fixed: format and algorithm names. Fixed: copyright information.
More error treatment in find_best_kpc and find_best_workgroup. Only transfer
keys to GPU is necessary (magnum idea).
openCL_crypt512.patch as of
http://www.openwall.com/lists/john-dev/2012/04/18/6
Changes in common_opencl.c
Improvement: Set john.conf LWS and KPC properly. Improvement: Unroll only
important loops. Performance: Use bitselect and bitalign when possible.
Performance: Created a different kernel to run on CPU. Performance: Created a
different kernel to run on NVIDIA. Fixed: Fix find_best_kpc() and
find_best_workgroup misbehaviour.
Improvement: disable #pragma OPENCL EXTENSION cl_khr_byte_addressable_store.
Improvement: use PUTCHAR macro (15% performance gain on CPU).
Improvement: failed to use PUTCHAR macro on GPU. More 3% performance on CPU.
Fix: Avoid memory override on CPU. Note: PUTCHAR fails in insert_to_buffer.
Cause is GPU memory misalignment access. Note: on CPU this is the final version.
Note: on GTX 570 this is (might be) the final version. Seems the compiler optimize
in a way i was unable to reduce register usage. Note: on 7970 this is going to be
the final version for a while. Not able to get useful profile information.
Fix: clear bad and commented code.
Fix: Avoid waste time on find_best_KPC.
Fix: Fix find_best_KPC to get the best configuration.
Put links on OpenCL readme file
Note: on GTX 570 this is the final version. Seems the compiler optimize in a
way i was unable to reduce register usage. Improvement: on Nvidia, use less local
memory and bigger LWS. Fix: more code cleanup.
Fix: more code cleanup.
Fix: even more code cleanup.
Improvement: change the code to be more multi-GPU friendly.
Fix: correct salt usage.
Fix: improve build on multi-GPU environment.
Fix: improve salt management.
Fix: local memory management done by host.
AMD better performance version. DO NOT merge with Jumbo
John jumbo official branch
Fix: use GWS instead of KPC.
Set my public email
Fix: declarations not at block start.
Improvement: more aggressive defaults on Nvidia.

Solar (23):
john-1.7.9-fastrip-1.diff This patch speeds up DES-based tripcode cracking by
making use of JtR's bitslice DES implementation, including its OpenMP
parallelization.
Bugfix in trip_fmt.c (from latest CVS version)
Drupal 7: Minor optimisation
Keyboard external mode fix (from CVS)
XOP for MD5/MD4/SHA-1
sse-intrinsics.c: Take advantage of some SSE2 and SSSE3 intructions if
available http://www.openwall.com/lists/john-dev/2012/03/21/4 (followup)
OMP Support for wpapsk formats
taviso_fmt: Use XOP if available. Plus a fix to sse-intrinsics.c for 32-bit
builds with SSSE3.
Format renames, unified algorithm names
Change cryptmd5 to md5crypt, and cryptsha2 to sha2crypt
-march=native fixes for linux-x86-64-gpu, linux-x86-64-opencl, linux-x86-64-
cuda
WPA-PSK fixes, OpenMP support
MySQL-fast fixes, OpenMP support
Fix breakage caused by commit aab646b42afe93ca909b
john-mpi.c: Do not include omp.h unless OMP build
Add a second test vector to PHPS_fmt_plug.c
md5cryptsse()'s uses of length[]
SSH format bugfix
KeePass format is now 1% faster!
Finally (knock on wood) the RAR cmp_all(3) bug is squatted!
undef set_key in otder to avoid a clash with OpenSSL 0.9.7's backwards
compatibility DES interface, at least on Mac OS X 10.5.8
wpa-psk big-endian fixes
john-1.7.9-jumbo-6 as released by Solar

Lukas Odzioba (22):


john-1.7.9-jumbo-5-opencl-5.diff
john-1.7.9-jumbo-5-cuda-1.diff
john-1.7.9-jumbo-5-cuda-2.diff
magnumripper-magnum-jumbo-3279fdc-fixed.diff
Rename all opencl kernels
mscash2-cuda http://www.openwall.com/lists/john-dev/2012/03/31/15
Added WPAPSK format for CUDA and OpenCL
Fixed Makefile for CUDA builds for make -j
Added hccap2john and prepared wpapsk-cuda format for real use
Moved wpapsk* common functions and structures to wpapsk.h, prepared wpapsk-
opencl format for real use
Make django a non-plugin with checks for OpenSSL >= 1.0.0
GPU fixes from Lukas
CUDA device lister, show them with --list=cuda-devices
Fix a bunch of compiler warnings
wpa-psk CPU format added
Unify name of "local work size"
CUDA fixes
Revert to older (working) phpass-opencl for now
mscash1/2-cuda fixes
CUDA mscash formats fixes. Still not 100% OK.
phpass_fixesv2.diff
ocl_cuda_fix.diff

Samuele (16):
john-1.7.9-jumbo-5-opencl-3.diff
ssha opencl kernel update
OpenCL updates. Includes renaming rawMD5_opencl_fmt.c to opencl_rawmd5_fmt.c
and rawSHA1_opencl_fmt.c to opencl_rawsha1_fmt.c
renamed nsldaps renamed nt added mysql-sha1
added modified cl for nsldaps and nt
minor changes to cryptmd5_opencl modified nsldaps to add salt alignment as
proposes by magnum
Copyright banner modification
Starting some documentation
modified rawmd5 for the kpc test
README.opencl updated
added cryptmd5 and phpass by lukas
added more kpc and larger step in find_best_kpc
minor changes to john conf
renamed inbuffer as saved_plain
Modified Makefile with some environ variable
various test for mysqlsha1

Sayantan Datta (16):


mscash2-opencl format added
mscash2-opencl: Copyright blurb added
Warning for opencl_MSCASH2_fmt.c muted
mscash2-opencl 20% improvement
opencl-MSCASH2 13% performance improvement, added prepare() function.
opencl-mscash2 Radeon 7970/GTX 570 performance update, openMP support,
optimal work group size calculation
opencl-mscash2 performance update,better cmp_exact()
mscash2-opencl supports salts upto 19 charcters,fixed memory leaks on gpu,
added new file common_opencl_pbkdf2.c to support multiple gpus simultaneouly for
pbkdf2 step.
New format added:Blowfish OpenCL
blowfish-opencl:performance update,7970 bug fix
opencl-mscash2: added split() and salt_hash() function
mscash2-opencl: Code cleanup
opencl-mscash2:improved valid function
bf-opencl: performance and stability update
bf-opencl: performance and stability update
bf-opencl:passed JtR TS

Tavis Ormandy (10):


New format rawsha1_sse4 by Taviso. This will need some care before including
in a Jumbo release (needs SSSE4)
* Implement buffering of passwords before crypts to reduce function call
overhead. * Write an XMM bswap that doesn't require extracting the XMM regusters. *
Use a lookup table instead of a branch in set_key(). * Implement non-sse4
comparison for those without it. * Other minor syntax changes to match rest of
code.
Only build on platforms with SSE2
Use strrchr instead of memchr
rename format name as suggested by solar.
Remove some of the overhead of a partial match by quickly eliminating obvious
non-matches.
double semicolon typo
Fix keepass2john and rawSHA1_ng compilation on gcc3.4
Try to reorder W loads closer to first use.
Add prefetch-loop-arrays optimization

bartavelle (7):
Copyright headers for md[45]-mmx.S
Added copyright statement.
Ignoring build-generated files
Fix ICC build for x86-64.S
Fix ICC build for taviso_fmt.c
Actually fix ICC build for x86-64.S
64 bit intrinsics assembly file update.

bizonix (2):
small fix for build in macosx
Update src/opencl_cryptsha512_fmt.c

Sergey V (2):
GOST format: avoid function name clashes with OpenSSL > 1.0.0
GOST format: remove unused defines FORMAT_LABEL_CP and FORMAT_NAME_CP

Your Name (1):


Reorder cmp_one/cmp_exact logic as suggested by Solar. Fix bug with
uninitialized nul byte in binary conversion. Change some tabs to spaces for
consistency. Add some more testcases.

András (1):
john-1.7.9-jumbo-5-opencl-5-macosx_10.7.diff (minus the c3_fmt stuff)

Robert Veznaver (1):


replaced mempcpy with memcpy for BSD and OS X compatibility

---
head -2 ../doc/CHANGES-jumbo > ../doc/new && git shortlog -w78,8,10 -n --no-merges
1.8.0-jumbo-1..HEAD ^origin/master | sed -r 's/^ {8}/\t/; s/([^\t]) {2,}/\1 /g; s/[
\t]+$//' >> ../doc/new && echo >> ../doc/new && perl -ne '$p++ if m/^The following
changes/; print if $p > 1' ../doc/CHANGES-jumbo >> ../doc/new && mv ../doc/new
../doc/CHANGES-jumbo
---

You might also like