Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- bold=$(tput bold)
- red=$(tput setaf 1)
- yellow=$(tput setaf 3)
- nocolor=$(tput sgr0)
- bold_red=${bold}${red}
- bold_yellow=${bold}${yellow}
- print_usage_and_exit()
- {
- echo "Usage: $0 [-o output_directory] filename_to_decrypt"
- exit 1
- }
- print_error_and_exit()
- {
- echo "${bold_red}$1 Exit code = $2.${nocolor}" 1>&2
- exit "$2"
- }
- while getopts ":o:" option
- do
- case "${option}" in
- o)
- given_output_directory=${OPTARG}
- ;;
- h | *)
- print_usage_and_exit
- ;;
- esac
- done
- shift $((OPTIND - 1))
- [ "$#" -eq 0 ] &&
- print_usage_and_exit
- [ "$#" -gt 1 ] &&
- print_error_and_exit "Multiple files are not supported." 2
- [ ! -f "$1" ] &&
- print_error_and_exit "The given argument is not an existing file." 3
- input_filename="$1"
- [ ! -r "$input_filename" ] &&
- print_error_and_exit "Input file is not readable by you." 4
- input_filepath=$(dirname "$input_filename")
- if [ -z ${given_output_directory} ]
- then
- output_directory="$input_filepath"
- else
- output_directory="$given_output_directory"
- fi
- [ ! -w "$output_directory" ] &&
- print_error_and_exit "Destination directory is not writable by you." 5
- filename_extracted_from_path=$(basename "$input_filename")
- filename_without_enc_extension="${filename_extracted_from_path%.enc}"
- if [ "$filename_extracted_from_path" = "$filename_without_enc_extension" ]
- then
- # the file has a different than .enc extension or no extension at all
- # what we do now, is that we append .dec extention to the file name
- output_filename="$output_directory/$filename_extracted_from_path".dec
- else
- # the file has the .enc extension
- # what we do now, is that we use the file name without .enc extension
- output_filename="$output_directory/$filename_without_enc_extension"
- fi
- [ -f "$output_filename" ] &&
- print_error_and_exit "Destination file exists." 6
- if ! pv -W "$input_filename" | openssl enc -aes-256-cbc -md sha256 -salt -out "$output_filename" -d 2> /dev/null
- then
- [ -f "$output_filename" ] && rm "$output_filename"
- print_error_and_exit "Decryption failed." 7
- else
- echo "${bold_yellow}Decryption successful.${nocolor}"
- exit 0
- fi
Add Comment
Please, Sign In to add comment