#!/bin/bash # _____ _ _ # | __|___ ___ ___ _| |___ _____| |_ ___ ___ ___ # | __| _| -_| -_| . | . | | . | . | | -_| # |__| |_| |___|___|___|___|_|_|_|___|___|_|_|___| # # Freedom in the Cloud # # Makes a USB drive containing a gpg key fragment # # License # ======= # # Copyright (C) 2015-2018 Bob Mottram # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . PROJECT_NAME='freedombone' export TEXTDOMAIN=${PROJECT_NAME}-format export TEXTDOMAINDIR="/usr/share/locale" if [ ! "$1" ]; then echo $'Specify a drive, such as sdb, sdc, etc' exit 1 fi USB_DRIVE_SHORT=${1} if [[ "$1" == "/dev/"* ]]; then USB_DRIVE=$1 USB_DRIVE_SHORT=$(echo "$USB_DRIVE" | awk -F '/' '{print $3}' | sed 's|1||g' | sed 's|2||g' | sed 's|3||g') else USB_DRIVE=/dev/${1}1 fi LABEL="${PROJECT_NAME}" echo $'Partitioning drive' echo "o d 2 d 1 n p 1 a 1 w " | fdisk "/dev/${USB_DRIVE_SHORT}";mkfs.ext4 -L "$LABEL" "/dev/${USB_DRIVE_SHORT}1" echo $"Formatting $USB_DRIVE as LUKS" if ! cryptsetup -y -v luksFormat "${USB_DRIVE}"; then echo $"Failed to format $USB_DRIVE as LUKS" exit 36823 fi if ! cryptsetup luksOpen "${USB_DRIVE}" encrypted_usb; then echo $"Failed to open LUKS formatted drive $USB_DRIVE" exit 37232 fi if ! mkfs.ext4 /dev/mapper/encrypted_usb -L "$LABEL"; then cryptsetup luksClose encrypted_usb echo $'Format of drive $USB_DRIVE failed' exit 73218 fi sleep 2 cryptsetup luksClose encrypted_usb if [ -f /dev/mapper/encrypted_usb ]; then rm -rf /dev/mapper/encrypted_usb fi echo $'Format completed' exit 0