Filters

Filters are a must-have when it comes to bruteforcing stuff. They come in two flavors with rwalk: response (--filter) and wordlist (--wf) filters.

Composing filters may seem a bit overwhelming, but once you get the hang of it, you'll find that they are quite powerful.

The basic syntax for a single filter is:

name:argument

You can obviously use multiple filters together, by using boolean operators:

OperatorName
&AND
|OR
!NOT
(filter1:arg1 & filter2:arg2) | filter3:arg3

Applying filters granularly

Recursive mode

When using rwalk in recursive mode (--mode recursive), you can apply filters at specific depths by prefixing the filter with a depth indicator.

For instance, to apply a filter exclusively at depth 2, use the following syntax:

[2]filter:arg

Wordlists

When filtering wordlists (--wf), it's possible to apply filters for certain wordlist keys. Just as with recursive mode, you can prefix the filter with a key indicator.

For example, to apply a filter exclusively for the @ key, use the following syntax:

[@]filter:arg

Response filters

NameAliasesUsage
containsc
contains:substring
endse
ends:substring
startsst
starts:substring
lengthl, size
length:>123, length:123-456
regexr
regex:(a|b).*
statuss, code
status:200, status<400
timed, duration
time:>100ms, time:1s-2s
scriptrhai
script:/path/to/script.rhai
typet
type:dir, type:text/html, type:err
headerh
header:accept=application/json

Wordlist filters

NameAliasesUsage
containsc
contains:substring
endse
ends:substring
startsst
starts:substring
lengthl, size
length:>123, length:123-456
regexr
regex:(a|b).*