Created
April 9, 2019 03:54
-
-
Save diego021/3b5b013a220b359032929e911d1e7557 to your computer and use it in GitHub Desktop.
Create an encrypted (secure) partition for your flash drive.
This file contains hidden or 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 | |
# | |
# Create an encrypted (secure) partition for your flash drive. | |
# | |
ROOT_UID=0 | |
SUCCESS=0 | |
FAIL=1 | |
E_NOTROOT=87 | |
E_MOUNTED=86 | |
E_FORMAT=85 | |
REGEX="^/dev/s[a-z]{1,2}[0-9]$" | |
NAME="LUKS001" | |
SETCOLOR_SUCCESS="echo -en \\033[1;32m" | |
SETCOLOR_FAILURE="echo -en \\033[1;31m" | |
SETCOLOR_WARNING="echo -en \\033[1;33m" | |
SETCOLOR_BOLD="echo -en \\033[1;39m" | |
SETCOLOR_NORMAL="echo -en \\033[0;39m" | |
if [ "$UID" -ne "$ROOT_UID" ]; then | |
$SETCOLOR_FAILURE | |
echo " Must be root to run this script." | |
$SETCOLOR_NORMAL | |
exit $E_NOTROOT | |
fi | |
# Check partition syntax | |
while true; do | |
echo "" | |
read -p " Choose your flash drive partition: " PARTITION | |
if [[ "$PARTITION" =~ $REGEX ]]; then | |
break | |
elif [[ -z "$PARTITION" ]]; then | |
echo " Please enter a valid partition (i.e.: /dev/sdb1)." | |
else | |
$SETCOLOR_FAILURE; echo -n " $PARTITION "; $SETCOLOR_NORMAL; echo "doesn't seem a valid partition. Please try again." | |
fi | |
done | |
echo "" | |
# Check if mounted | |
echo -n " You have chosen: "; $SETCOLOR_BOLD; echo "$PARTITION" | |
echo "$(mount)" | grep "$PARTITION" > /dev/null | |
if [ $? -eq 0 ]; then | |
$SETCOLOR_FAILURE | |
echo " Partition is currently mounted! Make sure to unmount partition before." | |
echo "" | |
$SETCOLOR_NORMAL | |
exit $E_MOUNTED | |
fi | |
# Format and encrypt partition | |
$SETCOLOR_WARNING; echo " WARNING!! Partition will be formated. All data in $PARTITION will be lost."; $SETCOLOR_NORMAL | |
read -p " Are you sure you wanna continue? (y/N): " ANSWER | |
ANSWER=$(echo $ANSWER | tr '[:upper:]' '[:lower:]') | |
if [[ $ANSWER == "y" || $ANSWER == "yes" ]]; then | |
echo " Formatting $PARTITION..." | |
cryptsetup luksFormat $PARTITION | |
if [ $? -ne 0 ]; then | |
$SETCOLOR_FAILURE | |
echo " ERROR: Something went wrong while formatting. Aborted." | |
$SETCOLOR_NORMAL | |
exit $E_FORMAT | |
fi | |
cryptsetup luksOpen $PARTITION $NAME | |
mkfs.vfat /dev/mapper/$NAME -n $NAME | |
sleep 2 | |
cryptsetup luksClose $NAME | |
else | |
$SETCOLOR_FAILURE | |
echo " Aborted." | |
$SETCOLOR_NORMAL | |
exit $FAIL | |
fi | |
$SETCOLOR_SUCCESS | |
echo " All done." | |
$SETCOLOR_NORMAL | |
exit $SUCCESS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment