Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 17 Aug 2015 20:43:42 +0800
From: Kai Zhao <loverszhao@...il.com>
To: john-dev@...ts.openwall.com
Subject: Re: testing every index (Re: more robustness)

Hi Alexander,

On Mon, Aug 17, 2015 at 6:51 PM, Solar Designer <solar@...nwall.com> wrote:
> Hi Kai,
>
> On Mon, Aug 17, 2015 at 06:10:52PM +0800, Kai Zhao wrote:
>> I tried to implement this in the following patch:
>>
>> https://github.com/loverszhaokai/JohnTheRipper/commit/794f5ffa998b122e9457c566ee8860d456fe01af
>>
>> There is check_all_even_index() and check_all_odd_index().
>> I set the correct password to all the even index in check_all_even_index().
>>
>>         for (i = 0; i < max; i++) {
>>                 if (i % 2 == 0)
>>                         key = plaintext;
>>                 else
>>                         key = longcand(format, i, ml);
>>                 fmt_set_key(key, i);
>>         }
>>
>> And then check all the even index by cmp_one() in check_all_index()
>>
>>         for (i = 0; i < max; i++)
>>         if ((is_even && i % 2 == 0) ||
>>             (!is_even && i % 2 == 1)) {
>>                 if (!format->methods.cmp_one(binary, i)) {
>>                         snprintf(err_buf, sizeof(err_buf), "cmp_one(%d) failed",
>>                                 i);
>>                         return err_buf;
>>                 }
>>         }
>>
>>
>> Does this what you mean by testing every index ?
>
> Also, it is preferable that you make use of all test vectors at once
> rather than use just one plaintext for all expected-correct indices.
>

What do you mean by "make use of all test vectors at once
rather than use just one plaintext for all expected-correct indices."
For example,

LM.fmt.c

static struct fmt_tests tests[] = {
        {"$LM$a9c604d244c4e99d", "AAAAAA"},
        {"$LM$cbc501a4d2227783", "AAAAAAA"},
        {"$LM$3466c2b0487fe39a", "CRACKPO"},
        {"$LM$dbc5e5cba8028091", "IMPUNIT"},
        {LM_EMPTY LM_EMPTY, ""},
        {"$LM$73cc402bd3e79175", "SCLEROS"},
        {"$LM$5ecd9236d21095ce", "YOKOHAM"},
        {"$LM$A5E6066DE61C3E35", "ZZZZZZZ"}, /* uppercase encoding */
        {"$LM$1FB363feB834C12D", "ZZZZZZ"}, /* mixed case encoding */
        {NULL}
};

Now we are cracking the "$LM$a9c604d244c4e99d", and the correct
password is "AAAAAA".

The current array of keys which set correct passwords on the even
index is:

[0] = "AAAAAA"
[1] = "wrong password"
[2] = "AAAAAA"
[3] = "wrong password"
...

To make use of all the test vectors, do you mean the array should be
the following ?

[0] = "AAAAAA"
[1] = "AAAAAAA"
[2] = "CRACKPO"
[3] = "IMPUNIT"
...


Thanks,

Kai

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.