openwall / openwall/john

ETA disappears at 7th character

Open
#4,579 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

In order to reproduce this issue just run attached test.pwd with following command:
john --format=descrypt '-2=[xyz0123456789]' -1=?l?d --min-len=1 --mask=?2?1?u?1?1?1?1?1 --node=1467-4136/4136 ./test.pwd

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 256/256 AVX2])
Will run 32 OpenMP threads
Node numbers 1467-4136 of 4136
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:00 (4) 0g/s 0p/s 0c/s 0C/s
0g 0:00:00:00 0.00% (5) (ETA: 17:39:26) 0g/s 13107Kp/s 13107Kc/s 13107KC/s 1dD6..27L8h
0g 0:00:00:00 0.00% (6) (ETA: 17:39:26) 0g/s 41506Kp/s 41506Kc/s 41506KC/s z7Yq7..3lZiwh
0g 0:00:00:08 (7) 0g/s 45270Kp/s 45270Kc/s 45270KC/s 3dY877..63Y3iwh
0g 0:00:00:11 (7) 0g/s 45416Kp/s 45416Kc/s 45416KC/s 5sMs09h..xcOp09h
0g 0:00:00:15 (7) 0g/s 45682Kp/s 45682Kc/s 45682KC/s zmHncsu..4dTbcsu

More info about configuration can be found here: https://github.com/openwall/john/issues/4576
I was able to narrow bug down to (what looks like) an integer overflow in mask.c in this line:
offset = my_candidates * (options.node_min - 1);
After commenting this line I could see eta but still not sure if it's calculated correctly, will do more tests.
test.pwd.zip

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

Start with mask.c and reproduce the behavior using the command and attached test.pwd. Inspect the offset calculation at the reported line and trace how it affects ETA and status output for the large node range. Done means ETA remains visible and is calculated correctly at the affected candidate length and node offset.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.