if you have a minimum required length of 12 and rules that add up to 4 characters, you could just pre-process your dict such that it has at least 12-4 = 8 characters. That's already a huge filter and probably already good enough (to still have maximum speed etc).
of course it depends a lot on the hash type and cost factor (you didn't mention it), but since you are using brain I assume something like bcrypt/scrypt with a high cost factor:
the truncate rule of course might produce some "wrong" results, but depending on how many rules you have etc it might be negligible... sometimes users over-think and over-estimated the filters and at the end only much less than e.g. 1% of the password candidates are filtered out etc and that would be negligible
of course it depends a lot on the hash type and cost factor (you didn't mention it), but since you are using brain I assume something like bcrypt/scrypt with a high cost factor:
Code:
awk 'length > 7' example.dic > example_filtered.dic
the truncate rule of course might produce some "wrong" results, but depending on how many rules you have etc it might be negligible... sometimes users over-think and over-estimated the filters and at the end only much less than e.g. 1% of the password candidates are filtered out etc and that would be negligible