From 6f925bd2aed71a1b6bc8fce91dd1f0c6f607cab1 Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 5 Apr 2012 06:37:03 -0400 Subject: [PATCH] Initial repository created with an already working version of cryptobox and a simple README --- README | 3 ++ cryptobox | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 README create mode 100755 cryptobox diff --git a/README b/README new file mode 100644 index 0000000..3db2f70 --- /dev/null +++ b/README @@ -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 diff --git a/cryptobox b/cryptobox new file mode 100755 index 0000000..1b94886 --- /dev/null +++ b/cryptobox @@ -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