john
john copied to clipboard
Alternative external:subsets mode
External "subsets" mode can be very effective, but:
- It iterates first over output-length, then over the charset and last over subset-length. This means it will exhast up to max. length of [ab] before it switches to [ac]. Or put in other words, given a max length of 16 it will try "aaaaaaaaaaaaaaaab" before it tries "ac". And "abz" will come very, very late.
- It may produce a massive amount of dupes (this is documented). For smaller charsets and lengths it's close to 50%.
Wouldn't iterating over charset, then over output-length and last over subset-length will be a whole lot more effective? I think it would also mean an "as long as feasible" run will be a better subset of a complete run than it is now (more combinations for shorter lengths). Put in other words, it would produce "ac" long before "aaaaaaaaaaaaaaaab" but the latter will still come before "abc".
Perhaps both variants can be kept, if they're good in different situations. Anyway I'm not sure how hard this would be to implement (fast and with no dupes), I haven't wrapped my head around it yet.
@magnumripper How does your built-in Subsets mode compare to what you described here? If it takes care of all of this, then maybe close that issue with such comment?
Oh, right. The subsets mode takes care of all this - no dupes and better order (which is also tweakable).