mirror of
https://github.com/prurigro/cryptobox.git
synced 2024-11-21 22:02:31 -05:00
Initial repository created with an already working version of cryptobox and a simple README
This commit is contained in:
commit
6f925bd2ae
2 changed files with 108 additions and 0 deletions
3
README
Normal file
3
README
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
Cryptobox is a script licensed under the GPLv3, that uses cryptosetup, mkfs and losetup to easily create, mount and unmount encrypted image files based on LUKS.
|
||||||
|
|
||||||
|
Install cryptobox to $PATH and run 'cryptobox' for a list of commands
|
105
cryptobox
Executable file
105
cryptobox
Executable file
|
@ -0,0 +1,105 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# --------------------------------------------------- #
|
||||||
|
# cryptobox #
|
||||||
|
# --------------------------------------------------- #
|
||||||
|
# cryptobox is a script used with cryptosetup, mkfs #
|
||||||
|
# and losetup, designed to create, mount and umount #
|
||||||
|
# encrypted disk images. #
|
||||||
|
# #
|
||||||
|
# Developer: Prurigro #
|
||||||
|
# Contact: prurigro at gmail dot com #
|
||||||
|
# Version: 1.0 #
|
||||||
|
# #
|
||||||
|
# If you find this script useful but have ideas about #
|
||||||
|
# how to make it better, found bugs, need help using #
|
||||||
|
# it or anything else; feel free to contect me. #
|
||||||
|
# #
|
||||||
|
# Distributed under the GPLv3; copies can be obtained #
|
||||||
|
# on gnu.org @ http://www.gnu.org/copyleft/gpl.html #
|
||||||
|
# --------------------------------------------------- #
|
||||||
|
|
||||||
|
NAME="cryptobox"
|
||||||
|
|
||||||
|
if [ $(lsmod | grep -c loop) = 0 ]; then echo "loading 'loop' module"; modprobe loop || echo "failed to load 'loop' module" && exit 1; fi
|
||||||
|
if [ $(lsmod | grep -c dm_mod) = 0 ]; then echo "loading 'dm_mod' module"; modprobe dm_mod || echo "failed to load 'dm_mod' module" && exit 1; fi
|
||||||
|
|
||||||
|
function usage {
|
||||||
|
echo "Usage: '$NAME option arguments'"
|
||||||
|
echo "Options:"
|
||||||
|
echo -e "\tc (create) -> $NAME c filename.img filesystem size-in-mb"
|
||||||
|
echo -e "\tm (mount) -> $NAME m filename.img /mount/point"
|
||||||
|
echo -e "\tu (umount) -> $NAME u /mount/point"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
elif [ ! "$1" = "c" -a ! "$1" = "m" -a ! "$1" = "u" ]; then
|
||||||
|
echo "syntax error"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
"c")
|
||||||
|
if [ -z "$2" -o -z "$3" -o -z "$4" ]; then
|
||||||
|
echo "syntax error"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -f "$2" ]; then
|
||||||
|
echo "error: $2 already exists"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
LOOPDEV=$(losetup -f)
|
||||||
|
CONTAINER=$(echo "$2" | sed s/"[^\/]*\/"//g | sed s/"\.".*$//g)
|
||||||
|
dd bs=1M count="$4" if=/dev/urandom of="$2"
|
||||||
|
losetup $LOOPDEV "$2"
|
||||||
|
cryptsetup -c aes-xts-plain -y -s 512 luksFormat $LOOPDEV
|
||||||
|
cryptsetup luksOpen $LOOPDEV $CONTAINER
|
||||||
|
mkfs -t "$3" /dev/mapper/$CONTAINER || echo "error: mkfs failed for filesystem type: $3"
|
||||||
|
cryptsetup luksClose $CONTAINER
|
||||||
|
losetup -d $LOOPDEV
|
||||||
|
;;
|
||||||
|
"m")
|
||||||
|
if [ -z "$2" -o -z "$3" ]; then
|
||||||
|
echo "syntax error"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -f "$2" ]; then
|
||||||
|
echo "error: $2 does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -d "$3" ]; then
|
||||||
|
echo "error: $3 does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
LOOPDEV=$(losetup -f)
|
||||||
|
CONTAINER=$(echo $LOOPDEV | sed s/"[^\/]*\/"//g | sed s/"\.".*$//g)
|
||||||
|
losetup $LOOPDEV "$2"
|
||||||
|
cryptsetup luksOpen $LOOPDEV $CONTAINER
|
||||||
|
mount /dev/mapper/$CONTAINER "$3"
|
||||||
|
;;
|
||||||
|
"u")
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
echo "syntax error"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
MOUNT=$(mount | grep $(echo "$2" | sed s/"\/"$//))
|
||||||
|
if [ -z "$MOUNT" ]; then
|
||||||
|
echo "error: $2 is not mounted"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
LOOPDEV=$(echo $MOUNT | sed s/\ .*//g | sed s/"\/mapper"//)
|
||||||
|
CONTAINER=$(echo $LOOPDEV | sed s/"[^\/]*\/"//g | sed s/"\.".*$//g)
|
||||||
|
umount "$2"
|
||||||
|
cryptsetup luksClose $CONTAINER
|
||||||
|
losetup -d $LOOPDEV
|
||||||
|
;;
|
||||||
|
generic)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in a new issue