openwall / openwall/john

more control over single mode: need options to disable word extraction, to disable pairs and/or to feed exact candidates

Open
#4,111 18 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C
Stars
13.6k
Forks
2.6k
PR merge metrics
No merged PRs in 30d

Description

CMIYC 2019 created interest to feed candidates into single mode with high precision because the hashes are very slow (real world example: Ashley Madison leak). E.g. it may be desirable to use only specified candidates without any additional candidates.

I'll mix several problems, because probable goal may be reached not fixing all of them.

  • I did not find any option to disable word extraction fully.
  • I did not find way to disable generation of pairs, because SingleWordsPairMax is raised automatically to cover some KPC (I am not sure which one).
    • Also final number of pairs may exceed max. key per crypt twice or more (#4110).

Example, current state:

$ printf '.include <john.conf>\n[Local:Options]\nSingleSkipLogin = Y\nPristineGecos = Y\n' > t.conf

$ cat t.conf
.include <john.conf>
[Local:Options]
SingleSkipLogin = Y
PristineGecos = Y

$ echo 'abc,123:$0$h:::qwe,567' > plaintext.pw

$ ./JohnTheRipper/run/john plaintext.pw --verbosity=6 --single=None --config=t.conf
[...]
set_key(qwe, 0)
set_key(qwe567, 1)
set_key(q567, 2)
set_key(qweqwe,567, 3)
set_key(qqwe,567, 4)
set_key(567, 5)
set_key(qwe,567, 6)
set_key(qwe,567qwe, 7)
Almost done: Processing the remaining buffered candidate passwords, if any.
set_key(qqwe, 0)
set_key(qwe,567567, 1)
[...]

I would like to be able to try only qwe,567.

Optionally, with 'SingleSkipLogin = N', it may be useful to be able to try only abc,123 and qwe,567 candidates (but not pairs with them).

john is quite fresh:

$ ./JohnTheRipper/run/john --list=build-info
Version: 1.9.0-jumbo-1+bleeding-ea33667eb 2019-09-23 12:43:34 +0200
Build: linux-gnu 64-bit x86_64 AVX2 AC OMP

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin at the single-mode implementation and its Local:Options parsing, reproducing the supplied --single=None configuration and verbose set_key output. Done means options can independently suppress word extraction, suppress pairs, or restrict candidates to the supplied exact values.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
cli, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.