This is the page and DokuWiki namespace to upload unofficial JtR patches to (yes, the wiki supports file uploads - just click the icon showing a picture frame while editing the page). Please do. Links to external websites with JtR patches are also acceptable. Significant updates to this wiki page (such as newly added patches) are to be announced on the john-users mailing list (in addition to updating the wiki page, not instead of that).
Truly obsolete patches have been moved to the patches_old wiki page.
Patches that have been integrated into john or jumbo
Whatever way you choose to share your code with the community, please make sure you're generating your patches properly and licensing your code properly.
The difference from the “contributed resources” list on the JtR homepage and from the contrib/ directory is that patches and links found on the wiki become available to the community right away, without review by Openwall website and file archive maintainers.
Please refer to these instructions on how to apply patches. Many of the patches are to be applied on top of certain revisions of the jumbo patch, as specified in the tables below. Those revisions of the jumbo patch may be found in the corresponding directories with JtR releases (for recent versions of JtR) and in the current and historical contrib/ directories (for older versions of JtR).
Once you have patched john, and run the make, and built john, then you should test that john is working properly. This can be performed by using the John Test Suite
For not yet implemented ideas, see Wish-list for JtR
For howto information on adding a new code page to john, see Procedure to add a new code-page to john
| Patch | Author | Status and Description |
|---|---|---|
| john-1.7.9-fastrip-1.diff | Solar | Status: currently relevant. This patch speeds up DES-based tripcode cracking by making use of JtR's bitslice DES implementation, including its OpenMP parallelization. |
| john-1.7.9-jumbo-5-NT-performance-02.diff | magnum | This patch regains NT format's performance back to that of 1.7.8-jumbo-8. For some reason, dropped length checks that was no longer needed introduced a performance drop instead of a boost. This version not only re-introduces the length checks but also fixes bugs in them. This patch replaces a previous incremental one, 0003. Apply to a pristine jumbo-5. |
| OpenCL support | Alain Espinosa, Dhiru Kholia, Samuele Tonon, Lukas Odzioba | Status: applies on top of the john-1.7.9-jumbo-5, released 20.01.2012. OpenCL support for the following formats: NT, raw-MD4, raw-MD5, NSLDAP and raw-SHA1 hashes. This patch is experimental and has lot of scope for improvement. If you are interested in hacking / extending JtR to work with GPUs this is the right place to begin ;) |
| john-1.7.6-sha256cuda-0.diff | Lukas Odzioba | Applies on top of 1.7.6, currently relevant. This patch provides SHA256 support for GPU execution using CUDA and works only on Linux builds. |
| john-1.7.8-allcuda-0.3.diff | Lukas Odzioba | Status: applies on top of 1.7.8. CUDA support for the following formats: phpass, cryptmd5, cryptsha256,cryptsha512 |
| john-1.7.8-mscashcuda-0.diff | Lukas Odzioba | Status: applies on top of 1.7.8. CUDA support for: MSCash based on Alains implementation |
| john-1.7.8-mscash2cuda-0.1.diff | Lukas Odzioba | Status: released 09.09.2011, applies on top of 1.7.8. |
The horrific format we used here with incremental patches is abandoned. See instead the unofficial git repo at GitHub.
You can clone that repo using
git clone git://github.com/magnumripper/magnum-jumbo john-unstable
(the last argument is a directory name at your choice)
There is an even more unstable branch for "bleeding-jumbo", which is the same as above, but rebased onto core CVS.
You can clone the latter using
git clone git://github.com/magnumripper/bleeding-jumbo john-bleeding
(the last argument is a directory name at your choice)
| Short description | Author | Status and Description |
|---|---|---|
| Bench_Scripts_1_0.zip | alainesp | Scripts to compare performance of Windows crackers. Currently it support John-jumbo, Hashcat and Hash Suite 1.2. Take a look at 'readme.txt' for more. |
| JtR-TestSuite-1.11_OpenCL-formats.patch | magnum | Adds OpenCL formats to Test Suite 1.11. |
| JtR_Test_Suite_110-to-111.diff.gz | JimF | JtR Test Suite, 1.11. Mostly a maintenance release. Fixed bug, where some mssql05's were being called using older mssql. Added 2 NT 'raw' format files (NT and NT-utf8). These are handled by NT, NTv2 and new dynamic_33. Added new files to test dynamic_30, 31, 32, 33, and 34. To install, simply run patch -p1 < JtR_Test_Suite_110-to-111.diff.gz when you are in john's 'root' directory. |
| JtRTestSuite-1.10-file1.tar.gz JtRTestSuite-1.10-file2.tar.gz JtrTestSuite_1.08-to-1.10-makefile-update.diff | JimF | Here is JtR Test Suite, 1.10. This is a total rewrite of the code, and only a few data files were changed. This new version is in Perl, and there are many options that control how much the TS will check, and how much screen output there will be. -q command line switch will turn off \n chars for most of the run, UNLESS errors are detected. -q -q will turn off even most of the screen output totally, unless errors are seen. There will always be a header, listing what john 'build' is being run, and there will be a summary line, listing the work done, and what errors or lack of errors were seen. The display lines are now 'smarter'. They know the count of cracks made, both in the first run, and in the re-run from the john.pot file. They will list PASSED or FAILED, and if failed, list what was expected, and what was seen. The test suite, now also reads the john usage screen, the -enc:list and -sub:list outputs, to know what john can do, if it is a core or jumbo, which formats it is supposed to support (including a list of dynamics, from the -sub:list), and which encodings are 'known' to the jumbo build. Also, there is ability to filter out just what you want run, down to a single format. Type 'perl jtrts.pl -?' to get a list of the options available. Some good ones are: no options. This will do a full in 'core' john builds, and will do a base (used to be quick) run, and will toss in utf8 and koi8r, just to give some testing of encodings. -type full (or just full). This tests everything. All prelim -test=0's are done, and all formats that this build can do, that on in the TS, will be tested -q (added to any run), will reduce some screen output, if so desired. -type enc (or just enc) Will test all encodings, utf8, and others. -type dynamic (will test all dynamic formats) -type dynamic_13 will test just the single format, dynamic_13. To install: - By default, this is installed in JtR 'build' directory, in ./test. To place it there, simply change into the base Jtr Directory, and untar the 2 tar balls. - There is also a patch file. Patch it using 'normal' patching methods, and it will change the makefile, to properly use the 1.10 version. The makefile in 1.7.9-jumbo5 (or others prior to this), work with the TS v1.08, and not this new one. - NOTE, if test suite 1.08 (or prior) was installed in this directory, then the tstall, tstone and tstonebase script files can be removed after installing v1.10. Those older korn scripts are not used any more. |
| UnicodeDevelFiles-02.diff.gz | magnum | Status: updated 2011-12-26 Only needed by developers to add new code pages to JtR This patch adds 2 LARGE file into a ./src/Unicode directory of john as well as the cmpt_cp.pl and mkdump16.pl scripts that use them. cmpt_cp.pl is used to build new code page data, when adding new code pages to john. mkdumb16.pl was used to build the dumb16 and dumb32 external modes. These files are not normally needed by end users of john. This is a stand alone patch. It should apply over any jumbo, which does not yet have these 2 files in the ./src/Unicode directory |
| JtR_TestSuite_108-1.tar.gz JtR_TestSuite_108-2.tar.gz | JimF/magnum | JtR TestSuite 1.08, updated for john-1.7.8 jumbo-8 and later. This is a full “install” which unpacks to ./test, unpack it to your john directory so it becomes a sibling to run and src. This version also correctly handles non-Jumbo builds. Usage: For non-jumbo builds, cd to the test directory and execute ./tstall For jumbo builds, just 'make test' or 'make test_full' (the former skips the slowest tests) |
| John Test Suite Input Creation scripts | JimF | This is the actual set of dictionary files, scripsome t files, perl scripts, .C source files, etc, which were used to create the input data files for the current (1.03) John Test Suite. These require perl to be able to run the pass_gen.pl (several Crypt/Authens CPAN modules installed) |
| Test data for UTF-8 | magnum | Status: Currently relevant for testing the Unicode formats. This is a dictionary file with 100 greek words encoded in UTF-8, and test hashes for NT and md5(unicode($p)) made from the same words. Test using –utf8 (or not), and –single or –wordlist |
| OpenVMS support 2.4 | David Jones | Status: tested on few platforms (macosx-x86-64, linux-x86-mmx). Support to allow John to crack OpenVMS password hashes, including the later mixed case ones. Also allows JtR executables to be built on OpenVMS Alpha 8.3 systems with the DECC compiler. Installs in a sub-directory, src/vms in the standard source tree and produces a dynamic library file (vms_fmt) to be used in conjunction with –plugin option added in jumbo 7. Kit is compatible with both the John 1.7.8 base release (requires applying john_1.7.8.plugin patch) and the 1.7.8 jumbo 7 release candidate. |
Yes, I'd like people to start using this wiki page to publish their patches. The above is just not enough, with most patches being submitted by other means (which is fine) and no mention on this page (which is not fine). - solar
Also, there's a page on existing efforts to introduce parallel processing and distributed processing into JtR.