You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

46 lines
1.7 KiB

# This file should be sourced in your .zshrc
# I take very little credit for it, the hard work was done by the zsh devs
# The majority of the code came from this file: https://github.com/junegunn/fzf/blob/master/shell/completion.zsh
if [[ $- =~ i ]]; then
hashcat-fzf-completion() {
local tokens cmd append
setopt localoptions noshwordsplit noksh_arrays noposixbuiltins
# http://zsh.sourceforge.net/FAQ/zshfaq03.html
# http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags
tokens=(${(z)LBUFFER})
if [ ${#tokens} -lt 1 ]; then
zle ${HCcomplete_default_completion:-expand-or-complete}
return
fi
cmd=${tokens[1]}
if [[ "$cmd" == "hashcat" ]]; then
if [[ "${tokens[-1]}" == "-m" || "${tokens[-1]}" == "--hash-type" ]]; then
append=$(hashcat --example-hashes | awk -v RS="\n\n" -F "\t" '{gsub("\n","\t",$0); print $1 "\t" $2 "\t" $3}' | sed 's/MODE: //; s/TYPE: //' | fzf -d "\t" --header="Mode Type" --with-nth='1,2' --preview='echo {3}' --preview-window=up:1 --reverse --height=40% | cut -d' ' -f1)
if [ -n "$append" ]; then
# Make sure that we are adding a space
if [[ "${LBUFFER[-1]}" != " " ]]; then
LBUFFER="${LBUFFER} "
fi
LBUFFER="${LBUFFER}${append}"
zle reset-prompt
return 0
fi
zle reset-prompt
else
zle ${HCcomplete_default_completion:-expand-or-complete}
fi
else
zle ${HCcomplete_default_completion:-expand-or-complete}
fi
}
[ -z "$HCcomplete_default_completion" ] && {
binding=$(bindkey '^I')
[[ $binding =~ 'undefined-key' ]] || HCcomplete_default_completion=$binding[(s: :w)2]
unset binding
}
zle -N hashcat-fzf-completion
bindkey '^I' hashcat-fzf-completion
fi