function __fish_hashcat_types --description "Get hashcat hash types" set -l modes (hashcat --example-hashes | string replace -f -r '^(?:MODE: |Hash mode #)(\d+)' '$1') set -l types (hashcat --example-hashes | string replace -f -r '^(?:TYPE:|\s+Name\.+:)\s+(.+)' '$1') for i in (seq (count $modes)) echo -e "$modes[$i]\t$types[$i]" end end function __fish_hashcat_outfile_formats --description "Get hashcat outfile formats" echo -e " 1\t'hash[:salt]' 2\t'plain' 3\t'hex_plain' 4\t'crack_pos' 5\t'timestamp absolute' 6\t'timestamp relative'" end function __fish_hashcat_device_types --description "Get hashcat device types" echo -e " 1\t'CPU' 2\t'GPU' 3\t'FPGA, DSP, Co-Processor'" end complete -c hashcat -s m -l hash-type -xa "(__fish_hashcat_types)" -d Hash-type complete -c hashcat -s a -l attack-mode -d Attack-mode -xa " 0\t'Straight' 1\t'Combination' 3\t'Brute-force' 6\t'Hybrid Wordlist + Mask' 7\t'Hybrid Mask + Wordlist' 9\t'Association'" complete -c hashcat -s V -l version -d "Print version" complete -c hashcat -s h -l help -d "Print help" complete -c hashcat -l quiet -d "Suppress output" complete -c hashcat -l hex-charset -d "Assume charset is given in hex" complete -c hashcat -l hex-salt -d "Assume salt is given in hex" complete -c hashcat -l hex-wordlist -d "Assume words in wordlist are given in hex" complete -c hashcat -l force -d "Ignore warnings" complete -c hashcat -l status -d "Enable automatic update of the status screen" complete -c hashcat -l status-json -d "Enable JSON format for status ouput" complete -c hashcat -l status-timer -x -d "Sets seconds between status screen updates" complete -c hashcat -l stdin-timeout-abort -x -d "Abort if there is no input from stdin for X seconds" complete -c hashcat -l machine-readable -d "Display the status view in a machine-readable format" complete -c hashcat -l keep-guessing -d "Keep guessing the hash after it has been cracked" complete -c hashcat -l self-test-disable -d "Disable self-test functionality on startup" complete -c hashcat -l loopback -d "Add new plains to induct directory" complete -c hashcat -l markov-hcstat2 -rF -d "Specify hcstat2 file to use" complete -c hashcat -l markov-disable -d "Disables markov-chains, emulates classic brute-force" complete -c hashcat -l markov-classic -d "Enables classic markov-chains, no per-position" complete -c hashcat -s t -l markov-threshold -x -d "Threshold when to stop accepting new markov-chains" complete -c hashcat -l runtime -x -d "Abort session after X seconds of runtime" complete -c hashcat -l session -x -d "Define specific session name" complete -c hashcat -l restore -d "Restore session from --session" complete -c hashcat -l restore-disable -d "Do not write restore file" complete -c hashcat -l restore-file-path -rF -d "Specific path to restore file" complete -c hashcat -s o -l outfile -rF -d "Define outfile for recovered hash" complete -c hashcat -l outfile-format -xa "(__fish_complete_list , __fish_hashcat_outfile_formats)" -d "Outfile formats to use" complete -c hashcat -l outfile-autohex-disable -d "Disable the use of \$HEX[] in output plains" complete -c hashcat -l outfile-check-timer -x -d "Sets seconds between outfile checks" complete -c hashcat -l wordlist-autohex-disable -d "Disable the conversion of \$HEX[] from the wordlist" complete -c hashcat -s p -l separator -x -d "Separator char for hashlists and outfile" complete -c hashcat -l stdout -d "Do not crack a hash, instead print candidates only" complete -c hashcat -l show -d "Compare hashlist with potfile; show cracked hashes" complete -c hashcat -l left -d "Compare hashlist with potfile; show uncracked hashes" complete -c hashcat -l username -d "Enable ignoring of usernames in hashfile" complete -c hashcat -l remove -d "Enable removal of hashes once they are cracked" complete -c hashcat -l remove-timer -x -d "Update input hash file each X seconds" complete -c hashcat -l potfile-disable -d "Do not write potfile" complete -c hashcat -l potfile-path -rF -d "Specific path to potfile" complete -c hashcat -l encoding-from -x -d "Force internal wordlist encoding from X" complete -c hashcat -l encoding-to -x -d "Force internal wordlist encoding to X" complete -c hashcat -l debug-mode -d "Defines the debug mode" -xa " 1\t'Finding-Rule' 2\t'Original-Word' 3\t'Original-Word:Finding-Rule' 4\t'Original-Word:Finding-Rule:Processed-Word'" complete -c hashcat -l debug-file -rF -d "Output file for debugging rules" complete -c hashcat -l induction-dir -xa "(__fish_complete_directories)" -d "Specify the induction directory to use for loopback" complete -c hashcat -l outfile-check-dir -xa "(__fish_complete_directories)" -d "Specify the outfile directory to monitor for plains" complete -c hashcat -l logfile-disable -d "Disable the logfile" complete -c hashcat -l hccapx-message-pair -x -d "Load only message pairs from hccapx matching X" complete -c hashcat -l nonce-error-corrections -x -d "The BF size range to replace AP's nonce last bytes" complete -c hashcat -l keyboard-layout-mapping -rF -d "Keyboard layout mapping table for special hash-modes" complete -c hashcat -l truecrypt-keyfiles -rF -d "Keyfiles to use" complete -c hashcat -l veracrypt-keyfiles -rF -d "Keyfiles to use" complete -c hashcat -l veracrypt-pim-start -x -d "VeraCrypt personal iterations multiplier start" complete -c hashcat -l veracrypt-pim-stop -x -d "VeraCrypt personal iterations multiplier stop" complete -c hashcat -s b -l benchmark -d "Run benchmark of selected hash-modes" complete -c hashcat -l benchmark-all -d "Run benchmark of all hash-modes (requires -b)" complete -c hashcat -l speed-only -d "Return expected speed of the attack, then quit" complete -c hashcat -l progress-only -d "Return ideal progress step size and time to process" complete -c hashcat -s c -l segment-size -x -d "Sets size in MB to cache from the wordfile" complete -c hashcat -l bitmap-min -x -d "Sets minimum bits allowed for bitmaps" complete -c hashcat -l bitmap-max -x -d "Sets maximum bits allowed for bitmaps" complete -c hashcat -l cpu-affinity -x -d "Locks to CPU devices" complete -c hashcat -l hook-threads -x -d "Sets number of threads for a hook (per compute unit)" complete -c hashcat -l hash-info -d "Show information for each hash-mode" complete -c hashcat -l example-hashes -d "Alias of --hash-info" complete -c hashcat -l backend-ignore-cuda -d "Do not try to open CUDA interface on startup" complete -c hashcat -l backend-ignore-opencl -d "Do not try to open OpenCL interface on startup" complete -c hashcat -s I -l backend-info -d "Show info about detected backend API devices" complete -c hashcat -s d -l backend-devices -x -d "Backend devices to use" complete -c hashcat -s D -l opencl-device-types -xa "(__fish_complete_list , __fish_hashcat_device_types)" -d "OpenCL device-types to use" complete -c hashcat -s O -l optimized-kernel-enable -d "Enable optimized kernels (limits password length)" complete -c hashcat -s w -l workload-profile -d "Enable a specific workload profile" -xa " 1\tLow 2\tDefault 3\tHigh 4\tNightmare" complete -c hashcat -s n -l kernel-accel -x -d "Manual workload tuning, set outerloop step size" complete -c hashcat -s u -l kernel-loops -x -d "Manual workload tuning, set innerloop step size" complete -c hashcat -s T -l kernel-threads -x -d "Manual workload tuning, set thread count" complete -c hashcat -l backend-vector-width -x -d "Manually override backend vector-width" complete -c hashcat -l spin-damp -x -d "Use CPU for device synchronization, in percent" complete -c hashcat -l hwmon-disable -d "Disable temperature and fanspeed reads and triggers" complete -c hashcat -l hwmon-temp-abort -x -d "Abort if temperature reaches X degrees Celsius" complete -c hashcat -l scrypt-tmto -x -d "Manually override TMTO value for scrypt to X" complete -c hashcat -s s -l skip -x -d "Skip X words from the start" complete -c hashcat -s l -l limit -x -d "Limit X words from the start + skipped words" complete -c hashcat -l keyspace -d "Show keyspace base:mod values and quit" complete -c hashcat -s j -l rule-left -x -d "Single rule applied to each word from left wordlist" complete -c hashcat -s k -l rule-right -x -d "Single rule applied to each word from right wordlist" complete -c hashcat -s r -l rules-file -rF -d "Multiple rules applied to each word from wordlists" complete -c hashcat -s g -l generate-rules -x -d "Generate X random rules" complete -c hashcat -l generate-rules-func-min -x -d "Force min X functions per rule" complete -c hashcat -l generate-rules-func-max -x -d "Force max X functions per rule" complete -c hashcat -l generate-rules-seed -x -d "Force RNG seed set to X" complete -c hashcat -s 1 -l custom-charset1 -x -d "User-defined charset ?1" complete -c hashcat -s 2 -l custom-charset2 -x -d "User-defined charset ?2" complete -c hashcat -s 3 -l custom-charset3 -x -d "User-defined charset ?3" complete -c hashcat -s 4 -l custom-charset4 -x -d "User-defined charset ?4" complete -c hashcat -s i -l increment -d "Enable mask increment mode" complete -c hashcat -l increment-min -x -d "Start mask incrementing at X" complete -c hashcat -l increment-max -x -d "Stop mask incrementing at X" complete -c hashcat -s S -l slow-candidates -d "Enable slower (but advanced) candidate generators" complete -c hashcat -l brain-server -d "Enable brain server" complete -c hashcat -l brain-server-timer -x -d "Update the brain server dump each X seconds (min:60)" complete -c hashcat -s z -l brain-client -d "Enable brain client, activates -S" complete -c hashcat -l brain-client-features -d "Define brain client features" -xa " 1\t'Send hashed passwords' 2\t'Send attack positions' 3\t'Send hashed passwords and attack positions'" complete -c hashcat -l brain-host -xa "(__fish_print_hostnames)" -d "Brain server host (IP or domain)" complete -c hashcat -l brain-port -x -d "Brain server port" complete -c hashcat -l brain-password -x -d "Brain server authentication password" complete -c hashcat -l brain-session -x -d "Overrides automatically calculated brain session" complete -c hashcat -l brain-session-whitelist -x -d "Allow given sessions only"