a new version of the oldest supported password cracking program (the project has been in development since 1996). Since the release of the previous version 1.8.0-jumbo-1, 4.5 years have passed, during which over 6000 changes (git commits) were made by more than 80 developers. Thanks to , including pre-validation of each change (pull request) on many platforms, during this time the developers recommended using , which was kept stable despite the changes made. The main code of the project is under the GPLv2+ license, while the code of some components is under the BSD license.
A notable feature of the new version is the introduction of FPGA support (in addition to CPU, GPU, and Xeon Phi). For , consisting of 4 FPGA chips originally used primarily for Bitcoin mining, 7 types of password hashes are now implemented: bcrypt, classic descrypt (including bigcrypt), sha512crypt, sha256crypt, md5crypt (including Apache apr1 and AIX smd5), Drupal7, and phpass (used, in particular, in WordPress). Some of these are being implemented on FPGA for the first time.
For bcrypt, the achieved performance is ~119k c/s at 2^5 iterations ("$2b$05") with a power consumption of about ~27 watts, significantly surpassing the results for the latest GPUs based on board cost and watts. Clusters of this type are also supported, verified for up to 16 boards (64 FPGA chips), controlled from a single Raspberry Pi 2. The usual functionality of John the Ripper is supported, including all password cracking modes and simultaneous loading of a large number of hashes.
To speed up operation, mask application (the "—mask" mode, including in combination with other modes) and comparison of computed hashes with those loaded on the FPGA have been implemented. From an implementation perspective, many of the designs (for example, for ) use blocks consisting of multithreaded processor cores (soft CPU cores) interacting with cryptographic cores. This functionality was developed by Denis Burykin in coordination with other jumbo developers.
Other important changes:
- Support for a wide range of additional hash types, ciphers, etc., including both classical password hashes (such as those from new versions of QNX) and cryptocurrency wallets, encrypted archives, and encrypted file systems (like Bitlocker and FreeBSD geli). Additionally, support for new types of previously supported formats has been added (for example, bcrypt-pbkdf support for OpenBSD softraid). In total, 80 formats have been added for CPU and 47 for OpenCL. The total number of formats is now 407 for CPU (or 262 not counting 'dynamic' formats configurable from configuration files) and 88 for OpenCL.
- Abandonment of CUDA support in favor of OpenCL, which does not hinder the full utilization of NVIDIA GPUs (and even helps, thanks to focusing development and optimizations on a single implementation of each format for GPU instead of two implementations previously).
- Support for new SIMD instruction sets — AVX2, AVX-512 (including for the second generation of Xeon Phi) and MIC (for the first generation) — as well as more universal and complete use of SIMD in the implementations of many formats, including the application of previously supported instruction sets up to AVX and XOP on x86(-64) and
NEON, ASIMD, and AltiVec on ARM, Aarch64, and POWER, respectively. - Numerous optimizations for CPU and OpenCL, both for more efficient processing of large numbers of hashes simultaneously (for example, load testing 320 million SHA-1 hashes on GPU) and for increasing hash computation speed. Some of these optimizations are universal, some cover various subsets of formats, and many are specific to individual formats.
- (Auto-)configuration of optimal password checking buffering on CPU ('—tune=auto —verbosity=5') and optimal task dimensions on OpenCL (enabled by default), taking into account the slow ramp-up to full clock speed of NVIDIA GTX 10xx series GPUs and newer. Use of actually loaded hashes and the actual length of passwords being checked (when known in advance) for such auto-configuration.
- Adding a compiler for 'dynamic expressions' specified directly on the command line and implementing new hybrid hash types, such as '--format=dynamic='sha1(md5($p).$s)'' calculated on the CPU using SIMD. As components of such expressions, dozens of fast hashes are supported (from common ones like MD5 to moderately exotic ones like Whirlpool), along with substring concatenation, encoding and decoding, character case transformation, references to passwords, salts, usernames, and string constants.
- Eliminating unwanted differences from hashcat, including support for previously hashcat-specific rules (wordlist rule commands), switching to OpenCL device numbering starting from 1, and applying the same default password lengths (typically length 7) during performance tests.
- New modes for generating passwords to crack (cracking modes), including PRINCE from hashcat (forms 'phrases' by combining several words in order of increasing total length), subsets (selects passwords with an insufficient number of distinct characters even if those characters come from a large set of possibilities), and hybrid external (allows external modes described in configuration files in a C-like language to form multiple passwords to be checked based on each base 'word' coming from another mode). Additionally, multiple new predefined external modes.
- Additional capabilities for using multiple modes simultaneously (one on top of another - stacking), as well as for using sets of rules (wordlist rules stacking).
- Improvements to mask modes (gradual stretching of the mask within specified length ranges, applying the mask on the OpenCL device side or FPGA board) and single crack (sensible behavior on devices that calculate a large number of hashes in parallel, for which there previously weren't enough passwords to check in this mode, as well as memory usage limitations).
- Many improvements in Unicode and other encoding support across various subsystems.
- Many improvements in the *2john programs (which convert files of different formats for
use with john), particularly wpapcap2john (processes WiFi traffic). - Many new command line options, settings in john.conf, configure script options, and corresponding new features, not all of which could be mentioned here.
- Improving code quality through built-in support for debug builds with AddressSanitizer (previously available) and UndefinedBehaviorSanitizer (newly added), the inclusion of a built-in format fuzzer (as part of GSoC 2015), and the application of continuous integration (building under dozens of combinations of operating systems and compilers and testing for correct support of all formats).
Source: opennet.ru
