mirror of
https://github.com/hashcat/hashcat.git
synced 2024-12-16 11:48:15 +00:00
special case handling for commas within masks of .hcmask file
This commit is contained in:
parent
362cb054a6
commit
d0f924580f
@ -17499,6 +17499,36 @@ int main (int argc, char **argv)
|
||||
|
||||
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))
|
||||
|
Loading…
Reference in New Issue
Block a user