More efficient way for Cyrillic masks
Dear hashcat community,

I have a question about mask attacks using cyrrilic charsets.

I'm trying to use a mask where I can use both uppercase and lowercase cyrillic characters as a seperate charset.
This way I want to do a mask attack like ?u?l?l?l?l?l but in cyrillic.

First thing I did was:
hashcat -m 100 -a 3 -w 3 -O hashfile.txt --hex-charset -1 d0d1 -2 b0b1b2b3b4b5b6b7b8b9babbbcbdbebf808182838485868788898a8b8c8d8e8f -3 909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf  ?1?3?1?2?1?2?1?2?1?2?1?2
This performs quite well at almost 11000 MH/s on my 1080 Ti, but does try a lot of HEX combinations that are not actual cyrillic characters.
Therefore I went looking for a more optimised method which skips this non-existing chars.

I came up with the following:
hashcat -a 3 -w 3 --stdout -1 Charsets/cyr_u.hcchr -2 Charsets/cyr_l.hcchr ?1?2?2?2?2?2 | hashcat -m 100 -O hashfile.txt --encoding-from iso-8859-5 --encoding-to utf-8
I made 2 charsets which I converted to iso-8859-5.
This way the attack will only use actual cyrillic charsets.
However because of the pipe, performance is horrible (around 430 kH/s) and I can't see progress or resume at a later date.

My question is, am I missing an option somewhere with which I can either skip the non-cyrillic characters in method 1 or greatly improve performance in method 2?
If there is another more efficient method I haven't thought of, it is off course very welcome as well. Wink
What are the invalid combinations created by method 1?
For example the combination d1b0 (it should only do d0b0) is not in the Cyrillic alphabet, but with this mask it will try this combination, even though I don't really want to try it.

Perhaps to clarify a bit more, the lowercase charset should only do:
d0b0 d0b1 d0b2 d0b3 d0b4 d0b5 d191 d0b6 d0b7 d0b8 d0b9 d0ba d0bb d0bc d0bd
d0be d0bf d180 d181 d182 d183 d184 d185 d186 d187 d188 d189 d18a d18 bd18c
d18d d18e d18f