John the Ripper is an open source password security auditing and password recovery tool available for many operating systems.

What is John the Ripper?

John the Ripper is a password cracking tool originally produced for Unix-based systems. Its main objective is to correctly guess ("crack") a password. It uses several modes to test password strength, such as wordlist, single crack, incremental and external modes.

Is John the Ripper command-line only?

Yes, John the Ripper is a command-line only application, on Windows as well as macOS and Unix-based operating systems.

Is John the Ripper free?

John the Ripper is free for personal use. There's also a Pro version designed for professional pen-testers and ethical hackers.

How to use John the Ripper?

For Windows users, download the zip file listed here. Extract the file and open the "run" folder using the Command Prompt. Once in Command Prompt (you should see C:\john-1.9.0-jumbo-1-win64\run>), type "john" to run the application. Running C:\john-1.9.0-jumbo-1-win64\run>john will show all the options available. Information for other operating systems you can check out John the Ripper guides here.

Why is John the Ripper so popular?

Its huge popularity is because of its ability to detect password hash types automatically, run several types of attacks to include the classic dictionary attack as well as a brute force attack. In addition, it offers a free and open source version, as well as wide community support.

Features

John the Ripper supports hundreds of hash and cipher types, including for:

  • User passwords of Unix flavors (Linux, *BSD, Solaris, AIX, QNX, etc.)
  • macOS, Windows, "web apps" (e.g., WordPress)
  • Groupware (e.g., Notes/Domino)
  • Database servers (SQL, LDAP, etc.)
  • Network traffic captures (Windows network authentication, WiFi WPA-PSK, etc.)
  • Encrypted private keys (SSH, GnuPG, cryptocurrency wallets, etc.)
  • Filesystems and disks (macOS .dmg files and "sparse bundles", Windows BitLocker, etc.)
  • Archives (ZIP, RAR, 7z)
  • Document files (PDF, Microsoft Office's, etc.)
  • These are just some of the examples - there are many more.

What's New

These days, this original John the Ripper source tree serves primarily as the core tree for John the Ripper -jumbo. A 1.9.0-jumbo-1 release based off this 1.9.0 core is coming shortly. Meanwhile, the bleeding-jumbo branch on GitHub is already updated to the 1.9.0 core.

While this is a major release (after almost 6 years since the 1.8.0 core release), the community's progress in development of jumbo has been so much greater that any changes I make to core are relatively small, as is core itself. Yet they are important. Besides serving as the core for jumbo, other uses of this tree include cases where core's functionality alone is still sufficient or where (cross-)compiling jumbo for a given target system is too difficult or (as a first step in) porting John the Ripper to an unusual new platform.

The following changes have been made between John 1.8.0 and 1.9.0:

  • Increased the interleaving for bcrypt on x86-64 from 2x to 3x for a major speedup on CPUs without SMT. Unfortunately, this sometimes results in a minor performance regression when running multiple threads on CPUs with SMT.
  • Recognize the $2b$ bcrypt prefix.
  • In the generic crypt(3) format, detect descrypt with valid vs. invalid salts as separate id's for our heuristics on supported hash types.
  • Introduced a number of optimizations for faster handling of large password hash files, including loading, cracking, and "--show". Some of these use more memory than before, yet in a more efficient manner.
  • Benchmark using all-different candidate passwords of length 7 by default.
  • Dropped undocumented special handling of "Mc" in 'c' and 'C' rule commands.
  • Dropped undocumented limitation of the 'M' and 'Q' rule commands where they would sometimes memorize/check only up to the current hash type's length limit yet this optimization wouldn't necessarily be transparent (e.g., if a later command would extract a substring from above the hash type's length limit and bring it to within the limit).
  • Implemented special-case handling of repeated rule commands '$', '^', '[', ']', '{', and '}', as well as faster handling of the 'D' command.
  • When built with "--fork" support, disallow session names with all-digit suffixes since these clash with those produced by "--fork".
  • Forward SIGTERM to --fork'ed children.
  • Set stdout to line buffered (rather than potentially fully buffered), except for "--stdout", "--show", and auxiliary programs such as "unshadow".
  • On Windows, restore normal processing of Ctrl-C in case our parent (such as Johnny the GUI) had disabled it.
  • Added linux-x86*-avx512 and linux-x86*-avx2 make targets, which use respectively AVX-512 and AVX2 for bitslice DES.
  • Added linux-mic make target for Intel MIC (first generation Xeon Phi, aka Knights Corner), which uses its 512-bit SIMD intrinsics for bitslice DES. (For second generation Xeon Phi, aka Knights Landing, use linux-x86-64-avx512.)
  • Added linux-arm64le, linux-arm32le-neon, and linux-arm32le make targets. (The first two of these make use of ASIMD or NEON for bitslice DES.)
  • Added linux-sparc64 make target.
  • Made a minor optimization to MMX and SSE2 assembly code for LM hash.
  • Dropped Ultrix and SCO support.
  • Don't probe for alternate config file names (like john.ini when on Unix).
  • "DokuWiki" external mode sample has been added to the default john.conf.
  • Fixed operator precedence in the external mode compiler to be the same as C.
  • Fixed an out of bounds write bug in the external mode virtual machine.
  • Fixed a bug introduced in version 1.7.4 in the wordlist rules engine, where some sequences of rule commands could overflow a word buffer.
  • Fixed a bug where unaligned access SSE/AVX instructions would unnecessarily be generated by GCC 4.6+ in the bitslice DES code in non-OpenMP builds.
  • Fixed a bug where "Warning: no OpenMP support for this hash type" could be printed in "--stdout" mode.
  • Made assorted other bugfixes, portability and documentation enhancements.

Please stay tuned for the 1.9.0-jumbo-1 release and announcement, which will be "the real one". There's no way I'd be able to list jumbo's changes with the above level of detail - there have been way too many - but I plan on listing the release highlights.