From 5d21854eb65837214da233de3f2834b8b291b1da Mon Sep 17 00:00:00 2001 From: magnum Date: Mon, 23 Sep 2013 01:45:24 +0200 Subject: [PATCH] Experimental: Add Hashcat-style +N and -N commands (increment/decrement ASCII). --- run/john.conf | 11 +++++++++++ src/rules.c | 18 ++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/run/john.conf b/run/john.conf index ae83982..0829769 100644 --- a/run/john.conf +++ b/run/john.conf @@ -482,6 +482,16 @@ l Az"[1-90][0-9][0-9]" <+ : ->F>F'F +# Jumbo-specific +# '+N' rule increments ('ASCII increment') character in position N. +# '-N' rule decrements it. +[List.Rules:IncDec] +# Increment last character: ++m +# Decrement last character, +# M is used as a no-op to protect from being parsed as a reject rule: +M-m + # For Single Mode against fast hashes [List.Rules:Single-Extra] .include [List.Rules:Single] @@ -493,6 +503,7 @@ l Az"[1-90][0-9][0-9]" <+ .include [List.Rules:Single] .include [List.Rules:Extra] .include [List.Rules:NT] +.include [List.Rules:IncDec] # Incremental modes diff --git a/src/rules.c b/src/rules.c index 5b72759..a263d79 100644 --- a/src/rules.c +++ b/src/rules.c @@ -1261,6 +1261,14 @@ char *rules_apply(char *word, char *rule, int split, char *last) } break; + case '-': + { + int pos; + POSITION(pos) + in[pos]--; + } + break; + case 'D': { int pos; @@ -1460,8 +1468,14 @@ char *rules_apply(char *word, char *rule, int split, char *last) } break; - default: - goto out_ERROR_UNALLOWED; + default: /* ASCII increment */ + { + int pos; + POSITION(pos) + in[pos]++; + } + break; + } length = strlen(in); which = 0; -- 1.8.2.3