interesting. thanks for the contribution.
... but I think your syntax rules do not catch all cases see:
1. https://hashcat.net/wiki/doku.php?id=mas...mask_files
2. https://hashcat.net/wiki/doku.php?id=fre..._mask_file
for instance ?? is perfectly fine syntax: it means use the dollar AS-IS without interpreting it as a built-in or custom charset reference.
Furthermore, there is the \, and \# rule and we have these built-in charsets: ?l, ?u, ?d, ?h, ?H, ?s, ?a, ?b as you can see from the hashcat --help output
of course this can be easily improved (at least some of those missing syntax rules are quite easy to add to the rc file).
One thing that some users also do not understand is that ?a?abbbbb?a?a is a perfectly fine mask. It means that the string "bbbbb" is both prefixed and suffixed by 2 characters (?l?u?d?s). so we can have constant (hard-coded) strings within the mask too.
... but I think your syntax rules do not catch all cases see:
1. https://hashcat.net/wiki/doku.php?id=mas...mask_files
2. https://hashcat.net/wiki/doku.php?id=fre..._mask_file
for instance ?? is perfectly fine syntax: it means use the dollar AS-IS without interpreting it as a built-in or custom charset reference.
Furthermore, there is the \, and \# rule and we have these built-in charsets: ?l, ?u, ?d, ?h, ?H, ?s, ?a, ?b as you can see from the hashcat --help output
of course this can be easily improved (at least some of those missing syntax rules are quite easy to add to the rc file).
One thing that some users also do not understand is that ?a?abbbbb?a?a is a perfectly fine mask. It means that the string "bbbbb" is both prefixed and suffixed by 2 characters (?l?u?d?s). so we can have constant (hard-coded) strings within the mask too.