1
mirror of https://github.com/hashcat/hashcat synced 2024-12-23 14:13:43 +01:00
hashcat/extra/tab_completion/install
jsteube e47030ed7d Prepare to rename project into hashcat
This release markes the fusion of "hashcat" and "oclHashcat" into "hashcat".
It combines all features of all hashcat projects in one project.
2016-05-10 19:07:07 +02:00

182 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Programmable bash completion for hashcat
# this script was tested under ubuntu, please verify if on your
# distro /etc/bash_completion.d/ exists (otherwise it won't work)
COMPGENSCRIPT=/etc/bash_completion
COMPGENFOLDER=${COMPGENSCRIPT}.d
COMPGENTARGET=${COMPGENFOLDER}/hashcat.sh
BASHRC=~/.bashrc
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
#############################################################################
is_sourced ()
{
if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
SOURCED=0
else
SOURCED=1
fi
return ${SOURCED}
}
source_completion ()
{
# load the completion into current shell
if [ "${is_child}" -eq 1 ]; then
if [ "${parent_sourced}" -eq 0 ]; then
return 1
fi
fi
if [ "${was_sourced}" -eq 0 ]; then
source "${COMPGENTARGET}"
# or
#source ${BASHRC}
return 1
fi
return 0
}
my_exit ()
{
if [ "${was_sourced}" -eq 0 ]; then
return $1
else
exit $1
fi
}
is_root ()
{
if [ "$(id -g)" -eq 0 ]; then
return 0
else
return 1
fi
}
#############################################################################
is_sourced
was_sourced=${?}
ROOT_PARENT="$(cd ${ROOT}/.. && pwd)"
# Check (install) permissions
parent_sourced=0
is_child=0
if ! is_root; then
echo "Warning: root permissions are required to install the tab completion script into the protected '${COMPGENFOLDER}' folder"
sudo ${BASH_SOURCE[0]} ${was_sourced}
ret=${?}
if [ "${ret}" -eq 0 ]; then
source_completion
fi
my_exit ${ret}
return ${?}
fi
if [ -n "${1}" ]
then
parent_sourced=${1}
is_child=1
fi
if [ -f "${COMPGENFOLDER}" ]
then
echo "The bash completion script file (${COMPGENSCRIPT}) could not be found"
echo "Please make sure that the distro 'bash-completion' package is installed (apt-get install it otherwise). EXIT"
my_exit 1
return ${?}
fi
if [ -d "${COMPGENFOLDER}" ]; then
# remove the old version of hashcat64.sh (was renamed to just hashcat.sh)
rm -f "${COMPGENTARGET}"/hashcat64.sh
# copy the script to target folder
cp ${ROOT}/hashcat.sh "${COMPGENTARGET}"
# adjust paths to the main binaries of hashcat
sed -ri "s!^(ROOT=).*!\1\"${ROOT_PARENT}\"!" "${COMPGENTARGET}"
# add the compgen to bashrc if not already there
if ! egrep -q "^[^#]*\. *${COMPGENSCRIPT}" "${BASHRC}"; then
cat >> "${BASHRC}" << EOF
if [ -f "${COMPGENSCRIPT}" ]; then
. ${COMPGENSCRIPT}
fi
EOF
fi
if source_completion; then
echo "Bash completion scripts for hashcat were successfully installed, but since you didn't 'source' this file, you need to run:"
echo "source ${COMPGENTARGET} # or source ${BASHRC}"
echo
echo "in order to be able to use the tab completion within the current shell."
fi
else
echo "The compgen script folder (${COMPGENFOLDER}) could NOT be found. EXIT"
my_exit 1
return ${?}
fi
my_exit 0
return ${?}