mirror of
https://github.com/epi052/feroxbuster.git
synced 2026-06-05 00:01:12 -03:00
* bumped version * added cli option to parser * added banner entry * fixed state file with colon on windows * tweaked banner name for scoped url * fixed test with new In-Scope Url banner name * added STATE_FILENAME env var to control state file name/location * added ferox config example * initial implementation complete * updated ci/cd to add components to fmt/clippy configs * clippy * made subdomain detection a bit more robust * --request-file correctly sets scope values * added debug windows build * fixed failing test
421 lines
15 KiB
Bash
421 lines
15 KiB
Bash
_feroxbuster() {
|
|
local i cur prev opts cmd
|
|
COMPREPLY=()
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
cur="$2"
|
|
else
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
fi
|
|
prev="$3"
|
|
cmd=""
|
|
opts=""
|
|
|
|
for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
|
|
do
|
|
case "${cmd},${i}" in
|
|
",$1")
|
|
cmd="feroxbuster"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
done
|
|
|
|
case "${cmd}" in
|
|
feroxbuster)
|
|
opts="-u -p -P -R -a -A -x -m -H -b -Q -f -S -X -W -N -C -s -T -r -k -t -n -d -e -L -w -D -E -B -g -I -v -q -o -U -h -V --url --stdin --resume-from --request-file --burp --burp-replay --data-urlencoded --data-json --smart --thorough --proxy --replay-proxy --replay-codes --user-agent --random-agent --extensions --methods --data --headers --cookies --query --add-slash --protocol --dont-scan --scope --filter-size --filter-regex --filter-words --filter-lines --filter-status --filter-similar-to --status-codes --unique --timeout --redirects --insecure --server-certs --client-cert --client-key --threads --no-recursion --depth --force-recursion --extract-links --dont-extract-links --scan-limit --parallel --rate-limit --response-size-limit --time-limit --wordlist --auto-tune --auto-bail --dont-filter --collect-extensions --collect-backups --collect-words --dont-collect --scan-dir-listings --verbosity --silent --quiet --json --output --debug-log --no-state --limit-bars --update --help --version"
|
|
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
|
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
return 0
|
|
fi
|
|
case "${prev}" in
|
|
--url)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-u)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--resume-from)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--request-file)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--data-urlencoded)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--data-json)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--proxy)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-p)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--replay-proxy)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-P)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--replay-codes)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-R)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--user-agent)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-a)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--extensions)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-x)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--methods)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-m)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--data)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--headers)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-H)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--cookies)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-b)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--query)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-Q)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--protocol)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--dont-scan)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--scope)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--filter-size)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-S)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--filter-regex)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-X)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--filter-words)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-W)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--filter-lines)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-N)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--filter-status)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-C)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--filter-similar-to)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--status-codes)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-s)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--timeout)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-T)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--server-certs)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--client-cert)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--client-key)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--threads)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-t)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--depth)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-d)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--scan-limit)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-L)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--parallel)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--rate-limit)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--response-size-limit)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--time-limit)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--wordlist)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
-w)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--collect-backups)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-B)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--dont-collect)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
-I)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
--output)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
-o)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--debug-log)
|
|
local oldifs
|
|
if [ -n "${IFS+x}" ]; then
|
|
oldifs="$IFS"
|
|
fi
|
|
IFS=$'\n'
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
if [ -n "${oldifs+x}" ]; then
|
|
IFS="$oldifs"
|
|
fi
|
|
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
|
|
compopt -o filenames
|
|
fi
|
|
return 0
|
|
;;
|
|
--limit-bars)
|
|
COMPREPLY=($(compgen -f "${cur}"))
|
|
return 0
|
|
;;
|
|
*)
|
|
COMPREPLY=()
|
|
;;
|
|
esac
|
|
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
|
return 0
|
|
;;
|
|
esac
|
|
}
|
|
|
|
if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
|
|
complete -F _feroxbuster -o nosort -o bashdefault -o default -o plusdirs feroxbuster
|
|
else
|
|
complete -F _feroxbuster -o bashdefault -o default -o plusdirs feroxbuster
|
|
fi
|