|
Message-ID: <CABtNtWFbU_7DpSbJ6LSdNBCK3v2n-M6GtW0RS2J1qXdCb2O4+A@mail.gmail.com> Date: Sun, 23 Aug 2015 00:00:19 +0800 From: Kai Zhao <loverszhao@...il.com> To: john-dev@...ts.openwall.com Subject: Re: testing every index (Re: more robustness) Hi Alexander, On Sat, Aug 22, 2015 at 9:34 AM, Solar Designer <solar@...nwall.com> wrote: > > There's no such thing as "Current max max_keys_per_crypt". I guess you > meant for the current version of JtR, but no, that's not how it works. > max_keys_per_crypt is adjusted dynamically by many formats' init(), and > how it's adjusted depends on things such as OpenMP thread count and > OpenCL GWS tuning. Your current 33554432, while extremely high, might > in fact not be enough for current JtR on some hardware. > > Also, you used a static array for this. This grows the .bss > unnecessarily. Please use dynamic memory allocation for the actual > max_keys_per_crypt instead. If you don't want to allocate/free for each > format, you may use realloc() to a higher size whenever a next format > has a higher max_keys_per_crypt than the previously seen maximum (in the > formats tested up to that point). > > For the correct password, you're still setting just one password for all > indices. You should instead use all passwords from the test vectors, > then compare each computed hash against the one expected for the test > vector that you used for that index. > > The above means that your Boolean correct_key[] is better changed to > array of pointers (pointing to the test vector hashes, or NULL if not > correct) or integers (storing test vector numbers, or e.g. -1 if not > correct). > > Please make the above enhancements. A new patch for testing every index: https://github.com/loverszhaokai/JohnTheRipper/commit/7fcc07ef25464907105c266fa2b9caae0b598813 There are 3 formats have fatal errors: "cmp_exact() unexpected success" 1. AFS static struct fmt_tests tests[] = { 0 {"$K4$e35e9294ecef926d,0123", "U*U*U*U*"}, 1 {"$K4$64c7c2aedccd70d6,0123456789", "U*U***U*"}, 2 {"$K4$d9e985b36268f168,01234567", "U*U***U"}, 3 {"$K4$b9615786dfb53297,longcellname", "longpassword"}, 4 {"$K4$a8dc8aeaa2c48a97,", ""}, 5 {"$K4$dfda85c7619183a2,XXXXXXXX", "XXXXXXXX"}, 6 {"$K4$e3e59de6f1d5eaf4,cell", "password355"}, 7 {"$K4$b02cc24aefbc865b,", "thisisaverylongpassword"}, {NULL} }; When testing the 4th test vector, "" is correct password, but the cmp_exact() returns 1 when incorrect password is "XXXXXXXX" which is the 5th plaintext. Both "" and "XXXXXXXX" are the correct passwords ? 2. bfegg static struct fmt_tests tests[] = { 0 {"+9F93o1OxwgK1", "123456"}, 1 {"+C/.8o.Wuph9.", "qwerty"}, 2 {"+EEHgy/MBLDd0", "walkman"}, 3 {"+vPBrs07OTXE/", "tesztuser"}, 4 {"+zIvO/1nDsd9.", "654321"}, 5 {"+V6ZOx0rVGWT0", "1"}, 6 {"+V6ZOx0rVGWT0", "11"}, 7 {"+Obytd.zXYjH/", "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"}, {NULL} }; The ciphertext of the 5th and 6th are the same, so when we test the 5th test vector, the cmp_exact() will return 1 when the incorrect password is "11". This leads "cmp_exact() unexpected success". 3. mysql is the same with bfegg static struct fmt_tests tests[] = { [...] {"1b38cd9c2f809809", "hacktivity2008"}, {"1b38cd9c2f809809", "hacktivity 2008"}, [...] {NULL} }; > Meanwhile, have these tests uncovered any bugs? Currently, I only found the problems with cq, vnc and keyring. 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.