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:
parent
362cb054a6
commit
d0f924580f
@ -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))
|
||||||
|
Loading…
Reference in New Issue
Block a user