Created
June 25, 2020 00:07
-
-
Save lpicanco/a3ed0cec89a76f0e29bf1f24a0a6a4e0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#/bin/bash | |
SCRIPT_NAME=$0 | |
OPT=$1 | |
FILES_PATH=$2 | |
set -e | |
usage() { | |
echo -n "${SCRIPT_NAME} [OPTIONS] [FILE_PATH] | |
Recursively Encrypt/Decrypt files at given path | |
Options: | |
-e|--encrypt Encrypts | |
-d|--decrypt Decrypts | |
" | |
exit 1 | |
} | |
encrypt() { | |
read -s -p 'enter passcode:' PASSCODE && echo | |
read -s -p 'enter passcode again:' PASSCODE2 && echo | |
[[ "$PASSCODE" != "$PASSCODE2" ]] && echo "Passcodes must be the same." && exit 1 | |
read -e -p "Sure you want to RECURSIVELY encrypt files in "${FILES_PATH}" and its subdirectories? [y/n] " YN | |
[[ $YN != "y" && $YN != "Y" ]] && echo "Action cancelled" && exit 0 | |
find "${FILES_PATH}" -type f | grep -v '\.enc$' | while read fileName | |
do | |
[[ -z "$encrypted" ]] && encrypted=0 | |
echo -en "\rEncrypting $fileName($encrypted)" | |
[[ -f "$fileName" ]] && openssl aes-256-cbc -salt -k $PASSCODE -in "$fileName" -out "$fileName.enc" | |
if [ $? -eq 0 ] | |
then | |
rm "$fileName" | |
encrypted=$((encrypted+1)) | |
fi | |
done | |
echo "Done encrypting all $encrypted files." | |
} | |
decrypt() { | |
read -s -p 'enter passcode:' PASSCODE && echo | |
find ${FILES_PATH} -type f | grep -E 'enc$' | while read fileName | |
do | |
[[ -z "$decrypted" ]] && decrypted=0 | |
[[ -z "$attempted" ]] && attempted=0 | |
attempted=$((attempted+1)) | |
[[ -f "$fileName" ]] && openssl aes-256-cbc -d -k $PASSCODE -in "$fileName" -out "${fileName//.enc/}" | |
if [ $? -eq 0 ] | |
then | |
# rm "$fileName" | |
decrypted=$((decrypted+1)) | |
else | |
rm "${fileName//.enc/}" | |
fi | |
echo -en "\rdecrypted $decrypted of $attempted file(s)" | |
done | |
echo "Done decrypting all files." | |
} | |
case $OPT in | |
-e|--encrypt) | |
encrypt | |
;; | |
-d|--decrypt) | |
decrypt | |
;; | |
*) | |
usage | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment