1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-15 12:29:35 +00:00

special case handling for commas within masks of .hcmask file

This commit is contained in:
philsmd 2016-07-04 12:47:16 +02:00
parent 362cb054a6
commit d0f924580f
No known key found for this signature in database
GPG Key ID: 4F25D016D9D6A8AF

View File

@ -17499,6 +17499,36 @@ int main (int argc, char **argv)
mask = mask + str_pos + 1; mask = mask + str_pos + 1;
} }
/**
* What follows is a very special case where "\," is within the mask field of a line in a .hcmask file only because otherwise (without the "\")
* it would be interpreted as a custom charset definition.
*
* We need to replace all "\," with just "," within the mask (but allow the special case "\\," which means "\" followed by ",")
* Note: "\\" is not needed to replace all "\" within the mask! The meaning of "\\" within a line containing the string "\\," is just to allow "\" followed by ","
*/
uint mask_len_cur = strlen (mask);
uint mask_out_pos = 0;
char mask_prev = 0;
for (uint mask_iter = 0; mask_iter < mask_len_cur; mask_iter++, mask_out_pos++)
{
if (mask[mask_iter] == ',')
{
if (mask_prev == '\\')
{
mask_out_pos -= 1; // this means: skip the previous "\"
}
}
mask_prev = mask[mask_iter];
mask[mask_out_pos] = mask[mask_iter];
}
mask[mask_out_pos] = '\0';
} }
if ((attack_mode == ATTACK_MODE_HYBRID1) || (attack_mode == ATTACK_MODE_HYBRID2)) if ((attack_mode == ATTACK_MODE_HYBRID1) || (attack_mode == ATTACK_MODE_HYBRID2))