John the Ripper is a gratis password swell software tool. Initially developed for the Unix operating system, it at nowadays runs on xv dissimilar platforms (eleven of which are architecture-specific versions of Unix, DOS, Win32, BeOS, too OpenVMS). It is 1 of the most pop password testing too breaking programs equally it combines a let on of password crackers into 1 package, autodetects password hash types, too includes a customizable cracker. It tin travel run against diverse encrypted password formats including several crypt password hash types most commonly industrial plant life on diverse Unix versions (based on DES, MD5, or Blowfish), Kerberos AFS, too Windows NT/2000/XP/2003 LM hash. Additional modules direct hold extended its powerfulness to include MD4-based password hashes too passwords stored inwards LDAP, MySQL, too others. Cracking password inwards Kali Linux using John the Ripper is really directly forward. In this post, I volition demonstrate that.
John the Ripper is dissimilar from tools similar Hydra. Hydra does blind brute-forcing yesteryear trying username/password combinations on a service daemon similar ftp server or telnet server. John nonetheless needs the hash first. So the greater challenge for a hacker is to firstly larn the hash that is to travel cracked. Now a days hashes are to a greater extent than easily crackable using gratis rainbow tables available online. Just conk to 1 of the sites, submit the hash too if the hash is made of a mutual word, thence the site would present the give-and-take almost instantly. Rainbow tables basically shop mutual words too their hashes inwards a large database. Larger the database, to a greater extent than the words covered.
One of the modes John the Ripper tin usage is the lexicon attack. It takes text string samples (usually from a file, called a wordlist, containing words industrial plant life inwards a lexicon or existent passwords cracked before), encrypting it inwards the same format equally the password beingness examined (including both the encryption algorithm too key), too comparison the output to the encrypted string. It tin also perform a diverseness of alterations to the lexicon words too attempt these. Many of these alterations are also used inwards John’s unmarried onslaught mode, which modifies an associated plaintext (such equally a username alongside an encrypted password) too checks the variations against the hashes.
John also offers a fauna forcefulness mode. In this type of attack, the computer programme goes through all the possible plaintexts, hashing each 1 too thence comparison it to the input hash. John uses grapheme frequency tables to attempt plaintexts containing to a greater extent than oft used characters first. This method is useful for swell passwords which do non look inwards lexicon wordlists, but it takes a long fourth dimension to run.
John the Ripper uses a 2 measurement procedure to swell a password. First it volition usage the passwd too shadow file to create an output file. Next, you lot thence genuinely usage lexicon onslaught against that file to cleft it. In short, John the Ripper volition usage the next 2 files:
/etc/passwd
/etc/shadow
Cracking password using John the Ripper
In Linux, password hash is stored inwards /etc/shadow file. For the sake of this exercise, I volition create a novel user names john too assign a elementary password ‘password’ to him.
I volition also add together john to sudo group, assign /bin/bash equally his shell. There’s a prissy article I posted in conclusion yr which explains user creating inwards Linux inwards great details. It’s a adept read if you lot are interested to know too empathize the flags too this same construction tin travel used to almost whatsoever Linux/Unix/Solaris operating system. Also, when you lot create a user, you lot demand their domicile directories created, thence yes, conk through creating user inwards Linux post if you lot direct hold whatsoever doubts. Now, that’s plenty mambo jumbo, let’s larn to business.
First let’s create a user named john too assign password equally his password. (very secured..yeah!)
root@kali: # useradd -m john -G sudo -s /bin/bash
root@kali: # passwd john
Enter novel UNIX password: <password>
Retype novel UNIX password: <password>
passwd: password updated successfully
root@kali: #
Unshadowing password
Now that nosotros direct hold created our victim, let’s start alongside unshadow commands. The unshadow dominance volition combine the extries of /etc/passwd too /etc/shadow to create 1 file alongside username too password details. When you lot just type inwards unshadow, it shows you lot the usage anyway.
root@kali: # unshadow
Usage: unshadow PASSWORD-FILE SHADOW-FILE
root@kali: # unshadow /etc/passwd /etc/shadow > /root/johns_passwd
I’ve redirected the output to /root/johns_passwd file because I got the ticks for organizing things. Do what you lot experience similar here.
Cracking procedure alongside John the Ripper
At this betoken nosotros just demand a lexicon file too larn on alongside cracking. John comes alongside it’s ain modest password file too it tin travel located inwards /usr/share/john/password.lst. I’ve showed the size of that file using the next command.
root@kali: # ls -ltrah /usr/share/john/password.lst
You tin usage your ain password lists likewise or download a large 1 from Internet (there’s lots of lexicon file inwards terabyte size).
root@kali: # john --wordlist=/usr/share/john/password.lst /root/johns_passwd
Created directory: /root/.john
Warning: detected hash type "sha512crypt", but the string is also recognized equally "crypt"
Use the "--format=crypt" selection to forcefulness loading these equally that type instead
Using default input encoding: UTF-8
Loaded 2 password hashes alongside 2 dissimilar salts (sha512crypt, crypt(3) $6$ [SHA512 128/128 SSE2 2x])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost whatsoever other fundamental for status
password (john)
1g 0:00:00:06 DONE (2015-11-06 13:30) 0.1610g/s 571.0p/s 735.9c/s 735.9C/s modem..sss
Use the "--show" selection to display all of the cracked passwords reliably
Session completed
root@kali: #
Looks similar it worked. So nosotros tin at nowadays use john –show option to listing cracked passwords. Note that it’s a elementary password that existed inwards the lexicon thence it worked. If it wasn’t a elementary password, thence you lot would demand a much bigger lexicon too lot longer to to cleft it.
root@kali: # john --show /root/johns_passwd
john:password:1000:1001::/home/john:/bin/bash
1 password hash cracked, 1 left
root@kali: #
John the Ripper advanced commands:
Now that nosotros direct hold completed the basics of John the Ripper too cracked a password using it, it’s perchance fourth dimension to movement on to bigger too to a greater extent than complex things. For that you lot should banking enterprise check the documentation on cracking MODES and examples of John the Ripper usage.
John the Ripper's swell modes - Click to expand
John the Ripper's swell modes - Click to expand
John the Ripper’s swell modes.
Mode descriptions hither are brusk too entirely encompass the basic things. Check other documentation files for information on customizing the modes.
Wordlist mode.
This is the simplest swell way supported yesteryear John. All you lot demand to do is specify a wordlist (a text file containing 1 give-and-take per line) too approximately password files. You tin enable give-and-take mangling rules (which are used to modify or “mangle” words producing other in all likelihood passwords). If enabled, all of the rules volition travel applied to every draw inwards the wordlist file producing multiple candidate passwords from each source word. The wordlist should non incorporate duplicate lines. John does non form entries inwards the wordlist since that would eat a lot of resources too would forestall you lot from making John attempt the candidate passwords inwards the gild that you lot define (with to a greater extent than in all likelihood candidate passwords listed first). However, if you lot don’t listing your candidate passwords inwards a reasonable order, it’d travel ameliorate if you lot form the wordlist alphabetically: alongside approximately hash types, John runs a fleck faster if each candidate password it tries entirely differs from the previous 1 yesteryear a few characters. Most wordlists that you lot may discover on the Net are already sorted anyway. On the other hand, if your wordlist is sorted alphabetically, you lot do non demand to bother well-nigh approximately wordlist entries beingness longer than the maximum supported password length for the hash type you’re cracking. To give an example, for traditional DES-based crypt(3) hashes entirely the firstly 8 characters of passwords are significant. This way that if in that location are 2 or to a greater extent than candidate passwords inwards the wordlist whose firstly 8 characters are precisely the same, they’re effectively the same 8 grapheme long candidate password which entirely needs to travel tried once. As long equally the wordlist is sorted alphabetically, John is smart plenty to handgrip this special instance right. In fact, it is recommended that you lot do non truncate candidate passwords inwards your wordlist file since the residual of the characters (beyond the length boundary of your target hash type) are in all likelihood soundless needed too brand a divergence if you lot enable give-and-take mangling rules. The recommended way to form a wordlist for usage alongside default wordlist dominion laid is:
tr A-Z a-z < SOURCE | form -u > TARGET
See RULES for information on writing your ain wordlist rules.
“Single crack” mode.
This is the way you lot should start swell with. It volition usage the login names, “GECOS” / “Full Name” fields, too users’ domicile directory names equally candidate passwords, also alongside a large laid of mangling rules applied. Since the information is entirely used against passwords for the accounts it was taken from (and against password hashes which happened to travel assigned the same salt), “single crack” way is much faster than wordlist mode. This permits for the usage of a much larger laid of give-and-take mangling rules alongside “single crack”, too their usage is ever enabled alongside this mode. Successfully guessed passwords are also tried against all loaded password hashes just inwards instance to a greater extent than users direct hold the same password. Note that running this way on many password files simultaneously may sometimes larn to a greater extent than passwords cracked than it would if you lot ran it on the private password files separately.
“Incremental” mode.
This is the most powerful swell mode, it tin attempt all possible grapheme combinations equally passwords. However, it is assumed that swell alongside this way volition never terminate because of the let on of combinations beingness likewise large (actually, it volition terminate if you lot laid a depression password length boundary or conk far usage a modest charset), too you’ll direct hold to interrupt it earlier. That’s 1 argue why this way deals alongside trigraph frequencies, separately for each grapheme seat too for each password length, to cleft equally many passwords equally possible inside a express time. To usage the way you lot demand a specific Definition for the mode’s parameters, including password length limits too the charset to use. These parameters are defined inwards the configuration file sections called [Incremental:MODE], where MODE is whatsoever refer that you lot assign to the way (it’s the refer that you lot volition demand to specify on John’s dominance line). You tin either usage a pre-defined incremental way Definition or define a custom one. As of version 1.8.0, pre-defined incremental modes are “ASCII” (all 95 printable ASCII characters), “LM_ASCII” (for usage on LM hashes), “Alnum” (all 62 alphanumeric characters), “Alpha” (all 52 letters), “LowerNum” (lowercase letters plus digits, for 36 total), “UpperNum” (uppercase letters plus digits, for 36 total), “LowerSpace” (lowercase letters plus space, for 27 total), “Lower” (lowercase letters), “Upper” (uppercase letters), too “Digits” (digits only). The supplied .chr files include information for lengths upward to thirteen for all of these modes except for “LM_ASCII” (where password portions input to the LM hash halves are assumed to travel truncated at length 7) too “Digits” (where the supplied .chr file too pre-defined incremental way piece of employment for lengths upward to 20). Some of the many .chr files needed yesteryear these pre-defined incremental modes mightiness non travel bundled alongside every version of John the Ripper, beingness available equally a separate download. See CONFIG too EXAMPLES for information on defining custom modes.
External mode.
You tin define an external swell way for usage alongside John. This is done alongside the configuration file sections called [List.External:MODE], where MODE is whatsoever refer that you lot assign to the mode. The department should incorporate computer programme code of approximately functions that John volition usage to generate the candidate passwords it tries. The functions are coded inwards a subset of C too are compiled yesteryear John at startup when you lot asking the particular external way on John’s dominance line. See EXTERNAL.
What modes should I use?
See EXAMPLES for a reasonable gild of swell modes to use.
John the Ripper - Usage Examples - Click to expand
John the Ripper - Usage Examples - Click to expand
John the Ripper usage examples.
These examples are to give you lot approximately tips on what John’s features tin travel used for.
Command line.
1. First, you lot demand to larn a re-create of your password file. If your scheme uses shadow passwords, you lot may usage John’s “unshadow” utility to obtain the traditional Unix password file, equally root:
umask 077
unshadow /etc/passwd /etc/shadow > mypasswd
(You may demand to supersede the filenames equally needed.)
Then brand “mypasswd” available to your non-root user concern human relationship that you lot volition run John under. No farther commands volition demand to travel run equally root.
If your scheme is ancient plenty that it keeps passwords right inwards the world-readable /etc/passwd, but brand a re-create of that file.
If you’re going to travel swell Kerberos AFS passwords, usage John’s “unafs” utility to obtain a passwd-like file.
Similarly, if you’re going to travel swell Windows passwords, usage whatsoever of the many utilities that dump Windows password hashes (LM and/or NTLM) inwards Jeremy Allison’s PWDUMP output format. Some of these utilities may travel obtained here:
http://www.openwall.com/passwords/pwdump
2. Now, let’s assume you’ve got a password file, “mypasswd”, too desire to cleft it. The simplest way is to allow John usage its default gild of swell modes:
john mypasswd
This volition attempt “single crack” way first, thence usage a wordlist alongside rules, too finally conk for “incremental” mode. Please refer to MODES for to a greater extent than information on these modes.
It is highly recommended that you lot obtain a larger wordlist than John’s default password.lst too edit the “Wordlist = …” draw inwards the configuration file (see CONFIG) before running John. Some wordlists may travel obtained here:
http://www.openwall.com/wordlists/
Of those available inwards the collection at the URL above, all.lst (downloadable equally all.gz) too huge.lst (only available on the CD) are adept candidates for the “Wordlist = …” setting.
3. If you’ve got approximately passwords cracked, they are stored inwards $JOHN/john.pot. The john.pot file is non meant to travel human-friendly. You should travel using John itself to display the contents of its “pot file” inwards a convenient format:
john --show mypasswd
If the concern human relationship listing gets large too doesn’t fit on the screen, you lot should, of course, usage your shell’s output redirection.
You mightiness notice that many accounts direct hold a disabled shell. You tin brand John skip those inwards the report. Assuming that the disabled musical rhythm is called “/etc/expired”, the dominance would be:
john --show --shells=-/etc/expired mypasswd
or shorter, but volition also tally “/any/path/expired”:
john --show --shells=-expired mypasswd
or if you lot also desire to ignore another shell, state “/etc/newuser”:
john --show --shells=-expired,newuser mypasswd
To banking enterprise check if whatsoever root (UID 0) accounts got cracked:
john --show --users=0 mypasswd
or to banking enterprise check for cracked root (UID 0) accounts inwards multiple files:
john --show --users=0 *passwd* *.pwd
To display the root (username “root”) concern human relationship only:
john --show --users=root mypasswd
And finally, to banking enterprise check for privileged groups:
john --show --groups=0,1 mypasswd
4. You mightiness prefer to care the swell modes manually. It is wise to start alongside “single crack” mode:
john --single mypasswd
or since the GNU-style double dashes are optional too since selection names tin travel abbreviated for equally long equally they stay unambiguous:
john -si mypasswd
You should non abbreviate options inwards scripts which you lot would desire to piece of employment alongside time to come versions of John since what is unambiguous at nowadays mightiness larn ambiguous alongside the improver of to a greater extent than options.
If you lot direct hold to a greater extent than files to crack, it is preferable to charge them at the same time:
john --single passwd1 passwd2
or even:
john --single *passwd* *.pwd
This way, John volition run faster too mightiness fifty-fifty cleft to a greater extent than passwords than it would if you lot ran it on each password file separately.
5. To grab weak passwords non derived from readily available users’ personal information, you lot should proceed alongside swell modes demanding to a greater extent than processor time. First, let’s attempt a tiny wordlist alongside give-and-take mangling rules enabled:
john --wordlist=password.lst --rules mypasswd
or abbreviating the options:
john -w=password.lst -ru mypasswd
Then proceed alongside a larger wordlist, also applying the mangling rules:
john --wordlist=all.lst --rules mypasswd
If you’ve got a lot of spare disk infinite to merchandise for functioning too the hash type of your password files is relatively slow, you lot may usage John’s “unique” utility to eliminate whatsoever duplicate candidate passwords:
john --wordlist=all.lst --rules --stdout | unique mangled.lst
john --wordlist=mangled.lst mypasswd
If you lot know that your target hash type truncates passwords at a given length, you lot may optimize this fifty-fifty further:
john --wordlist=all.lst --rules --stdout=8 | unique mangled8.lst
john --wordlist=mangled8.lst mypasswd
Alternatively, you lot may but usage huge.lst available on Openwall wordlist collection CDs. It has give-and-take mangling rules pre-applied for the most mutual languages too it has whatsoever duplicates purged.
Depending on target hash type, the let on of dissimilar salts (if applicable), the size of your wordlist, rules, too processor performance, wordlist-based swell may accept anywhere from nether a bit to many days.
You do non direct hold to larn out John running on a (pseudo-)terminal. If running John on a Unix-like system, you lot tin but disconnect from the server, closed your xterm, etc. John volition grab the SIGHUP (“hangup” signal) too conk on running. Alternatively, you lot may prefer to start it inwards the background right away:
john --wordlist=all.lst --rules mypasswd &
Obviously, the “&” is specific to Unix shells too volition non piece of employment on most other platforms.
You may farther lift this yesteryear specifying a session name:
john --session=allrules --wordlist=all.lst --rules mypasswd &
This ensures that you lot won’t accidentally interfere alongside the instance of John running inwards the background if you lot proceed to start other sessions.
To sentiment the condition of a running session, use:
john --status
for the default session or:
john --status=allrules
for whatsoever other session. This works for both interrupted too running sessions. To obtain the most up-to-date information from a running session on a Unix-like system, transportation a SIGHUP to the appropriate “john” process.
Any interrupted sessions may travel continued with:
john --restore
or:
john --restore=allrules
Finally, to brand John direct hold less deport upon on other processes, you lot should laid the selection “Idle = Y” inwards the configuration file (see CONFIG). The default may vary depending on the version too create of JtR.
To entirely cleft accounts alongside a “good” musical rhythm (in general, the shell, user, too grouping filters described to a higher identify piece of employment for all swell modes equally well):
john --wordlist=all.lst --rules --shells=sh,csh,tcsh,bash mypasswd
Like alongside all other swell modes, it is faster to cleft all the files you lot demand cracked simultaneously:
john --wordlist=all.lst --rules passwd1 passwd2
You tin cleft approximately passwords only. This volition attempt swell all root (UID 0) accounts inwards all the password files:
john --wordlist=all.lst --rules --users=0 *passwd*
Alternatively, you lot may wishing to non waste materials fourth dimension swell your really ain passwords, if you’re surely they’re uncrackable:
john --wordlist=all.lst --rules --users=-root,solar *passwd*
Sometimes it is useful to separate your password hashes into 2 sets which you lot cleft separately, like:
john --wordlist=all.lst --rules --salts=2 *passwd*
john --wordlist=all.lst --rules --salts=-2 *passwd*
This volition brand John attempt salts used on 2 or to a greater extent than password hashes firstly too thence attempt the rest. Total swell fourth dimension volition travel almost the same, but you lot volition larn approximately passwords cracked earlier, which is useful, for example, for penetration testing too demonstrations to management. Similarly, you lot may banking enterprise check all password hashes alongside a modest wordlist, but entirely those that you lot tin banking enterprise check faster (with “–salts=2”) alongside a larger one. With large numbers of password hashes and/or alongside a highly non-uniform distribution of salts, it may travel appropriate to usage a threshold larger than 2 alongside “–salts” (sometimes fifty-fifty values equally high equally G volition do).
Note that the default wordlist rules include “:” (a no-op – attempt words equally they are inwards the list) on the firstly line. If you lot already ran through a wordlist without using rules, too thence decided to also attempt the same wordlist alongside rules, you’d ameliorate comment this draw out.
6. The most powerful swell way inwards John is called “incremental” (not a proper name, but kept for historical reasons). You tin but run:
john --incremental mypasswd
or:
john -i mypasswd
This volition usage the default “incremental” way parameters, which are defined inwards the configuration file’s department named either [Incremental:ASCII] (for most hash types) or [Incremental:LM_ASCII] (for Windows LM hashes). By default, the [Incremental:ASCII] parameters are laid to usage the total printable ASCII grapheme laid (95 characters) too to attempt all possible password lengths from 0 to thirteen (if the electrical flow hash type has a lower maximum password length, incremental mode’s length boundary is reduced accordingly). [Incremental:LM_ASCII] is similar, except that it takes payoff of LM hashes beingness case-insensitive too of their halves beingness express to vii characters each.
Don’t aspect “incremental” way sessions to terminate inwards a reasonable fourth dimension (unless all the passwords are weak too larn cracked), read MODES for an explanation of this.
In approximately cases it is faster to usage another pre-defined incremental way parameters too entirely cleft simpler passwords, from a express grapheme set. The next dominance volition attempt 10 dissimilar characters only, passwords from “0” to “99999999999999999999” (in an optimal order):
john -i=digits mypasswd
Of course, you lot tin usage most of the additional features demonstrated to a higher identify for wordlist way alongside “incremental” way equally well. For example, on a large-scale penetration test, you lot may direct hold John cleft entirely root (UID 0) accounts inwards a laid of password files:
john -i -u=0 *.pwd
7. If you’ve got a password file for which you lot already direct hold a lot of passwords cracked or obtained yesteryear other means, too the passwords are unusual, thence you lot may desire to generate a novel charset file, based on grapheme frequencies from that password file only:
john --make-charset=custom.chr mypasswd
Then usage that novel file alongside “incremental” mode.
If you’ve got many password files from a particular country, organization, etc., it mightiness travel useful to usage all of them for the charset file that you lot thence usage to cleft fifty-fifty to a greater extent than passwords from these files or from another password files from the same place:
john --make-charset=custom.chr passwd1 passwd2
[ Configure your custom "incremental" way now. See below. ]
john -i=custom passwd3
You tin usage approximately pre-defined or custom give-and-take filters when generating the charset file to direct hold John consider approximately simpler passwords only:
john --make-charset=my_alpha.chr --external=filter_alpha mypasswd
If your “pot file” got large plenty (or if you lot don’t direct hold whatsoever charset files at all), you lot mightiness desire to usage it to generate a novel laid of chief charset files:
makechr
where “makechr” is a script that invokes “john –make-charset=…” alongside varying filenames, for all of the external way give-and-take filters defined inwards the configuration file. In this example, John volition overwrite the charset files alongside novel ones that are based on your entire $JOHN/john.pot (John uses the entire “pot file” if you lot don’t specify whatsoever password files).
8. Finally, you lot mightiness desire to email all users alongside weak passwords to tell them to alter their passwords. (This is non ever a adept idea, though, since lots of people do non banking enterprise check their email or ignore such messages, too the messages tin travel a hint for crackers.) Edit the “mailer” script supplied alongside John: the message it sends too perchance the transportation service dominance (especially if the password file is from a dissimilar machine). Then run:
mailer mypasswd
Configuration file.
Please refer to CONFIG for full general information on the configuration file too its possible locations.
1. Let’s assume that you lot notice that inwards approximately password file a lot of users direct hold their passwords laid to login names alongside “?!” appended. Then you lot just brand a novel “single crack” way dominion (seeRULES for information on the syntax) too identify it somewhere close the beginning:
[List.Rules:Single]
Az"?!"
Hint: if you lot desire to temporarily disable all of the default rules, you lot tin but rename the department to something John doesn’t usage too define a novel 1 alongside the section’s erstwhile name, but travel surely to larn out the “List.” prefix of the refer intact to maintain right configuration file syntax.
All the same applies to wordlist way rules equally well.
2. If you lot generate a custom charset file (described above) you lot volition also demand to define a configuration file department alongside the “incremental” way parameters. In the simplest instance it volition travel similar this (where “Custom” tin travel replaced alongside whatsoever refer you lot like):
[Incremental:Custom]
File = custom.chr
This way, John volition entirely usage characters from passwords used to generate the charset file only. To brand John attempt approximately to a greater extent than characters, add:
Extra = !@#$%
These extra characters volition thence travel added, but soundless considered the to the lowest degree probable. If you lot desire to brand surely that, alongside your extra characters, John volition attempt 95 dissimilar characters, you lot tin add:
CharCount = 95
This volition brand John impress a alert if it entirely has fewer than 95 characters inwards its charset.
You tin also usage CharCount to boundary the let on of dissimilar characters that John tries, fifty-fifty if the charset file has more:
CharCount = 20
If you lot didn’t usage whatsoever filters when generating the charset file, setting CharCount this depression volition brand John never attempt rare characters too grapheme combinations, non fifty-fifty for genuinely brusk passwords, spending the fourth dimension on elementary longer candidate passwords instead. However, the default length switching is commonly smart plenty thence that you lot shouldn’t demand this trick.
To brand John attempt passwords of surely lengths only, usage the next lines:
MinLen = 6
MaxLen = 8
Setting “MinLen” high, equally inwards the instance above, is reasonable if shorter passwords weren’t allowed to onslaught the machine you lot got the password file from (however, regime annotation that root tin commonly laid whatsoever password for whatsoever user too in that location are often loopholes inwards operating systems’ password policy enforcement capabilities).
On the contrary, you lot may desire to laid “MaxLen” depression if you lot call upward in that location are a lot of brusk passwords.
3. Another example: a lot of users at approximately site usage brusk duplicated words equally their passwords, such equally “fredfred”. As the let on of such potential passwords is fairly low, it makes feel to code a novel external swell way that tries them all, upward to approximately length.
You tin discover the actual implementation of such a swell way alongside lots of comments inwards the default configuration file supplied alongside John. Please refer to EXTERNAL for information on the programming linguistic communication used.