You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Discovery output could not be checked, ranked, or survive a kill
-l was never connected to discovery: Linefile appears nowhere in
run_discovery, so -G wrote an empty audit file however it was driven.
Without word:rule:result a discovered rule cannot be verified, and
truncate and extract rules reach short targets from almost any long base
word. Both discovery workers now emit audit records in the normal-mode
format, including $HEX[] on the word.
-s carried bare rule names, so a rule matching 500 times looked like one
matching once; a real run produced 48,816 rules at 1.04 matches each. It
now leads with the count, and marks rules whose matches came from a
non-ASCII base word. -o stays bare, because it is fed back to procrule
and hashcat and must remain a valid rule file. -H previously filtered
only Phase 2 chains and now applies to Phase 1 singles as well.
Progress meters wrote a carriage return with no newline unconditionally,
which in a redirected log is one very long line burying the summaries.
They are suppressed unless stderr is a terminal; -q forces quiet.
-r was accepted with -G and silently ignored, which is how someone
concludes a seed rule set was tested when it was not. It now warns.
A run killed after Phase 1 lost everything, since all output was written
at completion. SIGINT and SIGTERM now set a flag the workers check, so
partial results are written through the normal path. An interrupt during
Phase 2 preserved 969,473 rules and 1,988,367 audit records.
-C restricts the catalog by rule class, reusing the existing CatalogValid
mechanism. -Z dumps the catalog with class and validity and needs no
inputs, separating "rule absent" from "engine did not match".
The UTF-32 engine refused any rule using a literal double quote, reading
it as an operand that opens and never closes. That was the whole of its
divergence from the byte engine: 138 of the 17,320 catalog rules. The
compiler now asks the parser twice, once with quoted operands and, only
on failure, once with quotes as plain characters. All 17,182 previously
valid rules produce byte identical output, and the two engines now agree
at 17,320.
ruleproc.c takes the 61 opcode defines from rule_ops.h rather than
keeping a second copy.