Skip to content

Instantly share code, notes, and snippets.

@diego021
Created April 9, 2019 03:54
Show Gist options
  • Save diego021/3b5b013a220b359032929e911d1e7557 to your computer and use it in GitHub Desktop.
Save diego021/3b5b013a220b359032929e911d1e7557 to your computer and use it in GitHub Desktop.
Create an encrypted (secure) partition for your flash drive.
#!/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