Remove duplicate Hashcat rules.
TL;DR: Each rule change is mapped, and a unique id is generated for each rule with functions count.
The mechanism is like this:
- A blank map is created with N ( from 1 to 36 ) slots.
- Each rule change will be applied to the map. Example rule: 'u', will change all characters cases from '?' ( unknown ) to 'u' ( upper case ). 'sab', will add {'a' -> 'b'} to the map. And same logic apply for the other rules.
- An id is generated from the map.
- The ids are compared to detect duplicate rules.
- The rule with the least functions count will be selected.
All rules on this page are supported except:
- Memory rules: X, 4, 6, M
- Reject plains rules
- L, R, +, -
- E, e
Remove duplicate Hashcat rules.
Usage:
duprule [options] < input
Reads input from STDIN and prints to STDOUT.
Options:
-o, --output optional file to write duplicate rules to
-v, --version optional print version info
-h, --help optional print this help message
-s, --supported optional list all supported rules
Examples:
duprule < rockyou.rule > rockyou.rule.uniq
duprule -o duplicates.txt < rockyou.rule > rockyou.rule.uniq
duprule is written in Rust. // TODO: update installation steps