John the Ripper 1.9.0-jumbo-1 with FPGA support

Released The new version of the oldest supported password cracking program, John the Ripper 1.9.0-jumbo-1, is available. (The project has been in development since 1996.) In the project page addition, the source code and ready-made builds for Windows are available for download.

It is noted that 4.5 years have passed since the release of version 1.8.0-jumbo-1, during which more than 6000 changes (git commits) were made by over 80 developers. During this time, developers recommended using the current edition from GitHub, which maintained a stable condition despite the changes thanks to continuous integration, which includes preliminary verification of each change (pull request) on many platforms. A feature of the new version is the introduction of FPGA support in addition to CPU, GPU, and Xeon Phi.


For boards ZTEX 1.15y, which include 4 FPGA chips and were originally used mainly 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 have been implemented on FPGA for the first time. For bcrypt, the achieved performance of ~119k c/s at 2^5 iterations ("$2b$05") with a power consumption of about 27 watts significantly surpasses results from the latest GPUs on a per-board basis, considering equipment cost and watts. Support is also provided for of boards boards of this type, as confirmed up to 16 boards (64 FPGA) controlled from a single Raspberry Pi 2. The standard functionality of John the Ripper is supported, including all password cracking modes and the ability to load a large number of hashes simultaneously. To speed up operation, mask usage ("—mask" mode, including in combination with other modes) and comparison of computed hashes with those loaded on the FPGA have been implemented. From the implementation perspective, many of the designs (for example, for sha512crypt and Drupal7) 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 significant changes:

  • Support for a wide range of additional hash types, ciphers, etc., including both classic password hashes (e.g., from new versions of QNX) and cryptocurrency wallets, encrypted archives, and encrypted file systems (e.g., BitLocker and FreeBSD geli), as well as support for new varieties of previously supported formats (e.g., bcrypt-pbkdf support added for OpenBSD softraid) and much more. In total, 80 formats have been added for CPU and 47 for OpenCL (along with a small number of older formats removed as they have been integrated into new and deprecated ones). The total number of formats is now 407 for CPU (or 262 excluding '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. (Partly as part of GSoC 2015.)
  • 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-)tuning of optimal password checking buffer sizes on CPU ("—tune=auto —verbosity=5") and optimal task sizes on OpenCL (enabled by default), taking into account the slow ramp-up to full operating frequency of NVIDIA GTX 10xx series GPUs and newer. Using realistically loaded hashes and actual password lengths (when known in advance) for such auto-tuning.
  • Adding a 'dynamic expressions' compiler, specified directly on the command line, implementing new hybrid hash types, for example, "—format=dynamic='sha1(md5($p).$s)'", calculated on CPU using SIMD. Supported components of such expressions include dozens of fast hashes (ranging from common ones like MD5 to moderately exotic ones like Whirlpool), substring concatenation, encoding and decoding, character case transformations, references to the password, salt, username, 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: linux.org.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster